We discussed that it would be nice for Omniprobe to support a standardized output format (i.e. json), that all message handlers could conform to.
In the context of MemoryAnalysis, that might look something like:
{
"function": {
"name": "matrixTransposeShared",
"parameters": ["float*", "float const*", "int", "int"],
"clone": ".kd",
"dispatch_id": 1
},
"memory_analysis": {
"l2_cache_line_use": [
{
"location": {
"path": "/work1/amd/colramos/audacious/maestro/examples/bank_conflict/matrix_transpose/matrix_transpose.hip",
"line": 16,
"column": 38
},
"code": "tile[threadIdx.y][threadIdx.x] = in[y * width + x];",
"access_type": "read",
"bytes_at_ir": 4,
"bytes_at_isa": {
"value": 4,
"description": "global_load_dword"
},
"execution_count": 16384,
"cache_lines": {
"needed": 32768,
"used": 65536
}
},
{
"location": {
"path": "/work1/amd/colramos/audacious/maestro/examples/bank_conflict/matrix_transpose/matrix_transpose.hip",
"line": 25,
"column": 25
},
"code": "out[y * height + x] = tile[threadIdx.x][threadIdx.y];",
"access_type": "write",
"bytes_at_ir": 4,
"bytes_at_isa": {
"value": 4,
"description": "global_store_dword"
},
"execution_count": 16384,
"cache_lines": {
"needed": 32768,
"used": 65536
}
}
],
"bank_conflicts": [
{
"location": {
"path": "/work1/amd/colramos/audacious/maestro/examples/bank_conflict/matrix_transpose/matrix_transpose.hip",
"line": 25,
"column": 27
},
"code": "out[y * height + x] = tile[threadIdx.x][threadIdx.y];",
"access_type": "read",
"bytes_at_ir": 4,
"execution_count": 16384,
"total_conflicts": 229376
}
]
},
"hsaInterceptor_elapsed": {
"time": 1773056,
"unit": "us"
},
"kernels_found": 13
}
We discussed that it would be nice for Omniprobe to support a standardized output format (i.e. json), that all message handlers could conform to.
In the context of MemoryAnalysis, that might look something like:
{ "function": { "name": "matrixTransposeShared", "parameters": ["float*", "float const*", "int", "int"], "clone": ".kd", "dispatch_id": 1 }, "memory_analysis": { "l2_cache_line_use": [ { "location": { "path": "/work1/amd/colramos/audacious/maestro/examples/bank_conflict/matrix_transpose/matrix_transpose.hip", "line": 16, "column": 38 }, "code": "tile[threadIdx.y][threadIdx.x] = in[y * width + x];", "access_type": "read", "bytes_at_ir": 4, "bytes_at_isa": { "value": 4, "description": "global_load_dword" }, "execution_count": 16384, "cache_lines": { "needed": 32768, "used": 65536 } }, { "location": { "path": "/work1/amd/colramos/audacious/maestro/examples/bank_conflict/matrix_transpose/matrix_transpose.hip", "line": 25, "column": 25 }, "code": "out[y * height + x] = tile[threadIdx.x][threadIdx.y];", "access_type": "write", "bytes_at_ir": 4, "bytes_at_isa": { "value": 4, "description": "global_store_dword" }, "execution_count": 16384, "cache_lines": { "needed": 32768, "used": 65536 } } ], "bank_conflicts": [ { "location": { "path": "/work1/amd/colramos/audacious/maestro/examples/bank_conflict/matrix_transpose/matrix_transpose.hip", "line": 25, "column": 27 }, "code": "out[y * height + x] = tile[threadIdx.x][threadIdx.y];", "access_type": "read", "bytes_at_ir": 4, "execution_count": 16384, "total_conflicts": 229376 } ] }, "hsaInterceptor_elapsed": { "time": 1773056, "unit": "us" }, "kernels_found": 13 }