From bc5c8353134cb38053c55d0af6def5d889fb8025 Mon Sep 17 00:00:00 2001 From: Nicholas Chaimov Date: Wed, 12 Feb 2025 15:29:57 -0800 Subject: [PATCH] Fix TAU_METRICS with multiple GPU backends tau_exec was replacing `TIME with `TAUGPU_TIME` for every requested GPU backend. So, for example, with ``-rocm -opencl`, we would get: `TIME` -> `TAUGPU_TIME` -> `TAUGPU_TAUGPU_TIME` Fix by checking whether `TAUGPU_TIME` is already a metric before trying to replace `TIME`. Former-commit-id: f474932f751de7b5da131f813bdc397a6454d6d9 --- tools/src/tau_exec | 66 +++++++++++++++++++++++++++------------------- 1 file changed, 39 insertions(+), 27 deletions(-) diff --git a/tools/src/tau_exec b/tools/src/tau_exec index 727d949eb..4e21397e4 100755 --- a/tools/src/tau_exec +++ b/tools/src/tau_exec @@ -967,12 +967,14 @@ if [ $track_l0 = "true" ]; then fi if [ $track_rocm = "true" ] ; then - if [ `echo $TAU_METRICS | grep "TIME"` ]; then - if [ `echo $TAU_METICS | grep "TAUGPU_TIME" ` ]; then - $dryrun export TAU_METRICS=`echo $TAU_METRICS | sed -e 's/TIME/TAUGPU_TIME/'` + if [ `echo $TAU_METRICS | grep -v "TAUGPU_TIME"` ]; then + if [ `echo $TAU_METRICS | grep "TIME"` ]; then + if [ `echo $TAU_METICS | grep "TAUGPU_TIME" ` ]; then + $dryrun export TAU_METRICS=`echo $TAU_METRICS | sed -e 's/TIME/TAUGPU_TIME/'` + fi + else + $dryrun export TAU_METRICS=TAUGPU_TIME:$TAU_METRICS fi - else - $dryrun export TAU_METRICS=TAUGPU_TIME:$TAU_METRICS fi if [ $track_rocm_pc = "true" ] ; then export ROCPROFILER_PC_SAMPLING_BETA_ENABLED=1 @@ -1070,10 +1072,12 @@ if [ $track_cuda = "true" ] ; then #TAUEX_LD_PRELOAD=$BASEDIR/lib/$theBinding/libTAU-CUDA$TAU_SHLIBX:$TAUEX_LD_PRELOAD TAUEX_LD_PRELOAD=$BASEDIR/lib/$theBinding/libTAU-CUDArt$TAU_SHLIBX:$TAUEX_LD_PRELOAD TAUEX_LD_PRELOAD=$BASEDIR/lib/$theBinding/libTAU-CudaQP$TAU_SHLIBX:$TAUEX_LD_PRELOAD - if [ `echo $TAU_METRICS | grep "TIME"` ]; then - export TAU_METRICS=`echo $TAU_METRICS | sed -e 's/TIME/TAUGPU_TIME/'` - else - export TAU_METRICS=TAUGPU_TIME:$TAU_METRICS + if [ `echo $TAU_METRICS | grep -v "TAUGPU_TIME"` ]; then + if [ `echo $TAU_METRICS | grep "TIME"` ]; then + export TAU_METRICS=`echo $TAU_METRICS | sed -e 's/TIME/TAUGPU_TIME/'` + else + export TAU_METRICS=TAUGPU_TIME:$TAU_METRICS + fi fi fi if [ $track_cupti = "true" ] ; then @@ -1087,10 +1091,12 @@ if [ $track_cupti = "true" ] ; then TAUEX_LD_PRELOAD=$BASEDIR/lib/$theBinding/libTAU-CUact$TAU_SHLIBX:$TAUEX_LD_PRELOAD TAUEX_LD_PRELOAD=$BASEDIR/lib/$theBinding/libTAU-CUpti$TAU_SHLIBX:$TAUEX_LD_PRELOAD TAUEX_LD_PRELOAD=$BASEDIR/lib/$theBinding/libTAU-CudaQP$TAU_SHLIBX:$TAUEX_LD_PRELOAD - if [ `echo $TAU_METRICS | grep "TIME"` ]; then - export TAU_METRICS=`echo $TAU_METRICS | sed -e 's/TIME/TAUGPU_TIME/'` - else - export TAU_METRICS=TAUGPU_TIME:$TAU_METRICS + if [ `echo $TAU_METRICS | grep -v "TAUGPU_TIME"` ]; then + if [ `echo $TAU_METRICS | grep "TIME"` ]; then + export TAU_METRICS=`echo $TAU_METRICS | sed -e 's/TIME/TAUGPU_TIME/'` + else + export TAU_METRICS=TAUGPU_TIME:$TAU_METRICS + fi fi fi @@ -1121,17 +1127,21 @@ if [ $track_opencl = "true" ] ; then # Add the OpenCL wrapper library to the LD_PRELOAD list TAUEX_LD_PRELOAD=$BASEDIR/lib/$theBinding/libTAU-OpenCL$TAU_SHLIBX:$TAUEX_LD_PRELOAD TAUEX_LD_PRELOAD=$BASEDIR/lib/$theBinding/libTAU-OCLci$TAU_SHLIBX:$TAUEX_LD_PRELOAD - if [ `echo $TAU_METRICS | grep "TIME"` ]; then - export TAU_METRICS=`echo $TAU_METRICS | sed -e 's/TIME/TAUGPU_TIME/'` - else - export TAU_METRICS=$TAU_METRICS:TAUGPU_TIME + if [ `echo $TAU_METRICS | grep -v "TAUGPU_TIME"` ]; then + if [ `echo $TAU_METRICS | grep "TIME"` ]; then + export TAU_METRICS=`echo $TAU_METRICS | sed -e 's/TIME/TAUGPU_TIME/'` + else + export TAU_METRICS=$TAU_METRICS:TAUGPU_TIME + fi fi fi if [ $track_l0 = "true" -a $track_opencl = "false" ]; then - if [ `echo $TAU_METRICS | grep "TIME"` ]; then - export TAU_METRICS=`echo $TAU_METRICS | sed -e 's/TIME/TAUGPU_TIME/'` - else - export TAU_METRICS=$TAU_METRICS:TAUGPU_TIME + if [ `echo $TAU_METRICS | grep -v "TAUGPU_TIME"` ]; then + if [ `echo $TAU_METRICS | grep "TIME"` ]; then + export TAU_METRICS=`echo $TAU_METRICS | sed -e 's/TIME/TAUGPU_TIME/'` + else + export TAU_METRICS=$TAU_METRICS:TAUGPU_TIME + fi fi fi if [ $track_openacc = "true" ] ; then @@ -1471,14 +1481,16 @@ else $dryrun export HSA_TOOLS_LIB=$TAU_HSA_TOOLS_LIB #$dryrun export LD_PRELOAD=$TAUEX_LD_PRELOAD if [ $track_rocm = "true" ] ; then - if [ `echo $TAU_METRICS | grep "TIME"` ]; then - if [ `echo $TAU_METICS | grep "TAUGPU_TIME" ` ]; then - $dryrun export TAU_METRICS=`echo $TAU_METRICS | sed -e 's/TIME/TAUGPU_TIME/'` - fi - else + if [ `echo $TAU_METRICS | grep -v "TAUGPU_TIME"` ]; then + if [ `echo $TAU_METRICS | grep "TIME"` ]; then + if [ `echo $TAU_METICS | grep "TAUGPU_TIME" ` ]; then + $dryrun export TAU_METRICS=`echo $TAU_METRICS | sed -e 's/TIME/TAUGPU_TIME/'` + fi + else $dryrun export TAU_METRICS=TAUGPU_TIME:$TAU_METRICS fi - fi + fi + fi $dryrun export LD_PRELOAD=$TAUEX_LD_PRELOAD fi fi