Fixing SE numbering and cache invalidade parsing
Change-Id: Ie63c68a0b2b07427586faaf69b68a19c315387e3
[ROCm/rocprofiler commit: 363abb238b]
This commit is contained in:
1 parent
3cca2ccb9f
commit
175f4e024e
2 files changed
+28
-26
No files matched your search
@@ -436,16 +436,17 @@ def stitch(insts, raw_code, jumps, gfxv, bIsAuto, codeservice):
|
|||||||
if "flat_" in as_line[0]:
|
if "flat_" in as_line[0]:
|
||||||
inc_ordering = True
|
inc_ordering = True
|
||||||
|
|
||||||
if not bGFX9 and "store" in as_line[0]:
|
if not "_inv" in as_line[0] and not "_wb" in as_line[0]:
|
||||||
VSMEM_INST.append([reverse_map[line], num_inflight])
|
if not bGFX9 and "store" in as_line[0]:
|
||||||
NUM_VSMEM += 1
|
VSMEM_INST.append([reverse_map[line], num_inflight])
|
||||||
if inc_ordering:
|
NUM_VSMEM += 1
|
||||||
vsmem_ordering = 1
|
if inc_ordering:
|
||||||
else:
|
vsmem_ordering = 1
|
||||||
VLMEM_INST.append([reverse_map[line], num_inflight])
|
else:
|
||||||
NUM_VLMEM += 1
|
VLMEM_INST.append([reverse_map[line], num_inflight])
|
||||||
if inc_ordering:
|
NUM_VLMEM += 1
|
||||||
vlmem_ordering = 1
|
if inc_ordering:
|
||||||
|
vlmem_ordering = 1
|
||||||
elif inst.type == FLAT:
|
elif inst.type == FLAT:
|
||||||
smem_ordering = 1
|
smem_ordering = 1
|
||||||
vlmem_ordering = 1
|
vlmem_ordering = 1
|
||||||
|
|||||||
@@ -273,36 +273,37 @@ void AttTracer::AddAttRecord(
|
|||||||
rocprofiler::warning("Warning: ATT received a UTC memory error!\n");
|
rocprofiler::warning("Warning: ATT received a UTC memory error!\n");
|
||||||
if (status == HSA_STATUS_ERROR) fatal("Thread Trace Error!");
|
if (status == HSA_STATUS_ERROR) fatal("Thread Trace Error!");
|
||||||
|
|
||||||
|
size_t max_sample_id = 0;
|
||||||
|
for (auto& trace_data_it : data)
|
||||||
|
max_sample_id = std::max<size_t>(max_sample_id, trace_data_it.sample_id+1);
|
||||||
|
|
||||||
// Allocate memory for shader_engine_data
|
// Allocate memory for shader_engine_data
|
||||||
record->shader_engine_data = static_cast<rocprofiler_record_se_att_data_t*>(
|
record->shader_engine_data_count = max_sample_id;
|
||||||
calloc(data.size(), sizeof(rocprofiler_record_se_att_data_t)));
|
record->shader_engine_data = static_cast<rocprofiler_record_se_att_data_t*>(calloc(
|
||||||
|
max_sample_id,
|
||||||
|
sizeof(rocprofiler_record_se_att_data_t)
|
||||||
|
));
|
||||||
|
|
||||||
std::vector<hsa_ven_amd_aqlprofile_info_data_t>::iterator trace_data_it;
|
|
||||||
|
|
||||||
uint32_t se_index = 0;
|
|
||||||
// iterate over the trace data collected from each shader engine
|
// iterate over the trace data collected from each shader engine
|
||||||
for (trace_data_it = data.begin(); trace_data_it != data.end(); trace_data_it++) {
|
for (auto& trace_data_it : data)
|
||||||
const void* data_ptr = trace_data_it->trace_data.ptr;
|
{
|
||||||
const uint32_t data_size = trace_data_it->trace_data.size;
|
auto& trace = trace_data_it.trace_data;
|
||||||
|
|
||||||
void* buffer = NULL;
|
void* buffer = NULL;
|
||||||
if (data_size != 0) {
|
if (trace.ptr && trace.size) {
|
||||||
// Allocate buffer on CPU to copy out trace data
|
// Allocate buffer on CPU to copy out trace data
|
||||||
buffer = Packet::AllocateSysMemory(gpu_agent, data_size, &agent_info.cpu_pool_);
|
buffer = Packet::AllocateSysMemory(gpu_agent, trace.size, &agent_info.cpu_pool_);
|
||||||
if (buffer == NULL) fatal("Trace data buffer allocation failed");
|
if (buffer == NULL) fatal("Trace data buffer allocation failed");
|
||||||
|
|
||||||
auto status =
|
auto status =
|
||||||
hsasupport_singleton.GetCoreApiTable().hsa_memory_copy_fn(buffer, data_ptr, data_size);
|
hsasupport_singleton.GetCoreApiTable().hsa_memory_copy_fn(buffer, trace.ptr, trace.size);
|
||||||
if (status != HSA_STATUS_SUCCESS) fatal("Trace data memcopy to host failed");
|
if (status != HSA_STATUS_SUCCESS) fatal("Trace data memcopy to host failed");
|
||||||
|
|
||||||
record->shader_engine_data[se_index].buffer_ptr = buffer;
|
record->shader_engine_data[trace_data_it.sample_id].buffer_ptr = buffer;
|
||||||
record->shader_engine_data[se_index].buffer_size = data_size;
|
record->shader_engine_data[trace_data_it.sample_id].buffer_size = trace.size;
|
||||||
++se_index;
|
|
||||||
|
|
||||||
// TODO: clear output buffers after copying
|
// TODO: clear output buffers after copying
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
record->shader_engine_data_count = data.size();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
hsa_status_t AttTracer::attTraceDataCallback(
|
hsa_status_t AttTracer::attTraceDataCallback(
|
||||||
|
|||||||
Reference in new issue
Block a user