我无法使用 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 编译器。
我正在尝试运行一个简单的测试用例,其中动态分配的数组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)