clang编译器能够将OpenMP区域卸载到GPU
我读到clang编译器可以将OpenMP区域卸载到GPU。然而,我是 在用叮当声编译代码的过程中感到困惑。这是一个叮当作响的版本 在我们的集群中安装的是3.9.0(tags/RELEASE_390/final 288133)。代码I 想要卸载基本上是矩阵乘法:clang编译器能够将OpenMP区域卸载到GPU,c,clang,openmp,offloading,C,Clang,Openmp,Offloading,我读到clang编译器可以将OpenMP区域卸载到GPU。然而,我是 在用叮当声编译代码的过程中感到困惑。这是一个叮当作响的版本 在我们的集群中安装的是3.9.0(tags/RELEASE_390/final 288133)。代码I 想要卸载基本上是矩阵乘法: #pragma omp target parallel for shared(C,P,T) private(i,j,k) for (i=0; i<N; i++) { for (j=0; j<N; j++) {
#pragma omp target parallel for shared(C,P,T) private(i,j,k)
for (i=0; i<N; i++) {
for (j=0; j<N; j++) {
for (k=0; k<N; k++) {
C[i][j] += P[i][k]*T[k][j];
}
}
}
我不知道的是,我安装的clang版本是否能够将代码卸载到GPU,如果能够,我该怎么做。欢迎发表任何意见。简短回答:根据以下内容: 目前,Clang支持OpenMP 3.1和OpenMP 4.0/4.5的所有非卸载功能。卸载功能正在开发中
在更新的发行说明中,我找不到任何关于它是否同时被正式添加到新版本的信息。不过,似乎有一些人支持。该文件说明了两个插件
- 用于以下目标的通用64位:
powerpc64 ibm linux gnu
powerpc64le ibm linux gnu
x86_64-pc-linux-gnu
- cuda,针对目标(请参阅):
nvptx nvidia cuda
nvptx64 nvidia cuda
目标
构造的支持,即卸载,并不等同于GPU(或任何特定设备)支持,因为这需要每个设备的特定设备实现。琐碎的支持是将负载转移到主机设备,例如x86CPU,在没有加速器设备的情况下,这对测试或兼容性没有任何好处
希望有帮助。自第7版以来,clang支持OpenMP卸载到Nvidia GPU(): Clang获得了对NVPTX目标的OpenMP 4.5卸载的基本支持 要为NVPTX目标编译程序,请使用以下选项:
-fopenmp-fopenmp targets=nvptx64 nvidia cuda
用于64位平台,或-fopenmp-fopenmp targets=NVPTX nvidia cuda
用于32位平台
clang -O3 -fopenmp-targets=x86_64-unknown-linux-gnu mm.c
clang-3.9: warning: argument unused during compilation: '-fopenmp-targets=x86_64-unknown-linux-gnu'