-
Notifications
You must be signed in to change notification settings - Fork 33
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Multi-SIMD-mode executables? #177
Comments
Hi @oliviermattelaer as we briefly discussed today:
This is also related to Makefile cleanup #362 |
One important point, relevant to the Bridge:
So in practice a multiSIMD C++ library is perfectly compatible with the Fortran MadEvent integration through the Bridge |
…n disabled) Note the following compilation warning ccache /usr/local/cuda-11.6/bin/nvcc -O3 -lineinfo -I. -I../../src -I../../../../../tools -I/usr/local/cuda-11.6/include/ -DUSE_NVTX -gencode arch=compute_70,code=compute_70 -gencode arch=compute_70,code=sm_70 -use_fast_math -std=c++17 -ccbin /cvmfs/sft.cern.ch/lcg/releases/gcc/10.2.0-c44b3/x86_64-centos7/bin/g++ -DMGONGPU_FPTYPE_DOUBLE -DMGONGPU_HARDCODE_CIPC -Xcompiler -fPIC -c gCPPProcess.cu -o gCPPProcess.o gCPPProcess.cu(53): warning madgraph5#177-D: variable "mg5amcGpu::cIPC" was declared but never referenced
This is a spinoff of vectorisation issue #71 and a followup to the big PR #171.
(The first part of this description also serves as documentation of what is available there now!).
The current vectorisation infrastructure supports five SIMD modes, which correspond to different -march options:
Note that the above flags are GLOBAL. They are applied to all files in src and in the PSigna directory.
In the code, #ifdef's for SSE4_2, AVX2_, AVX512VL and MGONGPU_PVW512 determine how the code is built (i.e. they determine the neppV parameter, see issue #176). Note in particular that
Note also that the code already does have a basic check to fail gently if the desired avx mode is not supported by the present hardware. (This was added after a few tests crashed on the github CI - as the CI seems to have some AVX512 nodes but also some nodes that do not support it).
Presently, the build infrastructure for the vectorized builds is controled by two optional external parameters AVX and USEBUILDDIR and it works as follows
(The second part of this description below is a possible proposed change)
An alternative to the model above is to build a single (larger) executable supporting multi-simd mode:
In practice, one whould choose however how much of the implementation must be duplicated
It should be noted however that these large multi-mode binaries are not typically what the LHC experiments do in their builds
One advantage of this multi-mode build could be for studies of becnhamrking (see issue #157).
Very low priority. Probably not be implemented at all. I file this in any case so I do not forget (and esepcially Iadded the documentation of how this works now).
The text was updated successfully, but these errors were encountered: