gpt4 book ai didi

gcc - GCC 中的 OpenMP 4.0 : offload to nVidia GPU

转载 作者:行者123 更新时间:2023-12-03 23:43:58 24 4
gpt4 key购买 nike

TL;博士 - GCC(主干)是否已经支持将 OpenMP 4.0 卸载到 nVidia GPU?

如果是这样,我做错了什么? (说明如下)。

我在运行 Ubuntu 14.04.2 LTS .

我查看了最近的 GCC 中继 (日期为 2015 年 3 月 25 日)。

我已经安装了 CUDA 7.0 工具包根据 Getting Started on Ubuntu指南。 CUDA 样本运行成功,即 deviceQuery检测到我的 GeForce GT 730。

我已按照 https://gcc.gnu.org/wiki/Offloading 中的说明进行操作以及 https://gcc.gnu.org/install/specific.html#nvptx-x-none

我已安装 nvptx-工具 nvptx-newlib ( configure , make , sudo make install ), newlib 也与 ln -s 链接到 GCC 的主干目录中.

然后我建了 目标加速器 nvptx-none 编译器:

../../trunk/configure --target=nvptx-none --enable-as-accelerator-for=x86_64-pc-linux-gnu --with-build-time-tools=/usr/local/nvptx-none/bin --disable-sjlj-exceptions --enable-newlib-io-long-long
make -j 9
sudo make install DESTDIR=/install

...和 ​​ 主机 GCC 编译器本身:
../trunk/configure --build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu --target=x86_64-pc-linux-gnu --enable-offload-targets=nvptx-none=/install/prefix --with-cuda-driver=/usr/local/cuda --enable-languages=c,c++
make -j 9
sudo make install DESTDIR=/install

我已经设置了 LD_LIBRARY_PATH 相应地:
export LD_LIBRARY_PATH=/install/usr/local/lib64:/install/usr/local/lib/gcc/nvptx-none/5.0.0/:/usr/local/cuda/lib64:$LD_LIBRARY_PATH

当然, mkoffload 工具构建:
/install/usr/local/libexec/gcc/x86_64-pc-linux-gnu/5.0.0/accel/nvptx-none/mkoffload

目标和主机编译器也在那里:
/install/usr/local/bin/x86_64-pc-linux-gnu-gcc
/install/usr/local/bin/x86_64-pc-linux-gnu-accel-nvptx-none-gcc

但是当我编译一个示例代码时,该代码使用 omp_get_num_devices() 查询设备数量。 ,我得到了回复 0 :
$ /install/usr/local/bin/x86_64-pc-linux-gnu-gcc -fopenmp -foffload=nvptx-none main.c
$ ./a.out
0

当我添加 -v (详细)选项到目标编译器的选项,我得到以下输出:
$ /install/usr/local/bin/x86_64-pc-linux-gnu-gcc -fopenmp -foffload=nvptx-none="-v" main.c

Using built-in specs.
COLLECT_GCC=/install/usr/local/bin/x86_64-pc-linux-gnu-accel-nvptx-none-gcc
Target: nvptx-none
Configured with: ../../trunk/configure --target=nvptx-none --enable-as-accelerator-for=x86_64-pc-linux-gnu --with-build-time-tools=/usr/local/nvptx-none/bin --disable-sjlj-exceptions --enable-newlib-io-long-long
Thread model: single
gcc version 5.0.0 20150325 (experimental) (GCC)
COLLECT_GCC_OPTIONS='-m64' '-S' '-fmath-errno' '-fsigned-zeros' '-ftrapping-math' '-fno-trapv' '-fno-strict-overflow' '-fno-openacc' '-foffload-abi=lp64' '-fopenmp' '-v' '-v' '-o' '/tmp/cccxIggp.mkoffload'
/install/usr/local/bin/../libexec/gcc/x86_64-pc-linux-gnu/5.0.0/accel/nvptx-none/lto1 -quiet -dumpbase ccKOW9hi.o -m64 -auxbase-strip /tmp/cccxIggp.mkoffload -version -fmath-errno -fsigned-zeros -ftrapping-math -fno-trapv -fno-strict-overflow -fno-openacc -foffload-abi=lp64 -fopenmp -o /tmp/cccxIggp.mkoffload @/tmp/ccjRDWhp
GNU GIMPLE (GCC) version 5.0.0 20150325 (experimental) (nvptx-none)
compiled by GNU C version 5.0.0 20150325 (experimental), GMP version 5.1.3, MPFR version 3.1.2-p3, MPC version 1.0.1
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
GNU GIMPLE (GCC) version 5.0.0 20150325 (experimental) (nvptx-none)
compiled by GNU C version 5.0.0 20150325 (experimental), GMP version 5.1.3, MPFR version 3.1.2-p3, MPC version 1.0.1
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
COMPILER_PATH=/install/usr/local/bin/../libexec/gcc/x86_64-pc-linux-gnu/5.0.0/accel/nvptx-none/:/install/usr/local/bin/../libexec/gcc/
LIBRARY_PATH=/install/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/5.0.0/accel/nvptx-none/:/install/usr/local/bin/../lib/gcc/
COLLECT_GCC_OPTIONS='-m64' '-S' '-fmath-errno' '-fsigned-zeros' '-ftrapping-math' '-fno-trapv' '-fno-strict-overflow' '-fno-openacc' '-foffload-abi=lp64' '-fopenmp' '-v' '-v' '-o' '/tmp/cccxIggp.mkoffload'

所以看起来工具链被调用并且 .mkoffload文件被创建。

请帮忙。如果它应该工作,我如何诊断出了什么问题?

最佳答案

TL;DR - Does GCC (trunk) already support OpenMP 4.0 offloading to nVidia GPU?



不。

目前 GCC 仅支持将 OpenMP 4.0 卸载到 Intel Xeon Phi (KNL) 和将 OpenACC 2.0 卸载到 nVidia GPU。

有关于支持将 OpenMP 4.0 卸载到 nVidia GPU 的想法: [1] , [2] ,但尚未开始实现。

UPD 2017: GCC 7.1 现在支持将 OpenMP 4.5 卸载到 NVidia GPU [3] .

关于gcc - GCC 中的 OpenMP 4.0 : offload to nVidia GPU,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29297814/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com