标签: pgi-accelerator

使用 AMD GPU 编译 OpenACC

我无法使用 AMD Radeon R7 M360 编译它。我已经用多核编译它,如下所示,但谁能告诉我如何用 GPU 编译它,我试过 -ta=amd64/radeon 但没有一个工作。您可以在此图像中看到代码。我编译它

pgc++ -V -Minfo=accel -acc -ta=multicore sum.cpp -o /home/fawad/Desktop/sum

在此处输入图片说明

主要的:

 7, Generating Multicore code
      9, #pragma acc loop gang
  7, Generating reduction(+:sum)
 10, Loop is parallelizable
Run Code Online (Sandbox Code Playgroud)

我需要有人指导我如何使用 AMD 进行编译。我正在使用 PGI 编译器。

c++ amd pgi openacc pgi-accelerator

2
推荐指数
1
解决办法
1425
查看次数

如何使用 C/OpenACC 和 PGI 编译器声明全局动态数组

我正在尝试运行一个简单的测试用例,其中动态分配的数组A是外部定义的,并使用 OpenACC 上传到 GPU。一切都与 PGI 编译器有关。

我的 header.h文件:

     extern int *A;
     #pragma acc declare create(A)
Run Code Online (Sandbox Code Playgroud)

然后,我的header.c实现:

    int *A;
    #pragma acc declare copyin(A)
Run Code Online (Sandbox Code Playgroud)

然后,在main.c我有

#include "header.h"
int main(int argc, char* argv[]){
        printf("main() start\n");
        int sum=0;
        int N=0;
        if(argc==1){ 
          printf("usage: ./main.exe N");
        }else{
          N=atoi(argv[1]);  
        }
        printf("N =%d\n", N);
        A=(int*)malloc(N*sizeof(int));
        for(int i=0;i<N;i++){A[i]=i;}
        printf("almost data region\n");
        #pragma acc data copy(sum)
        {
             printf("inside data region\n");
             #pragma acc update device(A[0:N])
             #pragma acc parallel loop reduction(+:sum)
             for(int i=0;i<N;i++){
                sum+=A[i];
             } …
Run Code Online (Sandbox Code Playgroud)

c cuda pgi openacc pgi-accelerator

0
推荐指数
1
解决办法
1193
查看次数

标签 统计

openacc ×2

pgi ×2

pgi-accelerator ×2

amd ×1

c ×1

c++ ×1

cuda ×1