1
运行时
dcuprof 使用文档中的问题
2021-12-14 13:21:34
69

问题:在 链接 中给出的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 的源码与编译方法?

全部评论(2)
只看楼主
W
wszhang126
楼主
1楼

编译通过了,之前是因为我根据系统中的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时,不存在这个问题,请问可有解决办法?

2021/12/14
T
tianlh
回复 @wszhang126

建议使用dtk21.04

2021/12/14
没有更多内容了
--
楼主
Level.1
0 帖子
楼主热帖
暂无数据