Files
vstojilj 9a8942a89c SWDEV-558836, SWDEV-558837 - Add hipMemSetMemPool and hipMemGetMemPoo… (#1349)
* SWDEV-558836, SWDEV-558837 - Add hipMemSetMemPool and hipMemGetMemPool implementation

* Add managed allocation type for mem pools

* Update rocprofiler-sdk with APis declaration
2026-01-27 18:45:28 +01:00

312 خطوط
10 KiB
CMake

# Copyright (c) 2024 Advanced Micro Devices, Inc. All Rights Reserved.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
# Common Tests - Test independent of all platforms
set(COMMON_SHARED_SRC DriverContext.cc)
# FIXME: cjatin
# This is a temp hack to pass it on windows since it has a char limit for
# command line. Eventually we need to use rsp files with ninja on windows.
# But this exposes several problems with hipcc and build system on windows.
# While those are fixed, this hack should allow us to pass windows CI.
set(TEST_SRC
malloc.cc
hipMemsetBasic.cc
hipMemcpy2DToArray.cc
hipMemcpy2DToArray_old.cc
hipMemcpy2DToArrayAsync.cc
hipMemcpy2DToArrayAsync_old.cc
hipMemcpy3D.cc
hipMemcpy3D_old.cc
hipMemcpy3DAsync.cc
hipMemcpy3DAsync_old.cc
hipMemcpyParam2D.cc
hipMemcpyParam2D_old.cc
hipMemcpyParam2DAsync.cc
hipMemcpyParam2DAsync_old.cc
hipMemcpy2D.cc
hipMemcpy2D_old.cc
hipMemcpy2DAsync.cc
hipMemcpy2DAsync_old.cc
hipMemcpy2DFromArray.cc
hipMemcpy2DFromArray_old.cc
hipMemcpy2DFromArrayAsync.cc
hipMemcpy2DFromArrayAsync_old.cc
hipMemcpyAtoD.cc
hipMemcpyAtoH.cc
hipMemcpyAtoHAsync.cc
hipMemcpyDtoA.cc
hipMemcpyAtoH_old.cc
hipMemcpyHtoA.cc
hipMemcpyHtoAAsync.cc
hipMemcpyAtoA.cc
hipMemcpyHtoA_old.cc
hipMemcpyAllApiNegative.cc
hipMemcpy_MultiThread.cc
hipHostRegister.cc
hipHostUnregister.cc
hipHostGetFlags.cc
hipHostGetDevicePointer.cc
hipMallocHost.cc
hipMemAllocHost.cc
hipMallocManaged_MultiScenario.cc
hipMemsetNegative.cc
hipMemset.cc
hipMemset3D.cc
hipMemset2D.cc
hipHostMallocTests.cc
hipMemset3DFunctional.cc
hipMemset3DRegressMultiThread.cc
hipMallocManagedFlagsTst.cc
hipMemPrefetchAsyncExtTsts.cc
hipMemAdviseMmap.cc
hipMallocManaged.cc
hipMemRangeGetAttribute.cc
hipMemRangeGetAttribute_old.cc
hipMemCoherencyTst.cc
hipMemsetD32.cc
hipMemsetD16.cc
hipMemsetD16Async.cc
hipMemsetD32Async.cc
hipMemsetD8Async.cc
hipMemcpy2DArrayToArray.cc
hipMemcpy3DBatchAsync.cc
hipMemcpyBatchAsync.cc
hipMemsetD2D8.cc
hipMemsetD2D8Async.cc
hipMemsetD2D16.cc
hipMemsetD2D16Async.cc
hipMemsetD2D32.cc
hipMemsetD2D32Async.cc
hipMemcpy3DPeer.cc
hipMemcpy3DPeerAsync.cc
)
if(UNIX)
set(TEST_SRC ${TEST_SRC} hipMemPoolExportPointer.cc
hipMemPoolExportToShareableHandle.cc
hipMemPoolImportFromShareableHandle.cc
hipMemPoolImportPointer.cc)
endif()
if(HIP_PLATFORM MATCHES "amd")
set(TEST_SRC
${TEST_SRC}
hipMemPtrGetInfo.cc
hipPointerGetAttributes.cc
hipExtMallocWithFlags.cc
hipMallocMngdMultiThread.cc
hipMemVmm.cc
hipArray.cc
hipMemcpyDeviceToDeviceNoCU.cc
hipGetProcAddressMemoryApis.cc
# Will be enabled for NVIDIA after fix for SWDEV-551244
hipMemPrefetchAsync_v2.cc
hipMemAdvise_v2.cc)
if(UNIX)
# Should be compiled for NVIDIA as well after EXSWHTEC-346 is addressed
# For windows build error occurs undefined symbol: hipPointerSetAttribute
set(TEST_SRC ${TEST_SRC} hipPointerSetAttribute.cc)
endif()
else()
set(TEST_SRC ${TEST_SRC} hipGetSymbolSizeAddress.cc)
endif()
hip_add_exe_to_target(NAME MemoryTest1
TEST_SRC ${TEST_SRC}
TEST_TARGET_NAME build_tests COMMON_SHARED_SRC ${COMMON_SHARED_SRC})
if(UNIX)
# link libnuma for numa_available(), numa_max_node(), move_pages(), etc.
find_package(NUMA QUIET)
if(NUMA_FOUND)
set(NUMA "${NUMA_LIBRARIES}")
else()
find_library(NUMA NAMES numa REQUIRED)
endif()
target_link_libraries(MemoryTest1 ${NUMA})
endif()
if(HIP_PLATFORM MATCHES "amd")
set_source_files_properties(hipHostRegister_exe.cc PROPERTIES LANGUAGE HIP)
add_executable(hipHostRegisterPerf EXCLUDE_FROM_ALL hipHostRegister_exe.cc)
set_target_properties(hipHostRegisterPerf PROPERTIES LINKER_LANGUAGE HIP)
add_dependencies(build_tests hipHostRegisterPerf)
set_property(GLOBAL APPEND PROPERTY G_INSTALL_EXE_TARGETS hipHostRegisterPerf)
target_link_libraries(hipHostRegisterPerf hip::host hip::device)
if(UNIX)
set_source_files_properties(hipMemAdvise_AlignedAllocMem_Exe.cc PROPERTIES LANGUAGE HIP)
add_executable(hipMemAdviseTstAlignedAllocMem EXCLUDE_FROM_ALL hipMemAdvise_AlignedAllocMem_Exe.cc)
set_target_properties(hipMemAdviseTstAlignedAllocMem PROPERTIES LINKER_LANGUAGE HIP)
add_dependencies(MemoryTest1 hipMemAdviseTstAlignedAllocMem)
set_property(GLOBAL APPEND PROPERTY G_INSTALL_EXE_TARGETS hipMemAdviseTstAlignedAllocMem)
target_link_libraries(hipMemAdviseTstAlignedAllocMem hip::host hip::device)
endif()
endif()
set(TEST_SRC
hipMemcpyFromSymbol.cc
hipPtrGetAttribute.cc
hipMemPoolApi.cc
hipDeviceGetMemPool.cc
hipDeviceSetMemPool.cc
hipMemPoolSetGetAccess.cc
hipMemPoolSetGetAttribute.cc
hipMemPoolCreate.cc
hipMemPoolDestroy.cc
hipMemPoolMaxAlloc.cc
hipMemPoolTrimTo.cc
hipMallocFromPoolAsync.cc
hipMemcpyPeer.cc
hipMemcpyPeer_old.cc
hipMemcpyPeerAsync.cc
hipMemcpyPeerAsync_old.cc
hipMemcpyWithStream_old.cc
hipMemcpyWithStream.cc
hipMemcpyWithStreamMultiThread.cc
hipMemsetAsyncAndKernel.cc
hipMemset2DAsyncMultiThreadAndKernel.cc
hipMallocConcurrency.cc
hipMemcpyDtoD.cc
hipMemcpyDtoDAsync.cc
hipHostMalloc.cc
hipMemcpy_EdgeCases.cc
hipMemcpy_derivatives.cc
hipMemcpyAsync.cc
hipMemcpyAsync_old.cc
hipMemcpyAsync_derivatives.cc
hipMemsetFunctional.cc
hipMalloc.cc
hipMallocPitch.cc
hipMalloc3D.cc
hipMalloc3DArray.cc
hipArray3DCreate.cc
hipDrvMemcpy3D.cc
hipDrvMemcpy3D_old.cc
hipDrvMemcpy3DAsync.cc
hipDrvMemcpy3DAsync_old.cc
hipPointerGetAttribute.cc
hipDrvPtrGetAttributes.cc
hipMemPrefetchAsync.cc
hipMemGetInfo.cc
hipFree.cc
hipFreeArray.cc
hipHostFree.cc
hipMemcpySync.cc
hipMemsetSync.cc
hipMemsetAsync.cc
hipMemAdvise_old.cc
hipMemAdvise.cc
hipMemRangeGetAttributes.cc
hipFreeAsync.cc
hipFreeHost.cc
hipMallocAsync.cc
hipStreamAttachMemAsync.cc
hipMemRangeGetAttributes_old.cc
hipMemGetAddressRange.cc
hipMallocMipmappedArray.cc
hipFreeMipmappedArray.cc
hipHostAlloc.cc
hipMemSetMemPool.cc
hipMemGetMemPool.cc)
if(HIP_PLATFORM MATCHES "amd")
set(TEST_SRC
${TEST_SRC}
# Test below currently doesn't work on NVIDIA, will update based on ticket response
hipDrvMemcpy2DUnaligned.cc
# Below 3 tests should be compiled for NVIDIA as well after EXSWHTEC-349 is addressed
hipArrayGetInfo.cc
hipArrayGetDescriptor.cc
hipArray3DGetDescriptor.cc)
endif()
set(NOT_FOR_gfx90a_AND_ABOVE_TEST hipMallocArray.cc hipArrayCreate.cc) # tests not for gfx90a+
set(gfx90a_AND_ABOVE_TARGETS gfx90a gfx942 gfx950)
function(CheckRejectedArchs OFFLOAD_ARCH_STR_LOCAL)
set(ARCH_CHECK -1 PARENT_SCOPE)
set(NOT_GFX90a -1)
set(GFX90a -1)
string(REGEX MATCHALL "--offload-arch=gfx[0-9a-z]+" OFFLOAD_ARCH_LIST ${OFFLOAD_ARCH_STR_LOCAL})
foreach(OFFLOAD_ARCH IN LISTS OFFLOAD_ARCH_LIST)
string(REGEX MATCHALL "--offload-arch=(gfx[0-9a-z]+)" matches ${OFFLOAD_ARCH})
if (CMAKE_MATCH_COUNT EQUAL 1)
if (CMAKE_MATCH_1 IN_LIST gfx90a_AND_ABOVE_TARGETS)
set(GFX90a 1)
else()
set(NOT_GFX90a 1)
endif() # CMAKE_MATCH_1
endif() # CMAKE_MATCH_COUNT
endforeach() # OFFLOAD_ARCH_LIST
if (${NOT_GFX90a} EQUAL -1 AND ${GFX90a} EQUAL 1)
set(ARCH_CHECK 1 PARENT_SCOPE)
endif()
endfunction() # CheckAcceptedArchs
if(HIP_PLATFORM MATCHES "amd")
if (DEFINED OFFLOAD_ARCH_STR)
CheckRejectedArchs(${OFFLOAD_ARCH_STR})
elseif(DEFINED $ENV{HCC_AMDGPU_TARGET})
CheckRejectedArchs($ENV{HCC_AMDGPU_TARGET})
else()
set(ARCH_CHECK -1)
endif()
if(${ARCH_CHECK} EQUAL -1)
message(STATUS "Adding test: ${NOT_FOR_gfx90a_AND_ABOVE_TEST}")
set(TEST_SRC ${TEST_SRC} ${NOT_FOR_gfx90a_AND_ABOVE_TEST})
endif()
else()
set(TEST_SRC ${TEST_SRC} ${NOT_FOR_gfx90a_AND_ABOVE_TEST})
endif()
hip_add_exe_to_target(NAME MemoryTest2
TEST_SRC ${TEST_SRC}
TEST_TARGET_NAME build_tests COMMON_SHARED_SRC ${COMMON_SHARED_SRC})
if(HIP_PLATFORM MATCHES "amd")
set(TEST_SRC
inlineVar.cc
memoryCommon.cc
)
#hip_add_exe_to_target(NAME InlineVarTest
# TEST_SRC ${TEST_SRC}
# TEST_TARGET_NAME build_tests COMMON_SHARED_SRC ${COMMON_SHARED_SRC})
#
# set_target_properties(InlineVarTest PROPERTIES COMPILE_FLAGS -fgpu-rdc)
# set_target_properties(InlineVarTest PROPERTIES LINK_FLAGS -fgpu-rdc)
endif()
set(TEST_SRC
hipSVMTestByteGranularity.cpp
hipSVMTestFineGrainMemoryConsistency.cpp
hipSVMTestFineGrainSyncBuffers.cpp
hipSVMTestSharedAddressSpaceFineGrain.cpp
)
hip_add_exe_to_target(NAME SVMAtomicTest
TEST_SRC ${TEST_SRC}
TEST_TARGET_NAME build_tests COMMON_SHARED_SRC ${COMMON_SHARED_SRC})
if(HIP_PLATFORM MATCHES "nvidia")
set_target_properties(SVMAtomicTest PROPERTIES COMPILE_FLAGS -arch=sm_70)
set_target_properties(MemoryTest1 PROPERTIES COMPILE_FLAGS -arch=sm_70)
set_target_properties(MemoryTest2 PROPERTIES COMPILE_FLAGS -arch=sm_70)
endif()