We agree on the following simple rules to make our lives easier :)
- Stick to the style below for commit messages
- Commit compiling patches for the main branches (
master
anddev
), you can be less strict for (unshared) topic branches - Commits should be formated with clang-format-11
- Install ClangFormat 11
- To format all files in your working copy, you can run this command in bash from the root folder of PIConGPU:
find include/ share/picongpu/ share/pmacc -iname "*.def" \ -o -iname "*.h" -o -iname "*.cpp" -o -iname "*.cu" \ -o -iname "*.hpp" -o -iname "*.tpp" -o -iname "*.kernel" \ -o -iname "*.loader" -o -iname "*.param" -o -iname "*.unitless" \ | xargs clang-format-11 -i
Instead of using the bash command above you can use Git together with ClangFormat to format your patched code only. Before applying this command, you must extend your local git configuration once with all file endings used in PIConGPU:
git config --local clangFormat.extensions def,h,cpp,cu,hpp,tpp,kernel,loader,param,unitless
For only formatting lines you added using git add
, call git clang-format-11
before you create a commit.
Please be aware that un-staged changes will not be formatted.
Let's go for an example:
Use the 1st line as a topic, stay <= 50 chars
- the blank line between the "topic" and this "body" is MANDATORY
- use several key points with - or * for additional information
- stay <= 72 characters in this "body" section
- avoid blank lines in the body
- Why? Pls refer to http://stopwritingramblingcommitmessages.com/
We provide an (interactive/automated) script that compiles all examples
within the examples/
directory in your branch.
This helps a lot to maintain various combinations of options in the code (like different solvers, boundary conditions, ...).
Assume
repo=<pathToYourPIConGPUgitDirectory>
tmpPath=<tmpFolder>
Now run the tests with
$repo/compile -l $repo/examples/ $tmpPath
Further options are:
-q : continue on errors
-j <N> : run <N> tests in parallel (note: do NOT omit the number <N>)
If you ran your test with, let's say -l -q -j 4
, and you got errors like
[compileSuite] [error] In PIC_EXTENSION_PATH:PATH=.../params/ThermalTest/cmakePreset_0: CMAKE_INSTALL_PREFIX:PATH=.../params/ThermalTest/cmakePreset_0 (.../build) make install
check the specific test's output (in this case examples/ThermalTest
with
CMake preset #0) with:
less -R $tmpPath/build/build_ThermalTest_cmakePreset_0/compile.log
Compile all CMake presets of a single example with:
$repo/compile $repo/examples/ $tmpPath
- Request an interactive job (to release some load from the head node)
qsub -I -q laser -lwalltime=03:00:00 -lnodes=1:ppn=64
- Use a non-home directory, e.g.
tmpPath=/net/cns/projects/HPL/<yourTeam>/<yourName>/tmp_tests/
- Compile like a boss!
<pathToYourPIConGPUgitDirectory>/compile -l -q -j 60 <pathToYourPIConGPUgitDirectory>/examples/ $tmpPath
- Wait for the thumbs up/down :)