Skip to content

wrong type argument to unary minus (FFV functions should not use "-COUPs" as argument) #628

@valassi

Description

@valassi

wrong type argument to unary minus (FFV functions should not use "-COUPs" as argument)

I have seen this issue in two places

For SUSY for instance
586195d

The CUDA_HOME=none HRDCOD=0 build also fails with
ccache g++  -O3  -std=c++17 -I. -I../../src -I../../../../../tools  -Wall -Wshadow -Wextra -ffast-math  -fopenmp -march=skylake-avx512 -mprefer-vector-width=256  -DMGONGPU_FPTYPE_DOUBLE -DMGONGPU_FPTYPE2_DOUBLE -DMGONGPU_HARDCODE_PARAM -DMGONGPU_HAS_NO_CURAND  -fPIC -c CPPProcess.cc -o CPPProcess.o
CPPProcess.cc: In function ‘void mg5amcCpu::calculate_wavefunctions(int, const fptype*, const fptype*, mgOnGpu::fptype*, fptype_sv*, int)’:
CPPProcess.cc:241:81: error: wrong type argument to unary minus
  241 |       FFV1_0<W_ACCESS, A_ACCESS, CD_ACCESS>( w_fp[3], w_fp[2], w_fp[4], -COUPs[1], &amp_fp[0] );
      |                                                                          ~~~~~~~^
CPPProcess.cc:251:62: error: wrong type argument to unary minus
  251 |       FFV1_1<W_ACCESS, CD_ACCESS>( w_fp[2], w_fp[0], -COUPs[1], cIPD[0], cIPD[1], w_fp[4] );
      |                                                       ~~~~~~~^
CPPProcess.cc:254:81: error: wrong type argument to unary minus
  254 |       FFV1_0<W_ACCESS, A_ACCESS, CD_ACCESS>( w_fp[3], w_fp[4], w_fp[1], -COUPs[1], &amp_fp[0] );
      |                                                                          ~~~~~~~^
CPPProcess.cc:263:62: error: wrong type argument to unary minus
  263 |       FFV1_2<W_ACCESS, CD_ACCESS>( w_fp[3], w_fp[0], -COUPs[1], cIPD[0], cIPD[1], w_fp[4] );
      |                                                       ~~~~~~~^
CPPProcess.cc:266:81: error: wrong type argument to unary minus
  266 |       FFV1_0<W_ACCESS, A_ACCESS, CD_ACCESS>( w_fp[4], w_fp[2], w_fp[1], -COUPs[1], &amp_fp[0] );
      |                                                                          ~~~~~~~^

This is potentially tough to solve. I see two ways

  • either we keep the APIs the same, but then the value inside COUPs[1] must be replaced by their opposite... this whoever only works if ALL FFV functions use the same sign for the coupling
  • alternatively (ugly, cumbersome - and worse performance), must pass an extra parameter to the FFV functions to say that the couplings must be taken with the opposite sign

Copying @zeniheisser as I understand this might be a showstopper for SUSY studies. Sopying also @oliviermattelaer

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions