我是不是必须在 Ubuntu 18.04 上从源代码构建 gcc-10 才能卸载 OpenMP GPU 目标?

Posted

技术标签:

【中文标题】我是不是必须在 Ubuntu 18.04 上从源代码构建 gcc-10 才能卸载 OpenMP GPU 目标?【英文标题】:Do I have to build gcc-10 from source on Ubuntu 18.04 to have OpenMP GPU target offload?我是否必须在 Ubuntu 18.04 上从源代码构建 gcc-10 才能卸载 OpenMP GPU 目标? 【发布时间】:2021-02-22 10:35:07 【问题描述】:

当我在 Ubuntu 18.04 上使用默认存储库中的 gcc-10(和 9、8、7)时,omp_get_num_devices() 返回 0,即使我有:

paul@desktop:~$ nvidia-smi
...
| NVIDIA-SMI 450.80.02    Driver Version: 450.80.02    CUDA Version: 11.0     |

我是否需要特殊版本的 gcc 才能获得目标卸载功能?我的项目的特殊构建过程?

【问题讨论】:

【参考方案1】:

缺少的是nvptx-tools。我安装了它们:

sudo apt install nvptx-tools libgomp-plugin-nvptx1 gcc-10-offload-nvptx

并且omp_get_num_devices() 现在返回1。不幸的是,仍然缺少一些东西来阻止带有卸载指令的代码链接。

请记住,gcc-10 在 Ubuntu 18.04 中不受官方支持,因此必须使用测试存储库

【讨论】:

试试这个,也许? ***.com/questions/57206552/… @Richard 我尝试了所有我能找到的东西。我仍然不确定,如果我需要自定义 gcc 构建或只是不同的链接器选项。我发布了一个更详细的问题:***.com/questions/64781646 您好,您解决了这个问题吗?实际上,我正在使用 WSL Ubuntu 并尝试使用 OpenMP 或 OpenACC 进行 GPU 并行化,但不知何故我无法使用它。所以我想知道你是否可以使用 OpenMP 或 OpenACC。 @ChangseokMa 我没有时间解决这个问题。当我有时间解决这个问题时,我会发布解决方案。

以上是关于我是不是必须在 Ubuntu 18.04 上从源代码构建 gcc-10 才能卸载 OpenMP GPU 目标?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Ubuntu 18.04 Server上安装Redis

在 Ubuntu 14.04 上从源代码编译时如何链接到 opencv 3.0?

fgets 无法在 Ubuntu 20.04 上从管道读取两次

sh 在Ubuntu 14.04上从源代码安装Nginx,OpenSSL和ngx_pagespeed

在 linux 上从源代码编译 LLVM

sh 使用SystemD在基于Fedora / RedHat的Linux上从源安装MongoDB