Let's create a simple README file (or modify the main repository README) with an easy-to-follow markdown user documentation.
The objective of this documentation is to instruct any new MadGraph7 user how it works, covering the following topics:
- installation:
- prerequisites: python 3.12+ (+ tomllib for MadSpace), C++ 20 (e.g. GCC 14+), others?
- of MadGraph7 itself + plugins?
- of MadSpace when needed (I mean, mention the possibility of a manual installation)
- how to run:
- new name of the binary
- run down on the main commands (maybe it can be picked up from MadGraph5 docs):
generate
add process
output
launch
output modes: default and standalone (+ old targets maybe?)
launch settings and stuff:
- run card settings: at least one small comment per entry
- gridpacks (what does it mean, how to enable, where they are created, etc)
- devices: put a bit more details on what they do (see my notes here):
cpu: the best vectorization available (one option is picked among the next ones, on the basis of the system architecture and other machine features).
cpu_scalar: implementation in C++ without vectorization;
cpu_128, cpu_256, cpu_256_avx512_y, cpu_512: CPU implementation in C++ with vector instructions, by varying the different architectures:
cpu_128: SSE4.2 with 128 width (xmm registers): 2 double-precision floating point numbers;
cpu_256: AVX2 with 256 width (ymm registers): 4 double-precision floating point numbers;
cpu_256_avx512_y: AVX-512 instructions with 256 width (ymm registers): 4 double-precision floating point numbers but using AVX-512 instructions (because of the flag avx512vl that allows to use AVX-512 instructions on smaller registers);
cpu_512: AVX-512 with 512 width (zmm registers): 8 double-precision floating point numbers;
cuda, or hip: GPU-related, respectively Nvidia or AMD.
- MadNIS: maybe some more details on some of the parameters, and a little explanations on what it does
- Outputs:
- event files
- different formats
- where are they saved?
- How to cite, especially because we have a proper citation schema/file if I'm not wrong.
Would be nice to put a table of contents with all the sections.
I guess this will be the first piece of real documentation, that then we can copy on the MadGraph7 website (when it will be ready), separating the various sections in their own pages.
Let's create a simple README file (or modify the main repository README) with an easy-to-follow markdown user documentation.
The objective of this documentation is to instruct any new MadGraph7 user how it works, covering the following topics:
generateadd processoutputlaunchoutputmodes: default and standalone (+ old targets maybe?)launchsettings and stuff:cpu: the best vectorization available (one option is picked among the next ones, on the basis of the system architecture and other machine features).cpu_scalar: implementation in C++ without vectorization;cpu_128,cpu_256,cpu_256_avx512_y,cpu_512: CPU implementation in C++ with vector instructions, by varying the different architectures:cpu_128: SSE4.2 with 128 width (xmmregisters): 2 double-precision floating point numbers;cpu_256: AVX2 with 256 width (ymmregisters): 4 double-precision floating point numbers;cpu_256_avx512_y: AVX-512 instructions with 256 width (ymmregisters): 4 double-precision floating point numbers but using AVX-512 instructions (because of the flagavx512vlthat allows to use AVX-512 instructions on smaller registers);cpu_512: AVX-512 with 512 width (zmmregisters): 8 double-precision floating point numbers;cuda, orhip: GPU-related, respectively Nvidia or AMD.Would be nice to put a table of contents with all the sections.
I guess this will be the first piece of real documentation, that then we can copy on the MadGraph7 website (when it will be ready), separating the various sections in their own pages.