rdc_field_t replaces uint32_t; centralize field data

Make the RDC use the new rdc_field_t enum instead of uint32_t.
This will help prevent invalid field types from being passed in.

Also, centralize where data related to fields is kept. This will
reduce the number of places where changes are required each
time a new field is added.

Finally, cleaned up several cpplint issues.

Change-Id: I48e4512e18c164411d8b09ae3d4bed99fba359ec


[ROCm/rdc commit: 5950ebadc4]
This commit is contained in:
Chris Freehill
2020-07-24 19:40:48 -05:00
bovenliggende 588ea96dd2
commit 6b246dcf4b
43 gewijzigde bestanden met toevoegingen van 459 en 388 verwijderingen
@@ -19,8 +19,8 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
#ifndef RDC_LIB_IMPL_RDCCACHEMANAGERIMPL_H_
#define RDC_LIB_IMPL_RDCCACHEMANAGERIMPL_H_
#ifndef INCLUDE_RDC_LIB_IMPL_RDCCACHEMANAGERIMPL_H_
#define INCLUDE_RDC_LIB_IMPL_RDCCACHEMANAGERIMPL_H_
#include <memory>
#include <mutex> // NOLINT(build/c++11)
@@ -80,13 +80,13 @@ typedef std::map<std::string, RdcJobStatsCacheEntry> RdcJobStatsCache;
class RdcCacheManagerImpl: public RdcCacheManager {
public:
rdc_status_t rdc_field_get_latest_value(uint32_t gpu_index,
uint32_t field, rdc_field_value* value) override;
rdc_status_t rdc_field_get_value_since(uint32_t gpu_index, uint32_t field,
uint64_t since_time_stamp, uint64_t *next_since_time_stamp,
rdc_field_value* value) override;
rdc_field_t field, rdc_field_value* value) override;
rdc_status_t rdc_field_get_value_since(uint32_t gpu_index,
rdc_field_t field, uint64_t since_time_stamp,
uint64_t *next_since_time_stamp, rdc_field_value* value) override;
rdc_status_t rdc_update_cache(uint32_t gpu_index,
const rdc_field_value& value) override;
rdc_status_t evict_cache(uint32_t gpu_index, uint32_t field_id,
rdc_status_t evict_cache(uint32_t gpu_index, rdc_field_t field_id,
uint64_t max_keep_samples, double max_keep_age) override;
std::string get_cache_stats() override;
@@ -120,4 +120,4 @@ class RdcCacheManagerImpl: public RdcCacheManager {
} // namespace amd
#endif // RDC_LIB_IMPL_RDCCACHEMANAGERIMPL_H_
#endif // INCLUDE_RDC_LIB_IMPL_RDCCACHEMANAGERIMPL_H_
@@ -19,8 +19,8 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
#ifndef RDC_LIB_IMPL_RDCEMBEDDEDHANDLER_H_
#define RDC_LIB_IMPL_RDCEMBEDDEDHANDLER_H_
#ifndef INCLUDE_RDC_LIB_IMPL_RDCEMBEDDEDHANDLER_H_
#define INCLUDE_RDC_LIB_IMPL_RDCEMBEDDEDHANDLER_H_
#include <future> // NOLINT(build/c++11)
#include "rdc_lib/RdcHandler.h"
@@ -57,7 +57,7 @@ class RdcEmbeddedHandler: public RdcHandler {
rdc_status_t rdc_group_gpu_add(rdc_gpu_group_t groupId,
uint32_t gpu_index) override;
rdc_status_t rdc_group_field_create(uint32_t num_field_ids,
uint32_t* field_ids, const char* field_group_name,
rdc_field_t* field_ids, const char* field_group_name,
rdc_field_grp_t* rdc_field_group_id) override;
rdc_status_t rdc_group_field_get_info(
rdc_field_grp_t rdc_field_group_id,
@@ -78,9 +78,9 @@ class RdcEmbeddedHandler: public RdcHandler {
rdc_field_grp_t field_group_id, uint64_t update_freq,
double max_keep_age, uint32_t max_keep_samples) override;
rdc_status_t rdc_field_get_latest_value(uint32_t gpu_index,
uint32_t field, rdc_field_value* value) override;
rdc_field_t field, rdc_field_value* value) override;
rdc_status_t rdc_field_get_value_since(uint32_t gpu_index,
uint32_t field, uint64_t since_time_stamp,
rdc_field_t field, uint64_t since_time_stamp,
uint64_t *next_since_time_stamp, rdc_field_value* value) override;
rdc_status_t rdc_field_unwatch(rdc_gpu_group_t group_id,
rdc_field_grp_t field_group_id) override;
@@ -108,4 +108,4 @@ extern "C" {
amd::rdc::RdcHandler *make_handler(rdc_operation_mode_t op_mode);
}
#endif // RDC_LIB_IMPL_RDCEMBEDDEDHANDLER_H_
#endif // INCLUDE_RDC_LIB_IMPL_RDCEMBEDDEDHANDLER_H_
@@ -19,9 +19,8 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
#ifndef RDC_LIB_IMPL_RDCGROUPSETTINGSIMPL_H_
#define RDC_LIB_IMPL_RDCGROUPSETTINGSIMPL_H_
#ifndef INCLUDE_RDC_LIB_IMPL_RDCGROUPSETTINGSIMPL_H_
#define INCLUDE_RDC_LIB_IMPL_RDCGROUPSETTINGSIMPL_H_
#include <memory>
#include <map>
@@ -46,7 +45,7 @@ class RdcGroupSettingsImpl: public RdcGroupSettings {
rdc_gpu_group_t group_id_list[], uint32_t* count) override;
rdc_status_t rdc_group_field_create(uint32_t num_field_ids,
uint32_t* field_ids, const char* field_group_name,
rdc_field_t* field_ids, const char* field_group_name,
rdc_field_grp_t* rdc_field_group_id) override;
rdc_status_t rdc_group_field_destroy(
rdc_field_grp_t rdc_field_group_id) override;
@@ -71,4 +70,4 @@ class RdcGroupSettingsImpl: public RdcGroupSettings {
} // namespace amd
#endif // RDC_LIB_IMPL_RDCGROUPSETTINGSIMPL_H_
#endif // INCLUDE_RDC_LIB_IMPL_RDCGROUPSETTINGSIMPL_H_
@@ -19,8 +19,8 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
#ifndef RDC_LIB_IMPL_RDCMETRICFETCHERIMPL_H_
#define RDC_LIB_IMPL_RDCMETRICFETCHERIMPL_H_
#ifndef INCLUDE_RDC_LIB_IMPL_RDCMETRICFETCHERIMPL_H_
#define INCLUDE_RDC_LIB_IMPL_RDCMETRICFETCHERIMPL_H_
#include <mutex> // NOLINT(build/c++11)
#include <future> // NOLINT(build/c++11)
@@ -52,18 +52,17 @@ struct MetricTask {
class RdcMetricFetcherImpl: public RdcMetricFetcher {
public:
rdc_status_t fetch_smi_field(uint32_t gpu_index,
uint32_t field_id, rdc_field_value* value) override;
bool is_field_valid(uint32_t field_id) const override;
rdc_field_t field_id, rdc_field_value* value) override;
RdcMetricFetcherImpl();
~RdcMetricFetcherImpl();
private:
uint64_t now();
void get_ecc_error(uint32_t gpu_index,
uint32_t field_id, rdc_field_value* value);
rdc_field_t field_id, rdc_field_value* value);
//!< return true if starting async_get
bool async_get_pcie_throughput(uint32_t gpu_index,
uint32_t field_id, rdc_field_value* value);
rdc_field_t field_id, rdc_field_value* value);
void get_pcie_throughput(const RdcFieldKey& key);
//!< Async metric retreive
@@ -78,4 +77,4 @@ class RdcMetricFetcherImpl: public RdcMetricFetcher {
} // namespace rdc
} // namespace amd
#endif // RDC_LIB_IMPL_RDCMETRICFETCHERIMPL_H_
#endif // INCLUDE_RDC_LIB_IMPL_RDCMETRICFETCHERIMPL_H_
@@ -19,10 +19,10 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
#ifndef RDC_LIB_IMPL_RDCMETRICSUPDATERIMPL_H_
#define RDC_LIB_IMPL_RDCMETRICSUPDATERIMPL_H_
#ifndef INCLUDE_RDC_LIB_IMPL_RDCMETRICSUPDATERIMPL_H_
#define INCLUDE_RDC_LIB_IMPL_RDCMETRICSUPDATERIMPL_H_
#include <future>
#include <future> // NOLINT(build/c++11)
#include <memory>
#include "rdc_lib/RdcMetricsUpdater.h"
#include "rdc_lib/RdcWatchTable.h"
@@ -46,4 +46,4 @@ class RdcMetricsUpdaterImpl: public RdcMetricsUpdater {
} // namespace rdc
} // namespace amd
#endif // RDC_LIB_IMPL_RDCMETRICSUPDATERIMPL_H_
#endif // INCLUDE_RDC_LIB_IMPL_RDCMETRICSUPDATERIMPL_H_
@@ -19,8 +19,8 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
#ifndef RDC_LIB_IMPL_RDCSTANDALONEHANDLER_H_
#define RDC_LIB_IMPL_RDCSTANDALONEHANDLER_H_
#ifndef INCLUDE_RDC_LIB_IMPL_RDCSTANDALONEHANDLER_H_
#define INCLUDE_RDC_LIB_IMPL_RDCSTANDALONEHANDLER_H_
#include <grpcpp/grpcpp.h>
#include <memory>
#include "rdc.grpc.pb.h" // NOLINT
@@ -53,7 +53,7 @@ class RdcStandaloneHandler: public RdcHandler {
rdc_status_t rdc_group_gpu_add(rdc_gpu_group_t groupId,
uint32_t gpu_index) override;
rdc_status_t rdc_group_field_create(uint32_t num_field_ids,
uint32_t* field_ids, const char* field_group_name,
rdc_field_t* field_ids, const char* field_group_name,
rdc_field_grp_t* rdc_field_group_id) override;
rdc_status_t rdc_group_field_get_info(
rdc_field_grp_t rdc_field_group_id,
@@ -74,9 +74,9 @@ class RdcStandaloneHandler: public RdcHandler {
rdc_field_grp_t field_group_id, uint64_t update_freq,
double max_keep_age, uint32_t max_keep_samples) override;
rdc_status_t rdc_field_get_latest_value(uint32_t gpu_index,
uint32_t field, rdc_field_value* value) override;
rdc_field_t field, rdc_field_value* value) override;
rdc_status_t rdc_field_get_value_since(uint32_t gpu_index,
uint32_t field, uint64_t since_time_stamp,
rdc_field_t field, uint64_t since_time_stamp,
uint64_t *next_since_time_stamp, rdc_field_value* value) override;
rdc_status_t rdc_field_unwatch(rdc_gpu_group_t group_id,
rdc_field_grp_t field_group_id) override;
@@ -107,4 +107,4 @@ extern "C" {
const char* root_ca, const char* client_cert, const char* client_key);
}
#endif // RDC_LIB_IMPL_RDCSTANDALONEHANDLER_H_
#endif // INCLUDE_RDC_LIB_IMPL_RDCSTANDALONEHANDLER_H_
@@ -19,8 +19,8 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
#ifndef RDC_LIB_IMPL_RDCWATCHTABLEIMPL_H_
#define RDC_LIB_IMPL_RDCWATCHTABLEIMPL_H_
#ifndef INCLUDE_RDC_LIB_IMPL_RDCWATCHTABLEIMPL_H_
#define INCLUDE_RDC_LIB_IMPL_RDCWATCHTABLEIMPL_H_
#include <string>
#include <map>
@@ -86,7 +86,8 @@ class RdcWatchTableImpl : public RdcWatchTable {
private:
//!< Helper function to Update the fields_in_table when unwatch tables
rdc_status_t update_field_in_table_when_unwatch(const RdcFieldKey& entry);
rdc_status_t update_field_in_table_when_unwatch(
const RdcFieldGroupKey& entry);
//!< Helper function to clean up the watch table and cache
void clean_up();
@@ -99,15 +100,15 @@ class RdcWatchTableImpl : public RdcWatchTable {
rdc_field_grp_t field_group_id,
std::vector<RdcFieldKey> & fields); // NOLINT
bool is_job_watch_field(uint32_t gpu_index, uint32_t field_id,
std::string& job_id) const; // NOLINT
bool is_job_watch_field(uint32_t gpu_index, rdc_field_t field_id,
std::string& job_id) const; // NOLINT
RdcGroupSettingsPtr group_settings_;
RdcCacheManagerPtr cache_mgr_;
RdcMetricFetcherPtr metric_fetcher_;
//!< The watch table to store the watch settings.
std::map<RdcFieldKey, FieldSettings> watch_table_;
std::map<RdcFieldGroupKey, FieldSettings> watch_table_;
//!< <job_id, gpu_group_id> pairs
std::map<std::string, JobWatchTableEntry> job_watch_table_;
@@ -129,4 +130,4 @@ class RdcWatchTableImpl : public RdcWatchTable {
} // namespace amd
#endif // RDC_LIB_IMPL_RDCWATCHTABLEIMPL_H_
#endif // INCLUDE_RDC_LIB_IMPL_RDCWATCHTABLEIMPL_H_