deleting consumer thread on pool destruction

This commit is contained in:
Evgeny
2018-06-18 12:58:08 -05:00
rodzic 9086dee75d
commit b71675077a
3 zmienionych plików z 30 dodań i 22 usunięć
+11 -11
Wyświetl plik
@@ -99,9 +99,9 @@ const char* roctracer_error_string();
// Traced API domains
typedef enum {
ROCTRACER_DOMAIN_ANY = 0, // Any domain
ROCTRACER_DOMAIN_HIP_API = 1, // HIP domain
ROCTRACER_DOMAIN_HCC_OPS = 2, // HCC domain
ROCTRACER_DOMAIN_ANY = 0, // Any domain
ROCTRACER_DOMAIN_HIP_API = 1, // HIP domain
ROCTRACER_DOMAIN_HCC_OPS = 2, // HCC domain
ROCTRACER_DOMAIN_NUMBER
} roctracer_domain_t;
@@ -140,15 +140,15 @@ typedef hip_cb_fun_t roctracer_api_callback_t;
// Enable runtime API callbacks
roctracer_status_t roctracer_enable_api_callback(
roctracer_domain_t domain, // runtime API domain
uint32_t cid, // API call ID
roctracer_api_callback_t callback, // callback function pointer
void* arg); // [in/out] callback arg
roctracer_domain_t domain, // runtime API domain
uint32_t cid, // API call ID
roctracer_api_callback_t callback, // callback function pointer
void* arg); // [in/out] callback arg
// Disable runtime API callbacks
roctracer_status_t roctracer_disable_api_callback(
roctracer_domain_t domain, // runtime API domain
uint32_t cid); // API call ID
roctracer_domain_t domain, // runtime API domain
uint32_t cid); // API call ID
////////////////////////////////////////////////////////////////////////////////
// Activity API
@@ -218,13 +218,13 @@ roctracer_pool_t* roctracer_default_pool(
// Enable activity records logging
roctracer_status_t roctracer_enable_api_activity(
roctracer_domain_t domain, // runtime API domain
roctracer_domain_t domain, // runtime API domain
uint32_t activity_kind, // activity kind
roctracer_pool_t* pool = NULL); // memory pool, NULL is a default one
// Disable activity records logging
roctracer_status_t roctracer_disable_api_activity(
roctracer_domain_t domain, // runtime API domain
roctracer_domain_t domain, // runtime API domain
uint32_t activity_kind); // activity kind
// Flush available activity records
+6
Wyświetl plik
@@ -143,7 +143,13 @@ class MemoryPool {
}
~MemoryPool() {
std::lock_guard<mutex_t> lock(write_mutex_);
Flush();
PTHREAD_CALL(pthread_cancel(consumer_thread_));
void *res;
PTHREAD_CALL(pthread_join(consumer_thread_, &res));
if (res != PTHREAD_CANCELED) EXC_ABORT(ROCTRACER_STATUS_ERROR, "consumer thread wasn't stopped correctly");
allocator_default(&pool_begin_, 0, alloc_arg_);
}
+13 -11
Wyświetl plik
@@ -232,20 +232,22 @@ void activity_callback(const char* begin, const char* end, void* arg) {
// Initialize function
void init_tracing() {
// Check tracer domains consitency
ROCTRACER_CALL(roctracer_validate_domains());
// Enable HIP API callbacks
ROCTRACER_CALL(roctracer_enable_api_callback(ROCTRACER_DOMAIN_ANY, 0, hip_api_callback, NULL));
// Enable HIP activity tracing
roctracer_properties_t properties{};
properties.buffer_size = 12;
properties.buffer_callback_fun = activity_callback;
ROCTRACER_CALL(roctracer_open_pool(&properties));
ROCTRACER_CALL(roctracer_enable_api_activity(ROCTRACER_DOMAIN_ANY, 0));
// Check tracer domains consitency
ROCTRACER_CALL(roctracer_validate_domains());
// Enable HIP API callbacks
ROCTRACER_CALL(roctracer_enable_api_callback(ROCTRACER_DOMAIN_ANY, 0, hip_api_callback, NULL));
// Enable HIP activity tracing
roctracer_properties_t properties{};
properties.buffer_size = 12;
properties.buffer_callback_fun = activity_callback;
ROCTRACER_CALL(roctracer_open_pool(&properties));
ROCTRACER_CALL(roctracer_enable_api_activity(ROCTRACER_DOMAIN_ANY, 0));
}
void finish_tracing() {
ROCTRACER_CALL(roctracer_close_pool());
ROCTRACER_CALL(roctracer_disable_api_callback(ROCTRACER_DOMAIN_ANY, 0));
ROCTRACER_CALL(roctracer_disable_api_activity(ROCTRACER_DOMAIN_ANY, 0));
ROCTRACER_CALL(roctracer_close_pool());
}
#else
void init_tracing() {}