McCode
McCode copied to clipboard
OpenACC GPU + SasView issue: atan / atanf become masked
It seems our #define's from OpenACC and SasView together in some cases end up masking / undefining the arctan function, see below error message (pasted in full even further below)
"cylinder", line 1802: error: identifier "atan" is undefined
xi = -atan((Z0*b*b)/(Y0*a*a));
^
"cylinder", line 1802: error: identifier "atanf" is undefined
xi = -atan((Z0*b*b)/(Y0*a*a));
^
Reproduce with the attached instrument file and McXtrace 3.2 or current McXtrace "nightly".
SAXS_saxlab_wCylAniso.instr.txt
A workaround for now is to use atan2(angle,1) in place of atan where needed, see attached component:
mxrun -c SAXS_saxlab_wCylAniso.instr --openacc
INFO: No output directory specified (--dir)
INFO: Using directory: "SAXS_saxlab_wCylAniso_20240415_145633"
INFO: Regenerating c-file: SAXS_saxlab_wCylAniso.c
-----------------------------------------------------------
Generating single GPU kernel or single CPU section layout:
-> SPLIT N at component sasview_cylinder_aniso
-----------------------------------------------------------
Generating GPU/CPU -DFUNNEL layout:
-> SPLIT within buffer at component sasview_cylinder_aniso
-----------------------------------------------------------
CFLAGS=
INFO: Recompiling: ./SAXS_saxlab_wCylAniso.out
"./SAXS_saxlab_wCylAniso.c", line 6156: warning: variable "ret" was declared but never referenced [declared_but_not_referenced]
int ret=1,stat=0,plane_stat=0;
^
Remark: individual warnings can be suppressed with "--diag_suppress <warning-name>"
"./SAXS_saxlab_wCylAniso.c", line 6329: warning: variable "D" was declared but never referenced [declared_but_not_referenced]
double A,B,C,D,k;
^
"cylinder", line 557: warning: variable "tc2" was set but never used [set_but_not_used]
Coords tc1, tc2;
^
"cylinder", line 545: warning: variable "current_setpos_index" was declared but never referenced [declared_but_not_referenced]
int current_setpos_index = 1;
^
"cylinder", line 587: warning: variable "current_setpos_index" was declared but never referenced [declared_but_not_referenced]
int current_setpos_index = 2;
^
"cylinder", line 647: warning: variable "current_setpos_index" was declared but never referenced [declared_but_not_referenced]
int current_setpos_index = 3;
^
"cylinder", line 697: warning: variable "current_setpos_index" was declared but never referenced [declared_but_not_referenced]
int current_setpos_index = 4;
^
"cylinder", line 748: warning: variable "current_setpos_index" was declared but never referenced [declared_but_not_referenced]
int current_setpos_index = 5;
^
"cylinder", line 786: warning: variable "current_setpos_index" was declared but never referenced [declared_but_not_referenced]
int current_setpos_index = 6;
^
"cylinder", line 824: warning: variable "current_setpos_index" was declared but never referenced [declared_but_not_referenced]
int current_setpos_index = 7;
^
"cylinder", line 862: warning: variable "current_setpos_index" was declared but never referenced [declared_but_not_referenced]
int current_setpos_index = 8;
^
"cylinder", line 912: warning: variable "current_setpos_index" was declared but never referenced [declared_but_not_referenced]
int current_setpos_index = 9;
^
"cylinder", line 950: warning: variable "current_setpos_index" was declared but never referenced [declared_but_not_referenced]
int current_setpos_index = 10;
^
"cylinder", line 1001: warning: variable "current_setpos_index" was declared but never referenced [declared_but_not_referenced]
int current_setpos_index = 11;
^
"cylinder", line 1052: warning: variable "current_setpos_index" was declared but never referenced [declared_but_not_referenced]
int current_setpos_index = 12;
^
"cylinder", line 1104: warning: variable "current_setpos_index" was declared but never referenced [declared_but_not_referenced]
int current_setpos_index = 13;
^
"cylinder", line 1155: warning: variable "current_setpos_index" was declared but never referenced [declared_but_not_referenced]
int current_setpos_index = 14;
^
"cylinder", line 1207: warning: variable "current_setpos_index" was declared but never referenced [declared_but_not_referenced]
int current_setpos_index = 15;
^
"cylinder", line 1259: warning: variable "current_setpos_index" was declared but never referenced [declared_but_not_referenced]
int current_setpos_index = 16;
^
"cylinder", line 1310: warning: variable "current_setpos_index" was declared but never referenced [declared_but_not_referenced]
int current_setpos_index = 17;
^
"cylinder", line 1362: warning: variable "current_setpos_index" was declared but never referenced [declared_but_not_referenced]
int current_setpos_index = 18;
^
"cylinder", line 1427: warning: variable "current_setpos_index" was declared but never referenced [declared_but_not_referenced]
int current_setpos_index = 19;
^
"cylinder", line 1555: warning: variable "status" was set but never used [set_but_not_used]
int status=0;
^
"cylinder", line 1682: warning: variable "i" was declared but never referenced [declared_but_not_referenced]
int i;
^
"cylinder", line 1802: error: identifier "atan" is undefined
xi = -atan((Z0*b*b)/(Y0*a*a));
^
"cylinder", line 1802: error: identifier "atanf" is undefined
xi = -atan((Z0*b*b)/(Y0*a*a));
^
"cylinder", line 1805: warning: variable "status" was set but never used [set_but_not_used]
int status=0;
^
"cylinder", line 1853: warning: variable "i" was declared but never referenced [declared_but_not_referenced]
int i,j;
^
"cylinder", line 1853: warning: variable "j" was declared but never referenced [declared_but_not_referenced]
int i,j;
^
"cylinder", line 1854: warning: variable "p1" was declared but never referenced [declared_but_not_referenced]
double *p1,*p2,*p3;
^
"cylinder", line 1854: warning: variable "p2" was declared but never referenced [declared_but_not_referenced]
double *p1,*p2,*p3;
^
"cylinder", line 1854: warning: variable "p3" was declared but never referenced [declared_but_not_referenced]
double *p1,*p2,*p3;
^
"cylinder", line 2274: warning: variable "z1" was set but never used [set_but_not_used]
double xx,yy,x1,y1,z1;
^
"cylinder", line 2276: warning: variable "F1" was declared but never referenced [declared_but_not_referenced]
double F1=1.0;
^
"cylinder", line 2776: error: identifier "atan" is undefined
dSingle= (0.5*lambda)/cos( acos(sqrt(ex2)/sqrt(ex2 + c*c + 2*c*ex1 + ex1*ex1) ) - atan((ex1*b*b)/(sqrt(ex2)*a*a)) );
^
"cylinder", line 2776: error: identifier "atanf" is undefined
dSingle= (0.5*lambda)/cos( acos(sqrt(ex2)/sqrt(ex2 + c*c + 2*c*ex1 + ex1*ex1) ) - atan((ex1*b*b)/(sqrt(ex2)*a*a)) );
^
"cylinder", line 2771: warning: variable "dSingle" was set but never used [set_but_not_used]
double dSingle,lambda; // dSingle - thickness of one layer of the multilayer, AA
^
"cylinder", line 2612: warning: variable "A" was declared but never referenced [declared_but_not_referenced]
double A,B,C,D,l01,l11,l02,l12;
^
"cylinder", line 2612: warning: variable "B" was declared but never referenced [declared_but_not_referenced]
double A,B,C,D,l01,l11,l02,l12;
^
"cylinder", line 2612: warning: variable "C" was declared but never referenced [declared_but_not_referenced]
double A,B,C,D,l01,l11,l02,l12;
^
"cylinder", line 2612: warning: variable "D" was declared but never referenced [declared_but_not_referenced]
double A,B,C,D,l01,l11,l02,l12;
^
"cylinder", line 2613: warning: variable "x_test1" was set but never used [set_but_not_used]
double x_test1,y_test1,z_test1,x_test2,y_test2,z_test2,dist; // intersection with the elliptical surface
^
"cylinder", line 2613: warning: variable "y_test2" was set but never used [set_but_not_used]
double x_test1,y_test1,z_test1,x_test2,y_test2,z_test2,dist; // intersection with the elliptical surface
^
"cylinder", line 2613: warning: variable "dist" was declared but never referenced [declared_but_not_referenced]
double x_test1,y_test1,z_test1,x_test2,y_test2,z_test2,dist; // intersection with the elliptical surface
^
"cylinder", line 2850: warning: variable "k" was declared but never referenced [declared_but_not_referenced]
int i,j,k;
^
"cylinder", line 2851: warning: variable "e" was declared but never referenced [declared_but_not_referenced]
double e,p2;
^
"cylinder", line 2959: warning: variable "d_Phi" was declared but never referenced [declared_but_not_referenced]
double l0, l1, k, l_full, l, dl, d_Phi;
^
"cylinder", line 2960: warning: variable "axis_x" was declared but never referenced [declared_but_not_referenced]
double aim_x=0, aim_y=0, aim_z=1, axis_x, axis_y, axis_z;
^
"cylinder", line 2960: warning: variable "axis_y" was declared but never referenced [declared_but_not_referenced]
double aim_x=0, aim_y=0, aim_z=1, axis_x, axis_y, axis_z;
^
"cylinder", line 2960: warning: variable "axis_z" was declared but never referenced [declared_but_not_referenced]
double aim_x=0, aim_y=0, aim_z=1, axis_x, axis_y, axis_z;
^
"cylinder", line 2961: warning: variable "f" was declared but never referenced [declared_but_not_referenced]
double f, solid_angle, kx_i, ky_i, kz_i, q, qx, qy, qz;
^
"cylinder", line 2961: warning: variable "q" was set but never used [set_but_not_used]
double f, solid_angle, kx_i, ky_i, kz_i, q, qx, qy, qz;
^
"cylinder", line 4502: warning: variable "j" was declared but never referenced [declared_but_not_referenced]
int i,j,N=10;
^
"cylinder", line 4502: warning: variable "N" was declared but never referenced [declared_but_not_referenced]
int i,j,N=10;
^
"cylinder", line 4999: warning: variable "t" was declared but never referenced [declared_but_not_referenced]
time_t t;
^
"cylinder", line 5000: warning: variable "ct" was set but never used [set_but_not_used]
clock_t ct;
^
"./SAXS_saxlab_wCylAniso.c", line 1465: warning: variable "mcstartdate" was set but never used [set_but_not_used]
static long mcstartdate = 0; /* start simulation time */
^
"./SAXS_saxlab_wCylAniso.c", line 2859: warning: function "strcpy_valid" was declared but never referenced [declared_but_not_referenced]
static char *strcpy_valid(char *valid, char *original)
^
"./SAXS_saxlab_wCylAniso.c", line 8363: warning: function "qabc_rotation" was declared but never referenced [declared_but_not_referenced]
qabc_rotation(
^
"./SAXS_saxlab_wCylAniso.c", line 8409: warning: function "qabc_apply" was declared but never referenced [declared_but_not_referenced]
qabc_apply(
^
4 errors detected in the compilation of "./SAXS_saxlab_wCylAniso.c".
INFO: call to nvc failed with Command 'nvc -o ./SAXS_saxlab_wCylAniso.out ./SAXS_saxlab_wCylAniso.c -lm -fast -Minfo=accel -acc=gpu -gpu=managed -DOPENACC ' returned non-zero exit status 2.
Traceback (most recent call last):
File "/u/data/pkwi/McXtrace/mcxtrace/3.x-dev/tools/Python/mxrun/mxrun.py", line 569, in <module>
main()
File "/u/data/pkwi/McXtrace/mcxtrace/3.x-dev/tools/Python/mxrun/mxrun.py", line 483, in main
mcstas.prepare(options)
File "/u/data/pkwi/McXtrace/mcxtrace/3.x-dev/tools/Python/mxrun/mccode.py", line 245, in prepare
Process(lexer.quote(options.cc)).run(args)
File "/u/data/pkwi/McXtrace/mcxtrace/3.x-dev/tools/Python/mxrun/mccode.py", line 77, in run
raise err
File "/u/data/pkwi/McXtrace/mcxtrace/3.x-dev/tools/Python/mxrun/mccode.py", line 73, in run
proc = run(command, shell=True, check=True, text=True, capture_output=pipe)
File "/u/data/pkwi/McXtrace/mcxtrace/3.x-dev/miniconda3/lib/python3.10/subprocess.py", line 524, in run
raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command 'nvc -o ./SAXS_saxlab_wCylAniso.out ./SAXS_saxlab_wCylAniso.c -lm -fast -Minfo=accel -acc=gpu -gpu=managed -DOPENACC ' returned non-zero exit status 2.