问题:在 链接 中给出的dcuprof使用方法一文中,第一个示例 “通过OpenMP使用4个DCU并行计算”,也就是 “trace模式 -> 单进程应用 -> ./jacobi -niter 10”中, jacobi 程序是怎样编译生成出来的呢?
我在做openmp offload程序开发时,发现只有这篇文章的dcuprof可以给出对GPU的详细profiling时间线结果,而dcuprof似乎只有对应rocm3.3才能使用。
我尝试发现,在其他如rocm 3.9.1 中已经编译了aomp组件,可以使用以下编译命令编译offload程序:
clang -O2 -v -target x86_64-pc-linux-gnu -fopenmp -fopenmp-targets=amdgcn-amd-amdhsa -Xopenmp-target=amdgcn-amd-amdhsa -march=gfx906 main.cpp
也知道在更高版本的rocm4.x.x版本中,可以使用
hipcc --offload-arch=gfx906 -O2 -fopenmp main.cpp
来编译openmp offload 程序。
那么,如何利用rocm3.3或其他编译器编译出兼容 dcuprof profiling 工具的运行程序呢?可有以上文章示例中提到的./jacobi 的源码与编译方法?

暂无数据
编译通过了,之前是因为我根据系统中的compiler/rocm/3.3修改的支持aomp的modulefile有误,正确的应该是:
set ROCM_DIR /public/software/compiler/rocm/rocm-3.3.0
prepend-path PATH ${ROCM_DIR}/aomp/bin:${ROCM_DIR}/bin:${ROCM_DIR}/hcc/bin:${ROCM_DIR}/hip/bin:${ROCM_DIR}/miopen/bin:${ROCM_DIR}/opencl/bin/x86_64
prepend-path LD_LIBRARY_PATH ${ROCM_DIR}/aomp/lib:${ROCM_DIR}/lib:${ROCM_DIR}/lib64:${ROCM_DIR}/miopen/lib:${ROCM_DIR}/opencl/lib/x86_64
prepend-path C_INCLUDE_PATH ${ROCM_DIR}/aomp/include:${ROCM_DIR}/include:${ROCM_DIR}/opencl/include
prepend-path CPLUS_INCLUDE_PATH ${ROCM_DIR}/include:${ROCM_DIR}/opencl/include
prepend-path ROCM_PATH ${ROCM_DIR}/
prepend-path HIP_PATH ${ROCM_DIR}/hip/
prepend-path HCC_AMDGPU_TARGET gfx906
prepend-path AOMP ${ROCM_DIR}/aomp
set AOMP_GPU gfx906
如此,使用 clang -O2 -target x86_64-pc-linux-gnu -fopenmp -fopenmp-targets=amdgcn-amd-amdhsa -Xopenmp-target=amdgcn-amd-amdhsa -march=gfx906 main.c vsum.c vmul.c -o vmulsum
可以编译成功。
但是,运行时还是存在问题,会报错退出:
pthread_setaffinity_np: Invalid argument
在使用rocm3.9.1中的aomp时,不存在这个问题,请问可有解决办法?