(1).安装Linux版英韦达驱动
1.更新库
sudo apt-get update
2. 卸载原有的英伟达驱动:
sudo apt-get remove --purge nvidia*
3.安装驱动
sudo ubuntu-drivers devices
sudo ubuntu-drivers autoinstall
重启后在终端输入 nvidia-smi 返回版本信息则说明驱动安装成功
(2).安装hpc-sdk高性能编译器
英韦达官网 NVIDIA HPC SDK Current Release Downloads | NVIDIA Developer 下载最新hpc-sdk编译器安装压缩包
官方安装手册:https://docs.nvidia.com/hpc-sdk/hpc-sdk-install-guide/index.html
配置环境变量
sudo gedit ~/.bashrc
文末添加以下内容:
export NVARCH=`uname -s`_`uname -m`
export NVCOMPILERS=/opt/nvidia/hpc_sdk
export PATH=$NVCOMPILERS/$NVARCH/22.7/compilers/bin:$PATH
export MANPATH=$MANPATH:$NVCOMPILERS/$NVARCH/22.7/compilers/man
退出 运行 source ~/.bashrc
验证
pgcc -V
nvc -V 返回版本信息说明安装成功
(3).验证hpc-sdk已经安装完成
1.创建一个.c文件
touch test.c
2.打开.c文件
gedit test.c
3.输入以下代码
#include <stdio.h>
#define N 1024
//#include <openacc.h>
int main(){
int i,a[N],b[N],c[N];
for(i = 0;i<N;++i){
a[i] = 0;
b[i] = c[i] = i;
}
//#pragma acc parallel num_gangs(1024) num_workers(32)
{
//#pragma acc loop
for(i = 0;i<N;i++){
a[i] = b[i] + c[i];
}
//#pragma acc loop independent
for(i = 1;i<N;i++){
b[i]=b[i-1];
}
for(i = 0;i<2000000000;i++){
//a[i] = b[i] + c[i];
}
}
//printf("a[N-1] = %d\n",a[N-1]);
printf("b[2] = %d\n",b[1023]);
return 0;
}
4.分别用gcc和hpc编译代码
gcc test.c -o test1
nvc -o test2 -acc test.c
test1为普通gcc编译器编译的可执行文件 test2为hpc使用了openacc指令编译出的可执行文件
终端运行./test1 后再运行./test2
如果发现test1运行速度高于test2则说明可以使用openacc指令