Improved handling of hardcoded parameters using the cxsmpl class#359
Improved handling of hardcoded parameters using the cxsmpl class#359valassi merged 23 commits intomadgraph5:masterfrom
Conversation
…se it for hardcoded parameters
…so if cxtype is not cxsmpl (all builds well wiith HRDCOD=0,1 and FPTYPE=f,d in all avxs)
…ER HARDCODING OF PARAMETERS
… CONSTEXPR CXSMPL OPERATORS
|
PS The performance of all the code (in both hardcoded and non hardcoded) must also be carefully reevaluated. There are quite a few more tempolated functons now, but they were probably inlined before. And some references have now become passing by value. To be assessed. |
…cpp (prepare to change it)
…are in the same order!
…rip trailing ';' where necesary
…ting performance comparison
…RDCOD=1 - a bit better, but not that different
…=1 - a bit better, but not that different (Note: building from scratch 'make -j' and running tests took 1h30... essentially ~30+ minutes for each gCPPProcess.o) STARTED AT Thu Jan 27 12:47:54 CET 2022 ENDED AT Thu Jan 27 14:00:03 CET 2022
…lts: not very different, keep hrd0 as default
|
This is now complete. It is hard to say whether there is a performance advantage at all. (For the less complex processes, it seems that not hardcoding is faster...). Maybe, the more complex the process, the more interesting it is to have hardcoded parameters. This is a summary table In any case there is a slight reduction of register pressure in CUDA (not show here, see the logfiles. Keep the hrdcod=0 as default. I am self merging this anyway, as it does not harm, the hardcoded parameters are one option. (The only thing that changed is that the cxsmpl class is used for parameters always, even if parameters are not hardcoded: not a problem IMO, but can be easily changed if needed). |
|
All tests pass, I am self merging |
This is a WIP PR implementing #353 (improved handling of hardcoded parameters using the cxsmpl class).
The rationale is that hardcoding parameters gets a significant runtime boost for cuda and c++.
This is a followup to PR #306. There I had done a first proof of concept, but the full automatic generation of hardcoded parameters was not possible, because some complex parameters are computed in the header, and this requires constexpr complex arithmetics which is not there in std::complex.
This is now possible because
There is now a full proof of concept for all Parameters ardcoded in Parameters.h. This is WIP because I still need to move this to code generation (and try it out on different models, even including EFT for instance).