OpenAcc环境搭建

(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指令

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值