Repository navigation
Support for non-SM UFO models: HRDCOD=1 build fails in model SMEFTsim_topU3l_MwScheme_UFO #614
Copy link
Copy link
Closed
Description
Generic issue: processes in non-SM models are not always supported (see also #615 )
Speceific issue: Processes in eg model SMEFTsim_topU3l_MwScheme_UFO can be exported through the plugin, but fail at compile time both due to failed assertions and to non-fitting parameter names, see code snippet for full error message.
[zwetters@itscrd80 P1_Sigma_SMEFTsim_topU3l_MwScheme_UFO_gg_ttx]$ make HRDCOD=1
makefile:77: CUDA_HOME was not set: using "/usr/local/cuda-11.8/"
OMPFLAGS=-fopenmp
AVX=512y
FPTYPE=d
HELINL=0
HRDCOD=1
RNDGEN=hasCurand
Building in BUILDDIR=. for tag=512y_d_inl0_hrd1_hasCurand (USEBUILDDIR is not set)
make -C ../../src -f cudacpp_src.mk
make[1]: Entering directory '/data/zwetters/modded5amc/PROC_PLUGIN_SMEFTsim_topU3l_MwScheme_UFO_3/src'
AVX=512y
g++ -O3 -std=c++17 -I. -fPIC -Wall -Wshadow -Wextra -ffast-math -fopenmp -march=skylake-avx512 -mprefer-vector-width=256 -DMGONGPU_FPTYPE_DOUBLE -DMGONGPU_FPTYPE2_DOUBLE -DMGONGPU_HARDCODE_PARAM -c Parameters_SMEFTsim_topU3l_MwScheme_UFO.cc -o Parameters_SMEFTsim_topU3l_MwScheme_UFO.o
In file included from /opt/rh/gcc-toolset-11/root/usr/include/c++/11/cassert:44,
from Parameters_SMEFTsim_topU3l_MwScheme_UFO.h:78,
from Parameters_SMEFTsim_topU3l_MwScheme_UFO.cc:8:
Parameters_SMEFTsim_topU3l_MwScheme_UFO.h:381:56: in ‘constexpr’ expansion of ‘Parameters_SMEFTsim_topU3l_MwScheme_UFO::constexpr_pow(2.0e+0, 2.5e-1)’
Parameters_SMEFTsim_topU3l_MwScheme_UFO.h:110:5: error: call to non-‘constexpr’ function ‘void __assert_fail(const char*, const char*, unsigned int, const char*)’
110 | assert( static_cast<double>( iexp ) == exp ); // NB would fail at compile time with "error: call to non-‘constexpr’ function ‘void __assert_fail'"
| ^~~~~~
/usr/include/assert.h:67:13: note: ‘void __assert_fail(const char*, const char*, unsigned int, const char*)’ declared here
67 | extern void __assert_fail (const char *__assertion, const char *__file,
| ^~~~~~~~~~~~~
Parameters_SMEFTsim_topU3l_MwScheme_UFO.h:384:58: in ‘constexpr’ expansion of ‘Parameters_SMEFTsim_topU3l_MwScheme_UFO::constexpr_pow(1.0e+1, -4.0e+1)’
Parameters_SMEFTsim_topU3l_MwScheme_UFO.h:107:5: error: call to non-‘constexpr’ function ‘void __assert_fail(const char*, const char*, unsigned int, const char*)’
107 | assert( exp >= 0 ); // NB would fail at compile time with "error: call to non-‘constexpr’ function ‘void __assert_fail'"
| ^~~~~~
/usr/include/assert.h:67:13: note: ‘void __assert_fail(const char*, const char*, unsigned int, const char*)’ declared here
67 | extern void __assert_fail (const char *__assertion, const char *__file,
| ^~~~~~~~~~~~~
In file included from Parameters_SMEFTsim_topU3l_MwScheme_UFO.cc:8:
Parameters_SMEFTsim_topU3l_MwScheme_UFO.h:385:35: error: ‘ABS’ was not declared in this scope
385 | constexpr double mdl_propCorr = ABS( mdl_linearPropCorrections ) / ( ABS( mdl_linearPropCorrections ) + mdl_nb__10__exp___m_40 );
| ^~~
Parameters_SMEFTsim_topU3l_MwScheme_UFO.h:385:72: error: ‘ABS’ was not declared in this scope
385 | constexpr double mdl_propCorr = ABS( mdl_linearPropCorrections ) / ( ABS( mdl_linearPropCorrections ) + mdl_nb__10__exp___m_40 );
| ^~~
Parameters_SMEFTsim_topU3l_MwScheme_UFO.h:398:49: error: call to non-‘constexpr’ function ‘mgOnGpu::cxsmpl<FP> mgOnGpu::conj(const mgOnGpu::cxsmpl<FP>&) [with FP = double]’
398 | constexpr cxsmpl<double> mdl_conjg__cbH = conj( mdl_cbH );
| ~~~~^~~~~~~~~~~
In file included from Parameters_SMEFTsim_topU3l_MwScheme_UFO.h:13,
from Parameters_SMEFTsim_topU3l_MwScheme_UFO.cc:8:
mgOnGpuCxtypes.h:66:3: note: ‘mgOnGpu::cxsmpl<FP> mgOnGpu::conj(const mgOnGpu::cxsmpl<FP>&) [with FP = double]’ declared here
66 | conj( const cxsmpl<FP>& c )
| ^~~~
In file included from Parameters_SMEFTsim_topU3l_MwScheme_UFO.cc:8:
Parameters_SMEFTsim_topU3l_MwScheme_UFO.h:399:50: error: call to non-‘constexpr’ function ‘mgOnGpu::cxsmpl<FP> mgOnGpu::conj(const mgOnGpu::cxsmpl<FP>&) [with FP = double]’
399 | constexpr cxsmpl<double> mdl_conjg__ctHH = conj( mdl_ctHH );
| ~~~~^~~~~~~~~~~~
In file included from Parameters_SMEFTsim_topU3l_MwScheme_UFO.h:13,
from Parameters_SMEFTsim_topU3l_MwScheme_UFO.cc:8:
mgOnGpuCxtypes.h:66:3: note: ‘mgOnGpu::cxsmpl<FP> mgOnGpu::conj(const mgOnGpu::cxsmpl<FP>&) [with FP = double]’ declared here
66 | conj( const cxsmpl<FP>& c )
| ^~~~
In file included from Parameters_SMEFTsim_topU3l_MwScheme_UFO.cc:8:
Parameters_SMEFTsim_topU3l_MwScheme_UFO.h: In function ‘const Parameters_SMEFTsim_topU3l_MwScheme_UFO_dependentCouplings::DependentCouplings_sv Parameters_SMEFTsim_topU3l_MwScheme_UFO_dependentCouplings::computeDependentCouplings_fromG(const fptype_sv&)’:
Parameters_SMEFTsim_topU3l_MwScheme_UFO.h:532:45: error: ‘aS’ was not declared in this scope
532 | const fptype_sv mdl_gHgg2 = ( - 7. * aS ) / ( 720. * M_PI );
| ^~
Parameters_SMEFTsim_topU3l_MwScheme_UFO.h:538:64: error: conversion from ‘fptype_sv’ {aka ‘__vector(4) double’} to non-scalar type ‘const mgOnGpu::cxsmpl<double>’ requested
538 | constexpr cxsmpl<double> mdl_G__exp__3 = ( ( G ) * ( G ) * ( G ) );
| ~~~~~~~~~~~~~~~~^~~~~~~~~
make[1]: *** [cudacpp_src.mk:236: Parameters_SMEFTsim_topU3l_MwScheme_UFO.o] Error 1
make[1]: Leaving directory '/data/zwetters/modded5amc/PROC_PLUGIN_SMEFTsim_topU3l_MwScheme_UFO_3/src'
make: *** [makefile:471: ../../lib/libmg5amc_common.so] Error 2
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels
Activity
[-]Full support for non-SM UFO models: Compilation[/-][+]Support for non-SM UFO models: HRDCOD=1 build fails in model SMEFTsim_topU3l_MwScheme_UFO[/+]valassi commentedon Mar 29, 2023
Hi @zeniheisser thanks a lot. Again, we clearly have a lot of work to do...
Now, about this specific one. I am confused, because I cannot recall the status of non-SM models, especially with respect to HRDCOD=1.
Maybe one or two questions to start with: does the build succeed if you go with the default HRDCOD=0? And why did you try HRDCOD=1, is it a functional requirement, an attempt to improve computational performance, or was this just a "random" test? (Good that you reported the issue anyway!).
Let me expand:
constexpr, and the addition of a full "simple complex class" with constexpr arithmetics (see Improved handling of hardcoded parameters using the cxsmpl class #359)Anyway, @zeniheisser : specifically for reweighting, I think we had discussed that it would be better to leave freely-floating parameter variables in the code to allow several reweightings with different parameters sets using the same source code and the same build... right? In this case, my impression is that you should mainly focus on HRDCOD=0, and fixing this issue with HRDCOD=1 becomes lower priority. Do you agree?
zeniheisser commentedon Mar 30, 2023
Hi @valassi , I've added issue #616 regarding the compilation issues for non-hardcoded parameter sets.
For the reweighting project, we do indeed want HRDCOD=0, since we want online reading of tho param_card.
valassi commentedon Mar 30, 2023
Thanks @zeniheisser!
Ok as mentioned in #616 this says it all
In other words, about my long and confused post above:
Let's follow up HRDCOD=0 (high priority!) in #616 (and later #439), and HRDCOD=1 (low priority!) here in #614
valassi commentedon Apr 7, 2023
Cleaning up issues. I opened #634 but I believe it is a duplicate of this #614 (for HRDCOD=1, while #616 is for HRDCOD=0).
I believe Zenny means this process
9788926
I opened a WIP PR #632 to investigate that. For details of the build errors, see also 44a78a8
valassi commentedon May 22, 2023
(Note this is related to #39 - also to #23, but I have now closed the latter)
valassi commentedon Feb 29, 2024
I have retried the smeft_gg_tttt builds in PR #632 after merging in also the latest 'susy2' fixes from PR #625. There are still many failures for both HRDCOD=0 (#616) and HRDCOD=1 (#614).
Concerning HRDCOD=1, this is a (non-exhaustive?) list:
[smeft] regenerate smeft_gg_tttt.sa after merging susy2 - generation …
[smeft] regenerate smeft_gg_tttt.sa after merging susy2 - generation …
[smeft2] regenerate smeft_gg_tttt after merging susy - codegen is ok …
[smeft2] regenerate smeft_gg_tttt after merging susy - codegen is ok …
valassi commentedon Mar 19, 2024
This might be related to clang formatting issue #633?
[smeft2] regenerate smeft_gg_tttt.sa - now exponent literals are fixed …
[smeft2] in smeft_gg_tttt.sa, manually fix mdl_G__exp__3 (need backport)
[smeft2] in smeft_gg_tttt, handle negative exponents in constexpr_pow
[smeft2] in smeft_gg_tttt, complete the fix for HRDCOD=1 builds madgr…
[smeft2] in smeft_gg_tttt.sa, add some tests for constexpr_pow with n…
[smeft2] in CODEGEN, backport from smeft_gg_tttt the final HRDCOD=1 f…
valassi commentedon Mar 20, 2024
Hi @zeniheisser this is in principle also fixed in PR #632. Thanks for reporting also this one!
In summary, the folowing issues had to be fixed (I may be forgetting some)
I am following up in PR #632, where there are still a few CI issues (fixing one process breaks another, as usual)
I will close this for the time being
cc @oliviermattelaer @roiser