Change:
When trying to use rocprofv2: This might have something to do with some predefined paths in Steps to reproduce the behavior: an executable with hipcc it with rocprofv2 <!-- Please @ people who are in the list of the offending package or module. If in doubt, check for whoever last touched something. -- Please run and paste the result.
I need to do some work with . need to make a patch that strips. I need to fix itself. I wonder if it's because I'm stripping out the test directories? Also yes, it looks like you're right. You can fix that by prepending too, so I'm not entirely sure it'll work. Try setting `. You may just be able to run it from that as well.
I don't think that removing hsa-amd-aqlprofile-bin is a good idea, because without it, it loses performance counters support. I think there should at least be a rocprof derivation with aqlprofile.
My bad, I forgot to add that the patch is optional.
Right. Could you tell me your test environment and the source of the hip executable (or just some stub) so I can replicate this? I've never actually used rocprofiler.
You can try this, it just prints 10 numbers, it can be compiled with hipcc without any flag. I am using a radeon rx6600m(gfx1032).
see

Discussion:
# Needs GCC rocprofiler = callPackage ./rocprofiler { <ins> inherit rocmUpdateScript clr rocm-core rocm-thunk rocm-device-libs roctracer rocdbgapi rocm-smi hsa-amd-aqlprofile-bin; </ins> inherit (llvm) clang; <del> inherit rocmUpdateScript clr rocm-thunk roctracer rocm-smi hsa-amd-aqlprofile-bin; </del> }; # Needs GCC

<ins> diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 8473a42..07ea873 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -112,10 +112,6 @@ function(generate_hsaco TARGET_ID INPUT_FILE OUTPUT_FILE) DEPENDS ${INPUT_FILE} clang COMMENT "Building ${OUTPUT_FILE}..." VERBATIM) -    install( -        FILES ${PROJECT_BINARY_DIR}/${OUTPUT_FILE} -        DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/${PROJECT_NAME}/tests-v1 -        COMPONENT tests) set(HSACO_TARGET_LIST ${HSACO_TARGET_LIST} ${PROJECT_BINARY_DIR}/${OUTPUT_FILE} PARENT_SCOPE) </ins>

<ins> diff --git a/bin/rocprofv2 b/bin/rocprofv2 index 92f7489..8839d4d 100755 --- a/bin/rocprofv2 +++ b/bin/rocprofv2 @@ -2,7 +2,8 @@ set -eo pipefail CURRENT_DIR="$(dirname -- "$0")" ROCPROFV2_DIR=$(dirname -- $(realpath ${BASH_SOURCE[0]})) -ROCM_DIR=$(dirname -- "$ROCPROFV2_DIR") +ROCPROFILER_DIR=$(dirname -- "$ROCPROFV2_DIR") +ROCM_DIR=@rocmtoolkit_merged@ PLUGIN_LIST=("ctf" "perfetto" "file" "att") RUN_FROM_BUILD=0 if [[ $ROCPROFV2_DIR == *"/build"* ]]; then @@ -10,7 +11,7 @@ if [[ $ROCPROFV2_DIR == *"/build"* ]]; then ROCM_DIR=$ROCPROFV2_DIR fi -export ROCPROFILER_METRICS_PATH=$ROCM_DIR/libexec/rocprofiler/counters/derived_counters.xml +export ROCPROFILER_METRICS_PATH=$ROCPROFILER_DIR/libexec/rocprofiler/counters/derived_counters.xml export LD_LIBRARY_PATH=$ROCM_DIR/lib:$LD_LIBRARY_PATH usage() { @@ -70,8 +71,8 @@ while [ 1 ]; do exit 1 fi elif [[ "$1" = "--list-counters" ]]; then -    export LD_PRELOAD=$LD_PRELOAD:$ROCM_DIR/lib/rocprofiler/librocprofiler_tool.so -    eval $ROCM_DIR/libexec/rocprofiler/ctrl +    export LD_PRELOAD=$LD_PRELOAD:$ROCPROFILER_DIR/lib/rocprofiler/librocprofiler_tool.so +    eval $ROCPROFILER_DIR/libexec/rocprofiler/ctrl exit 1 elif [[ "$1" = "-i" || "$1" = "--input" ]]; then if [ $2 ] && [ -n $2 ] && [ -r $2 ]; then @@ -171,7 +172,7 @@ while [ 1 ]; do if [ $RUN_FROM_BUILD == 1 ]; then ATT_PATH=$ROCM_DIR/plugin/att/att/att.py else -        ATT_PATH=$ROCM_DIR/libexec/rocprofiler/att/att.py +        ATT_PATH=$ROCPROFILER_DIR/libexec/rocprofiler/att/att.py export ROCPROFV2_ATT_LIB_PATH=$ROCM_DIR/lib/hsa-amd-aqlprofile/librocprofv2_att.so fi ATT_ARGV=$3 @@ -236,13 +237,13 @@ if [ -n "$PMC_LINES" ] && [ ! -n "$ATT_ARGV" ]; then export OUTPUT_PATH=$FINAL_PATH fi let COUNTER=COUNTER+1 -    LD_PRELOAD=$LD_PRELOAD:$ROCM_DIR/lib/rocprofiler/librocprofiler_tool.so $* +    LD_PRELOAD=$LD_PRELOAD:$ROCPROFILER_DIR/lib/rocprofiler/librocprofiler_tool.so $* if [ -n "$OUTPUT_PATH" ]; then echo -e "nThe output path for the following counters: $OUTPUT_PATH" fi done else -  LD_PRELOAD=$LD_PRELOAD:$ROCM_DIR/lib/rocprofiler/librocprofiler_tool.so $* +  LD_PRELOAD=$LD_PRELOAD:$ROCPROFILER_DIR/lib/rocprofiler/librocprofiler_tool.so $* fi get_pmc_results_txt_path() { diff --git a/bin/rpl_run.sh b/bin/rpl_run.sh index c1a3daa..bc868a5 100755 --- a/bin/rpl_run.sh +++ b/bin/rpl_run.sh @@ -24,16 +24,17 @@ time_stamp=`date +%y%m%d_%H%M%S` BIN_DIR=$(dirname $(realpath ${BASH_SOURCE[0]})) -ROOT_DIR=$(dirname $BIN_DIR) +ROCPROFILER_DIR=$(dirname $BIN_DIR) +ROOT_DIR=@rocmtoolkit_merged@ RUN_DIR=`pwd` TMP_DIR="/tmp" DATA_DIR="rpl_data_${time_stamp}_$$" -RPL_PATH=$ROOT_DIR/lib +RPL_PATH=$ROCPROFILER_DIR/lib TLIB_PATH=$RPL_PATH/rocprofiler TTLIB_PATH=$ROOT_DIR/lib/roctracer ROCM_LIB_PATH=$ROOT_DIR/lib -PROF_BIN_DIR=$ROOT_DIR/libexec/rocprofiler +PROF_BIN_DIR=$ROCPROFILER_DIR/libexec/rocprofiler if [ -z "$ROCP_PYTHON_VERSION" ] ; then ROCP_PYTHON_VERSION=python3 @@ -73,7 +74,7 @@ export ROCP_METRICS=$TLIB_PATH/metrics.xml # Disable AQL-profile read API export AQLPROFILE_READ_API=0 # ROC Profiler package path -export ROCP_PACKAGE_DIR=$ROOT_DIR +export ROCP_PACKAGE_DIR=$ROCPROFILER_DIR # enabled SPM KFD mode export ROCP_SPM_KFD_MODE=1 @@ -350,7 +351,7 @@ convert_time_val() { ################################################################################################ # main -echo "RPL: on '$time_stamp' from '$ROOT_DIR' in '$RUN_DIR'" +echo "RPL: on '$time_stamp' from '$ROCPROFILER_DIR' in '$RUN_DIR'" # Parsing arguments if [ -z "$1" ] ; then usage @@ -557,7 +558,7 @@ elif [ "$input_type" = "txt" -o "$input_type" = "none" ] ; then else echo "<metric></metric>" > $RES_DIR/input.xml fi -  input_list=`/bin/ls $RES_DIR/input*.xml` +  input_list=`ls $RES_DIR/input*.xml` export ROCPROFILER_SESS=$RES_DIR else fatal "Bad input file type '$INPUT_FILE'" </ins>

, stdenv , fetchFromGitHub , rocmUpdateScript <ins> , symlinkJoin , substituteAll </ins> , cmake , clang , clr <ins> , rocm-core </ins> , rocm-thunk <ins> , rocm-device-libs </ins> , roctracer <ins> , rocdbgapi </ins> , rocm-smi , hsa-amd-aqlprofile-bin , numactl

, libxml2 , elfutils , mpi <ins> , systemd </ins> , gtest , python3Packages <del> , gpuTargets ? [ "gfx900" "gfx906" "gfx908" "gfx90a" "gfx940" "gfx941" "gfx942" "gfx1030" "gfx1100" "gfx1101" "gfx1102" ] </del> <ins> , gpuTargets ? clr.gpuTargets </ins> }: <del> stdenv.mkDerivation (finalAttrs: { </del> <ins> let rocmtoolkit-merged = symlinkJoin { name = "rocmtoolkit-merged"; paths = [ rocm-core rocm-thunk rocm-device-libs roctracer rocdbgapi rocm-smi hsa-amd-aqlprofile-bin clr ]; postBuild = '' rm -rf $out/nix-support ''; }; in stdenv.mkDerivation (finalAttrs: { </ins> pname = "rocprofiler"; version = "5.7.1";

hash = "sha256-1s/7C9y+73ADLF/17Vepw0pZNVtYnKoP24GdwKc9X2Y="; }; <ins> patches = [ # These just simply won't build ./0000-dont-install-tests-hsaco.patch # Fix bad paths (substituteAll { src = ./0001-fix-shell-scripts.patch; rocmtoolkit_merged = rocmtoolkit-merged; }) ]; </ins> nativeBuildInputs = [ cmake clang

]; buildInputs = [ <del> rocm-thunk rocm-smi hsa-amd-aqlprofile-bin </del> numactl libpciaccess libxml2 elfutils mpi <ins> systemd </ins> gtest ]; <ins> propagatedBuildInputs = [ rocmtoolkit-merged ]; </ins> cmakeFlags = [ "-DCMAKE_MODULE_PATH=${clr}/lib/cmake/hip" <del> "-DPROF_API_HEADER_PATH=${roctracer.src}/inc/ext" </del> "-DHIP_ROOT_DIR=${clr}" "-DGPU_TARGETS=${lib.concatStringsSep ";" gpuTargets}" # Manually define CMAKE_INSTALL_<DIR>

postPatch = '' patchShebangs . <del> # Cannot find ROCm device library, pointless substituteInPlace CMakeLists.txt  --replace "add_subdirectory(tests-v2)" ""  --replace "add_subdirectory(samples)" "" </del> <ins> substituteInPlace tests-v2/featuretests/profiler/CMakeLists.txt  --replace "--build-id=sha1" "--build-id=sha1 --rocm-path=${clr} --rocm-device-lib-path=${rocm-device-libs}/amdgcn/bitcode" substituteInPlace test/CMakeLists.txt  --replace "''${ROCM_ROOT_DIR}/amdgcn/bitcode" "${rocm-device-libs}/amdgcn/bitcode" </ins> ''; <del> postBuild = '' # HSACO aren't being built for some reason substituteInPlace test/cmake_install.cmake  --replace "file(INSTALL DESTINATION "''${CMAKE_INSTALL_PREFIX}/share/rocprofiler/tests-v1" TYPE FILE FILES "" "message("" </del> <ins> postInstall = '' # Why do these not already have the executable bit set? chmod +x $out/lib/rocprofiler/librocprof-tool.so chmod +x $out/share/rocprofiler/tests-v1/test/ocl/SimpleConvolution # Why do these have the executable bit set? chmod -x $out/libexec/rocprofiler/counters/basic_counters.xml chmod -x $out/libexec/rocprofiler/counters/derived_counters.xml </ins> ''; passthru.updateScript = rocmUpdateScript {