HPC Magazine February 2014 - Discovering OpenACC 2.0 - part II
Listing 6: Typical OpenACC external routine definition in C.
// ---- in file sum.c #pragma acc routine worker void sum(int n , float *A) { int i ; float s = 0.0f ; #pragma acc worker reduction(+:s) for (i=0;i<n;i++) { s = s + A[i] ; } return s ; } //--- in file sum.h #pragma acc routine worker void sum(int n , float *A) ; //--- in file main.c float X[100][200] , Y[100] ; //... #pragma acc gang for( j=0; j<100; j++ ) { Y[j] = sum( 200 , X[j] ) ; } //...