file name is “pi.c”.
#include<stdio.h>
#include<math.h>
#include<time.h>
#define N (1000000000)
int main(void){
double a=0.0, x, dx=1.0/(double)N, s=0.0;
double x_abc=0.0;
long long i;
clock_t start, stop;
double elapsedtime;
start = clock();
#pragma acc kernels
for(i=0; i<N; i++){
x = ((double)i+0.5)*dx;
a += sqrt(1.0-x*x) * dx;
}
stop = clock();
elapsedtime = (double)(stop-start)/CLOCKS_PER_SEC;
printf("pi = %15.13f\n elapsed time = %f sec\n",4.0*a, elapsedtime);
return 0;
}
My compilation environment is windows10 64.
PGI$ pgcc -acc pi.c is OK.
but
PGI$ pgcc -acc pi.c
C:\temp\pgcc2aLeAeVmt4GFlP.s: Assembler messages:
C:\temp\pgcc2aLeAeVmt4GFlP.s:298: Error: bad register name %xmm18' C:\temp\pgcc2aLeAeVmt4GFlP.s:299: Error: bad register name
%xmm16’
C:\temp\pgcc2aLeAeVmt4GFlP.s:300: Error: bad register name %xmm17' C:\temp\pgcc2aLeAeVmt4GFlP.s:305: Error: bad register name
%xmm19’
C:\temp\pgcc2aLeAeVmt4GFlP.s:306: Error: bad register name %xmm17' C:\temp\pgcc2aLeAeVmt4GFlP.s:307: Error: bad register name
%xmm16’
C:\temp\pgcc2aLeAeVmt4GFlP.s:308: Error: bad register name %xmm18' C:\temp\pgcc2aLeAeVmt4GFlP.s:309: Error: bad register name
%xmm21’
C:\temp\pgcc2aLeAeVmt4GFlP.s:310: Error: bad register name %xmm19' C:\temp\pgcc2aLeAeVmt4GFlP.s:311: Error: bad register name
%xmm16’
C:\temp\pgcc2aLeAeVmt4GFlP.s:312: Error: bad register name %xmm19' C:\temp\pgcc2aLeAeVmt4GFlP.s:336: Error: bad register name
%xmm16’
C:\temp\pgcc2aLeAeVmt4GFlP.s:337: Error: bad register name %xmm16' C:\temp\pgcc2aLeAeVmt4GFlP.s:338: Error: bad register name
%xmm16’
why …?