McCode icon indicating copy to clipboard operation
McCode copied to clipboard

OpenACC GPU + SasView issue: atan / atanf become masked

Open willend opened this issue 3 months ago • 0 comments

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:

TwinKB_ML.comp.txt

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.

willend avatar Apr 15 '24 13:04 willend