SWDEV-492625 memory free functions (#11)
* SWDEV-492625: Track free memory HSA functions to help determine total amount of memory allocated on the system at any one time
* Minor fixes to address comments
* Update allocation size description
* Moved get function back to specialization, minor typo fixes
* Removed memory_operation_type field, removed memory_pool allocation enum, converted starting address to hex string for json format.
* Made conversion to hex_string a function, changed address to use union rocprofiler_address_t type, changed VMEM descriptors
* Removed as_hex from the global namespace
* Formatting
* Removed TRACK_EVENT for memory allocation, now TRACK_COUNTER for memory allocation is being performed
* Check if address was recorded before retrieving allocation size in generate Perfetto
* Formatting
* Update source/lib/output/generatePerfetto.cpp
* Explicitly disable app-abort tests
* Remove excluding app-abort test from workflow CI
- redundant bc these tests are explicitly marked as disabled now
---------
Co-authored-by: Madsen, Jonathan <Jonathan.Madsen@amd.com>
Co-authored-by: Jonathan R. Madsen <jonathanrmadsen@gmail.com>
[ROCm/rocprofiler-sdk commit: 79006bb896]
This commit is contained in:
@@ -19,9 +19,11 @@ string(REPLACE "LD_PRELOAD=" "ROCPROF_PRELOAD=" PRELOAD_ENV
|
||||
# disable this test for thread sanitizers because of "signal-unsafe call inside signal"
|
||||
# issues on mi200 and mi300 (works fine on vega20 and navi32)
|
||||
if(ROCPROFILER_MEMCHECK STREQUAL "ThreadSanitizer")
|
||||
set(IS_THREAD_SANITIZER ON)
|
||||
set(DISABLE_THIS_TEST ON)
|
||||
else()
|
||||
set(IS_THREAD_SANITIZER OFF)
|
||||
# set(DISABLE_THIS_TEST OFF)
|
||||
set(DISABLE_THIS_TEST ON) # this test is currently unstable so we are disabling it
|
||||
# unconditionally for now
|
||||
endif()
|
||||
|
||||
set(aborted-app-env "${PRELOAD_ENV}" ROCPROF_TESTING_RAISE_SIGNAL=1
|
||||
@@ -46,7 +48,7 @@ set_tests_properties(
|
||||
WILL_FAIL
|
||||
TRUE
|
||||
DISABLED
|
||||
"${IS_THREAD_SANITIZER}")
|
||||
"${DISABLE_THIS_TEST}")
|
||||
|
||||
add_test(
|
||||
NAME rocprofv3-test-validate-app-abort
|
||||
@@ -64,4 +66,4 @@ set_tests_properties(
|
||||
FAIL_REGULAR_EXPRESSION
|
||||
"${ROCPROFILER_DEFAULT_FAIL_REGEX}"
|
||||
DISABLED
|
||||
"${IS_THREAD_SANITIZER}")
|
||||
"${DISABLE_THIS_TEST}")
|
||||
|
||||
@@ -21,7 +21,7 @@ add_test(
|
||||
NAME rocprofv3-test-memory-allocation-tracing-execute
|
||||
COMMAND
|
||||
$<TARGET_FILE:rocprofiler-sdk::rocprofv3> --memory-allocation-trace -d
|
||||
${CMAKE_CURRENT_BINARY_DIR}/%tag%-trace -o out --output-format json pftrace otf2
|
||||
${CMAKE_CURRENT_BINARY_DIR}/%tag%-trace -o out --output-format json otf2
|
||||
--log-level env -- $<TARGET_FILE:hsa-memory-allocation>)
|
||||
|
||||
set_tests_properties(
|
||||
@@ -35,8 +35,6 @@ add_test(
|
||||
COMMAND
|
||||
${Python3_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/validate.py --json-input
|
||||
${CMAKE_CURRENT_BINARY_DIR}/hsa-memory-allocation-trace/out_results.json
|
||||
--pftrace-input
|
||||
${CMAKE_CURRENT_BINARY_DIR}/hsa-memory-allocation-trace/out_results.pftrace
|
||||
--otf2-input
|
||||
${CMAKE_CURRENT_BINARY_DIR}/hsa-memory-allocation-trace/out_results.otf2)
|
||||
|
||||
|
||||
@@ -17,12 +17,6 @@ def pytest_addoption(parser):
|
||||
default="memory-allocation-tracing/out_results.json",
|
||||
help="Input JSON",
|
||||
)
|
||||
parser.addoption(
|
||||
"--pftrace-input",
|
||||
action="store",
|
||||
default="memory-allocation-tracing/out_results.pftrace",
|
||||
help="Input JSON",
|
||||
)
|
||||
parser.addoption(
|
||||
"--otf2-input",
|
||||
action="store",
|
||||
@@ -38,12 +32,6 @@ def json_data(request):
|
||||
return dotdict(collapse_dict_list(json.load(inp)))
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def pftrace_data(request):
|
||||
filename = request.config.getoption("--pftrace-input")
|
||||
return PerfettoReader(filename).read()[0]
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def otf2_data(request):
|
||||
filename = request.config.getoption("--otf2-input")
|
||||
|
||||
@@ -35,7 +35,7 @@ def test_memory_allocation(json_data):
|
||||
|
||||
_, bf_op_names = get_operation(data, "MEMORY_ALLOCATION")
|
||||
|
||||
assert len(bf_op_names) == 4
|
||||
assert len(bf_op_names) == 5
|
||||
|
||||
allocation_reported_agent_ids = set()
|
||||
# check buffering data
|
||||
@@ -49,12 +49,12 @@ def test_memory_allocation(json_data):
|
||||
assert "thread_id" in node
|
||||
|
||||
assert "agent_id" in node
|
||||
assert "starting_address" in node
|
||||
assert "address" in node
|
||||
assert "allocation_size" in node
|
||||
|
||||
assert node.size > 0
|
||||
assert node.allocation_size > 0
|
||||
assert node.starting_address > 0
|
||||
assert node.allocation_size >= 0
|
||||
assert len(node.address) > 0
|
||||
assert node.thread_id > 0
|
||||
assert node.agent_id.handle > 0
|
||||
assert node.start_timestamp > 0
|
||||
@@ -69,14 +69,6 @@ def test_memory_allocation(json_data):
|
||||
|
||||
allocation_reported_agent_ids.add(node["agent_id"]["handle"])
|
||||
|
||||
assert 2**64 - 1 not in allocation_reported_agent_ids
|
||||
|
||||
|
||||
def test_perfetto_data(pftrace_data, json_data):
|
||||
import rocprofiler_sdk.tests.rocprofv3 as rocprofv3
|
||||
|
||||
rocprofv3.test_perfetto_data(pftrace_data, json_data, ("memory_allocation",))
|
||||
|
||||
|
||||
def test_otf2_data(otf2_data, json_data):
|
||||
import rocprofiler_sdk.tests.rocprofv3 as rocprofv3
|
||||
|
||||
@@ -242,12 +242,12 @@ def test_summary_display_data(json_data, summary_data):
|
||||
|
||||
assert get_dims(marker) == [7, 9], f"{marker}"
|
||||
assert get_dims(memcpy) == [2, 9], f"{memcpy}"
|
||||
assert get_dims(memalloc) == [1, 9], f"{memalloc}"
|
||||
assert get_dims(memalloc) == [2, 9], f"{memalloc}"
|
||||
assert get_dims(dispatch) == [3, 9], f"{dispatch}"
|
||||
assert get_dims(dispatch_and_copy) == [5, 9], f"{dispatch_and_copy}"
|
||||
assert get_dims(hip) == [14, 9], f"{hip}"
|
||||
assert get_dims(hip_and_marker) == expected_hip_and_marker_dims, f"{hip_and_marker}"
|
||||
assert get_dims(total) == [24, 9], f"{total}"
|
||||
assert get_dims(total) == [25, 9], f"{total}"
|
||||
|
||||
|
||||
def test_perfetto_data(pftrace_data, json_data):
|
||||
@@ -256,7 +256,7 @@ def test_perfetto_data(pftrace_data, json_data):
|
||||
rocprofv3.test_perfetto_data(
|
||||
pftrace_data,
|
||||
json_data,
|
||||
("hip", "marker", "kernel", "memory_copy", "memory_allocation"),
|
||||
("hip", "marker", "kernel", "memory_copy"),
|
||||
)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user