CUDA 驱动程序与 nvidia hpc sdk 20.7 中的 nvfortran 编译器兼容

CUDA 驱动程序与 nvidia hpc sdk 20.7 中的 nvfortran 编译器兼容

我已经安装了 nvidia 编译器 (nvcc、nvfortran)。我从NVIDIA HPC SDK v20.7 网站。然后我用 nvfortran 编译了非 cuda 代码,运行良好。但是当我编译第一个基于 cuda 的示例时文档,它会引发错误:

nvcc-Error-CUDA version 8.0 was not installed with this HPC SDK: /opt/nvidia/hpc_sdk/Linux_x86_64/20.7/cuda/8.0/bin

然后我就跑nvidia-smi

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 375.66                 Driver Version: 375.66                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Quadro K600         Off  | 0000:03:00.0      On |                  N/A |
| 25%   46C    P8    N/A /  N/A |    589MiB /   973MiB |      3%      Default |
+-------------------------------+----------------------+----------------------+

因此我的 NVIDIA 驱动程序版本是 375.66。根据表格1在 cuda 工具包页面中,此驱动程序版本需要 cuda 8.0(或更低版本)工具包。

所以我的问题是 -

(1)带有 NVIDIA GPU 设备的 Linux 系统是否预装了 CUDA 工具包?这些步骤为了检查 CUDA 是否已安装,我打开了/usr/local文件夹,但那里没有任何cudaX.Y文件夹。

(2) 鉴于我有此版本的 NVIDIA 驱动程序,我应该继续下载 cuda8.0 吗?如果我这样做,那么使用 HPC SDK v20.7 安装的 nv 编译器可能仍然无法工作 - 根据安装指南,提供对 cuda10.1、10.2 和 11 的独立支持。这是否意味着它不支持 CUDA8.0?如果是,我应该下载新的驱动程序吗?

(3) 我只想开始 GPU 编程,那么使用我拥有的驱动程序可以实现吗?我可以使用任何编译器。pg 编译器可以工作吗?

有关我的系统的更多信息 -

shell 命令nvfortran --version

nvfortran 20.7-0 LLVM 64-bit target on x86-64 Linux -tp sandybridge 
NVIDIA Compilers and Tools
Copyright (c) 2020, NVIDIA CORPORATION.  All rights reserved.

shell 命令pgfortran --version

pgfortran (aka nvfortran) 20.7-0 LLVM 64-bit target on x86-64 Linux -tp sandybridge 
PGI Compilers and Tools
Copyright (c) 2020, NVIDIA CORPORATION.  All rights reserved.

shell 命令cat /proc/driver/nvidia/version

NVRM version: NVIDIA UNIX x86_64 Kernel Module  375.66  Mon May  1 15:29:16 PDT 2017
GCC version:  gcc version 6.2.0 20161005 (Ubuntu 6.2.0-5ubuntu12) 

答案1

我相信要解决您的紧急问题,您需要找到或安装与您的驱动程序兼容的 CUDA 环境,然后确保CUDA_HOME环境变量指向该环境的根目录,然后重试构建。

我的专业不是 Fortran,但我刚刚为我所在机构的一位用户处理了一个相关案例。在我的案例中,系统安装了与 NVidia HPC SDK 分开的 CUDA 9.1,还安装了 SDK 版本 20.9,与 CUDA 10.1、10.2 和 11.0 捆绑在一起,并且系统具有版本 418 NVidia 驱动程序,该驱动程序可与 CUDA 10.1 配合使用,但不能与 10.2 或 11.0 配合使用。

就我而言,该nvfortran命令不会针对位于 /usr/local/cuda 的 CUDA 9.1 进行构建。

但是,我们可以通过设置CUDA_HOME=/opt/nvidia/hpc_sdk/Linux_x86_64/20.9/cuda/10.1并重新运行nvfortran命令来构建东西。

需要额外小心以确保您链接到正确的 Cuda 库,其中许多库(就我而言)位于 中/opt/nvidia/hpc_sdk/Linux_x86_64/20.9/math_libs/10.1/lib64

对于您的情况,如果 HPC SDK 20.7 版本与 CUDA 8.0 捆绑在一起,那么CUDA_HOME正确设置可能是您需要做的全部工作。

不过,SDK 20.7 版本可能与旧版本的 CUDA 不兼容,您可能需要更新的 CUDA 和更新的驱动程序才能nvfortran工作。

稍微解释一下您的其他一些担忧,配备 NVidia 的 Linux 系统通常不预装 CUDA 工具,尽管我认为有些供应商会这样做。与大多数 Linux 产品一样,详细的答案在某种程度上取决于您的系统配置,正确的路径和环境变量组合通常可以让您实现目标。

如果您刚刚开始,您可能希望跳过 HPC SDK 并从本机 CUDA 开始。它的级别较低,可能不适合 Fortran,但您可能只需安装一个 CUDA 即可获得工作环境。

相关内容