kernel objects dumping
Change-Id: I5a16e05b7df438efa903948701b65a9ced99e5f3
initial codeobj event implementation
Change-Id: Ia7fac3c2b9897a004cfe88c4de82ba8c18284196
update - codeobj event implementation
Change-Id: I2b91b6e689875af03f0086f5a0872a97a629fd83
update2 - codeobj event implementation
Change-Id: Icff75f14fd21963e40db95373fa74880957a9e32
fix - codeobj event implementation
Change-Id: I76c33c875cb429fb12a974bb408b217f187b4536
URI buffer fix - codeobj event implementation
Change-Id: I7ce1a758e021455da3fe5b8a6e4ae3ab46e9760e
HSA events exposing
Change-Id: I3664ab4e5111c4ccedaf068dcb19f48055f0ef9b
HSA events data struct normalizing
Change-Id: I365ef0db45e0a9314bd2a1a4d29dd4eb4e91297d
[ROCm/rocprofiler commit: 8850e46071]
Este cometimento está contido em:
@@ -20,6 +20,9 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
*******************************************************************************/
|
||||
|
||||
#define ROCP_INTERNAL_BUILD
|
||||
#include "activity.h"
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
@@ -168,4 +171,65 @@ PUBLIC_API bool EnableActivityCallback(uint32_t op, bool enable) {
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
struct evt_cb_entry_t {
|
||||
void* callback;
|
||||
void* arg;
|
||||
};
|
||||
typedef std::atomic<evt_cb_entry_t> evt_cb_entry_atomic_t;
|
||||
evt_cb_entry_atomic_t evt_cb_table[HSA_EVT_ID_NUMBER]{};
|
||||
|
||||
hsa_status_t codeobj_evt_callback(
|
||||
rocprofiler_hsa_cb_id_t id,
|
||||
const rocprofiler_hsa_callback_data_t* cb_data,
|
||||
void* arg)
|
||||
{
|
||||
evt_cb_entry_t evt = evt_cb_table[id].load(std::memory_order_relaxed);
|
||||
activity_rtapi_callback_t evt_callback = (activity_rtapi_callback_t)evt.callback;
|
||||
|
||||
if (evt_callback != NULL) {
|
||||
evt_callback(ACTIVITY_DOMAIN_HSA_EVT, id, cb_data, evt.arg);
|
||||
}
|
||||
|
||||
return HSA_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
PUBLIC_API const char* GetEvtName(uint32_t op) { return strdup("CODEOBJ"); }
|
||||
|
||||
PUBLIC_API bool RegisterEvtCallback(uint32_t op, void* callback, void* arg) {
|
||||
evt_cb_table[op].store(evt_cb_entry_t{callback, arg}, std::memory_order_relaxed);
|
||||
|
||||
rocprofiler_hsa_callbacks_t ocb{};
|
||||
switch (op) {
|
||||
case HSA_EVT_ID_ALLOCATE:
|
||||
ocb.allocate = codeobj_evt_callback;
|
||||
break;
|
||||
case HSA_EVT_ID_DEVICE:
|
||||
ocb.device = codeobj_evt_callback;
|
||||
break;
|
||||
case HSA_EVT_ID_MEMCOPY:
|
||||
ocb.memcopy = codeobj_evt_callback;
|
||||
break;
|
||||
case HSA_EVT_ID_SUBMIT:
|
||||
ocb.submit = codeobj_evt_callback;
|
||||
break;
|
||||
case HSA_EVT_ID_KSYMBOL:
|
||||
ocb.ksymbol = codeobj_evt_callback;
|
||||
break;
|
||||
case HSA_EVT_ID_CODEOBJ:
|
||||
ocb.codeobj = codeobj_evt_callback;
|
||||
break;
|
||||
default:
|
||||
fatal("invalid activity opcode");
|
||||
}
|
||||
rocprofiler_set_hsa_callbacks(ocb, NULL);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
PUBLIC_API bool RemoveEvtCallback(uint32_t op) {
|
||||
rocprofiler_hsa_callbacks_t ocb{};
|
||||
rocprofiler_set_hsa_callbacks(ocb, NULL);
|
||||
return true;
|
||||
}
|
||||
} // extern "C"
|
||||
|
||||
Criar uma nova questão referindo esta
Bloquear um utilizador