removing _ANY ops
Dieser Commit ist enthalten in:
@@ -28,6 +28,7 @@ THE SOFTWARE.
|
||||
#include <cstdint>
|
||||
#include <cstddef>
|
||||
#include <iostream>
|
||||
#include <mutex>
|
||||
|
||||
#define HSART_CALL(call) \
|
||||
do { \
|
||||
@@ -80,12 +81,9 @@ class Timer {
|
||||
return timestamp_to_ns(timestamp);
|
||||
}
|
||||
|
||||
Timer() {
|
||||
init(hsa_system_get_info);
|
||||
}
|
||||
|
||||
Timer(hsa_system_get_info_fn_t f) {
|
||||
init(f);
|
||||
Timer(hsa_system_get_info_fn_t f = NULL) {
|
||||
if (f != NULL) init(f);
|
||||
else init(hsa_system_get_info);
|
||||
}
|
||||
|
||||
private:
|
||||
@@ -95,6 +93,27 @@ class Timer {
|
||||
freq_t timestamp_rate_;
|
||||
};
|
||||
|
||||
class TimerFactory {
|
||||
public:
|
||||
typedef std::mutex mutex_t;
|
||||
|
||||
static Timer* Create(Timer::hsa_system_get_info_fn_t f = NULL) {
|
||||
if (instance_ == NULL) {
|
||||
std::lock_guard<mutex_t> lck(mutex_);
|
||||
if (instance_ == NULL) instance_ = new Timer(f);
|
||||
}
|
||||
return instance_;
|
||||
}
|
||||
|
||||
static Timer& Instance() {
|
||||
return *instance_;
|
||||
}
|
||||
|
||||
private:
|
||||
static Timer* instance_;
|
||||
static mutex_t mutex_;
|
||||
};
|
||||
|
||||
} // namespace hsa_rt_utils
|
||||
|
||||
#endif // INC_ROCTRACER_HSA_RT_UTILS_HPP_
|
||||
|
||||
@@ -23,15 +23,12 @@ THE SOFTWARE.
|
||||
#ifndef INC_EXT_PROF_PROTOCOL_H_
|
||||
#define INC_EXT_PROF_PROTOCOL_H_
|
||||
|
||||
#define HCC_ENABLED 1
|
||||
|
||||
// Traced API domains
|
||||
typedef enum {
|
||||
ACTIVITY_DOMAIN_ANY = 0, // Any domain
|
||||
ACTIVITY_DOMAIN_HSA_API = 1, // HSA domain
|
||||
ACTIVITY_DOMAIN_HCC_OPS = 2, // HCC domain
|
||||
ACTIVITY_DOMAIN_HIP_API = 3, // HIP domain
|
||||
ACTIVITY_DOMAIN_NUMBER = 4
|
||||
ACTIVITY_DOMAIN_HSA_API = 0, // HSA domain
|
||||
ACTIVITY_DOMAIN_HCC_OPS = 1, // HCC domain
|
||||
ACTIVITY_DOMAIN_HIP_API = 2, // HIP domain
|
||||
ACTIVITY_DOMAIN_NUMBER = 3
|
||||
} activity_domain_t;
|
||||
|
||||
// API calback type
|
||||
@@ -53,7 +50,7 @@ typedef uint64_t activity_correlation_id_t;
|
||||
struct activity_record_t {
|
||||
uint32_t domain; // activity domain id
|
||||
activity_kind_t kind; // activity kind
|
||||
activity_op_t activity_id; // activity op
|
||||
activity_op_t op; // activity op
|
||||
activity_correlation_id_t correlation_id; // activity ID
|
||||
uint64_t begin_ns; // host begin timestamp
|
||||
uint64_t end_ns; // host end timestamp
|
||||
|
||||
+28
-10
@@ -78,9 +78,9 @@ typedef activity_domain_t roctracer_domain_t;
|
||||
|
||||
// Return ID string by given domain and activity/API ID
|
||||
// NULL returned on the error and the library errno is set
|
||||
const char* roctracer_id_string(
|
||||
const char* roctracer_op_string(
|
||||
const uint32_t& domain, // tracing domain
|
||||
const uint32_t& id, // activity ID
|
||||
const uint32_t& op, // activity op ID
|
||||
const uint32_t& kind); // activity kind
|
||||
|
||||
// Set properties
|
||||
@@ -100,16 +100,26 @@ roctracer_status_t roctracer_set_properties(
|
||||
typedef activity_rtapi_callback_t roctracer_rtapi_callback_t;
|
||||
|
||||
// Enable runtime API callbacks
|
||||
roctracer_status_t roctracer_enable_callback(
|
||||
roctracer_status_t roctracer_enable_op_callback(
|
||||
activity_domain_t domain, // tracing domain
|
||||
uint32_t id, // API call ID
|
||||
uint32_t op, // API call ID
|
||||
activity_rtapi_callback_t callback, // callback function pointer
|
||||
void* arg); // [in/out] callback arg
|
||||
roctracer_status_t roctracer_enable_domain_callback(
|
||||
activity_domain_t domain, // tracing domain
|
||||
activity_rtapi_callback_t callback, // callback function pointer
|
||||
void* arg); // [in/out] callback arg
|
||||
roctracer_status_t roctracer_enable_callback(
|
||||
activity_rtapi_callback_t callback, // callback function pointer
|
||||
void* arg); // [in/out] callback arg
|
||||
|
||||
// Disable runtime API callbacks
|
||||
roctracer_status_t roctracer_disable_callback(
|
||||
roctracer_status_t roctracer_disable_op_callback(
|
||||
activity_domain_t domain, // tracing domain
|
||||
uint32_t id); // API call ID
|
||||
uint32_t op); // API call ID
|
||||
roctracer_status_t roctracer_disable_domain_callback(
|
||||
activity_domain_t domain); // tracing domain
|
||||
roctracer_status_t roctracer_disable_callback();
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Activity API
|
||||
@@ -175,15 +185,23 @@ roctracer_pool_t* roctracer_default_pool(
|
||||
roctracer_pool_t* pool = NULL); // [in] new default pool if not NULL
|
||||
|
||||
// Enable activity records logging
|
||||
roctracer_status_t roctracer_enable_activity(
|
||||
roctracer_status_t roctracer_enable_op_activity(
|
||||
activity_domain_t domain, // tracing domain
|
||||
uint32_t id, // activity ID
|
||||
uint32_t op, // activity op ID
|
||||
roctracer_pool_t* pool = NULL); // memory pool, NULL is a default one
|
||||
roctracer_status_t roctracer_enable_domain_activity(
|
||||
activity_domain_t domain, // tracing domain
|
||||
roctracer_pool_t* pool = NULL); // memory pool, NULL is a default one
|
||||
roctracer_status_t roctracer_enable_activity(
|
||||
roctracer_pool_t* pool = NULL); // memory pool, NULL is a default one
|
||||
|
||||
// Disable activity records logging
|
||||
roctracer_status_t roctracer_disable_activity(
|
||||
roctracer_status_t roctracer_disable_op_activity(
|
||||
activity_domain_t domain, // tracing domain
|
||||
uint32_t id); // activity ID
|
||||
uint32_t op); // activity op ID
|
||||
roctracer_status_t roctracer_disable_domain_activity(
|
||||
activity_domain_t domain); // tracing domain
|
||||
roctracer_status_t roctracer_disable_activity();
|
||||
|
||||
// Flush available activity records
|
||||
roctracer_status_t roctracer_flush_activity(
|
||||
|
||||
@@ -24,10 +24,8 @@ THE SOFTWARE.
|
||||
#define INC_ROCTRACER_HCC_H_
|
||||
|
||||
#if (LOCAL_BUILD == 1)
|
||||
#include <hc_hsa_op_id.h>
|
||||
#include <hc_prof_runtime.h>
|
||||
#else
|
||||
#include <hcc/hc_hsa_op_id.h>
|
||||
#include <hcc/hc_prof_runtime.h>
|
||||
#endif
|
||||
|
||||
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren