2
0

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:
Evgeny
2020-08-20 04:25:39 -05:00
ascendente fd73d18240
cometimento 2d42e93cdf
7 ficheiros modificados com 317 adições e 41 eliminações
+64
Ver ficheiro
@@ -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"