我在Ubuntu18.04上安装了来自https://apt.llvm.org/的clang-11,并在我的C++测试项目中使用了OpenMP主机设备功能,但omp_get_num_devices()返回0,即使我有Nvidia GPU和可用的CUDA11工具包也是如此。我是否必须从源代码构建一个特殊版本的Clang,才能让OpenMP图形处理器卸载工作,如下所述:https://hpc-wiki.info/hpc/Building?
发布于 2020-11-12 01:45:39
用于LLVM的Debian/Ubuntue包没有为GPU 0提供OpenMP卸载支持。打包有点棘手,但我们正在努力解决这个问题。目前,其中一个棘手的部分是,为了获得合理的性能,它需要两个阶段的构建,并且您需要(Ed)指定您的目标是什么GPU架构。后一种需求现在在LLVM中部分消失了,因为我们查看了构建机器配置并做出了合理的猜测,但在LLVM11版本(IIRC)中仍然存在。我们正在努力消除两个阶段的要求,以及其他事情。
虽然这些东西都很新,而且大部分都是空的,但最终还是会在这里进行描述:http://openmp.llvm.org/docs
此外,如果您有问题或疑虑,请不要犹豫,请发送电子邮件至openmp-dev@lists.llvm.org :)
最后,乍一看,@ouankou的脚本看起来相当不错,除了我通常推荐最新的top-of-trunk而不是发行版。它可能是不稳定的,但是,对于OpenMP卸载支持,它可能不会比一个发行版更不稳定。
CMake摘录:https://paste.debian.net/1171752/ (感谢Sylvestre!)
发布于 2020-11-11 20:25:21
是的,我相信你必须从源代码构建你自己的版本。我写了一个简单的脚本来构建带有GPU卸载支持的Clang/LLVM。请查看:https://gist.github.com/ouankou/27c1fc22aee9125190492ea126125249
该脚本接受三个参数:位置、LLVM版本和CUDA计算能力编号。例如,要在NVIDIA Tesla V100 (Volta)上构建Clang/llvm11:
./install_llvm.sh $HOME/llvm11 11 70如有必要,还可以将脚本末尾的变量设置添加到.bashrc。
https://stackoverflow.com/questions/64783378
复制相似问题