Skip to content

Commit 4175e15

Browse files
Merge pull request #2717 from ax3l/release-0.4.0-rc4
Release 0.4.0-rc4
2 parents 928e953 + 52a7685 commit 4175e15

File tree

204 files changed

+4988
-1205
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

204 files changed

+4988
-1205
lines changed

CHANGELOG.md

Lines changed: 36 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ and Sebastian Hahn for contributing to this release!
135135
- add a workaround for MSVC bug with capturing `constexpr` #2522
136136
- compile time string #2532
137137
- `Vector`: add method `remove<...>()` #2602
138-
- add support for more cpu alpaka accelerators #2603
138+
- add support for more cpu alpaka accelerators #2603 #2701
139139
- Vector `sumOfComponents` #2609
140140
- `math::CT::max` improvement #2612
141141
- plugins:
@@ -155,10 +155,14 @@ and Sebastian Hahn for contributing to this release!
155155
- Python:
156156
- Energy Histogram Reader #2209 #2658
157157
- Phase Space Reader #2334 #2634 #2679
158-
- Move SliceField Module #2354
158+
- Move SliceField Module & add Python3 support #2354 #2718
159159
- Multi-Iteration Energy Histogram #2508
160-
- MPL Visualization modules #2484
161-
- migrated documentation to Sphinx manual #2172
160+
- MPL Visualization modules #2484 #2728
161+
- migrated documentation to Sphinx manual #2172 #2726 #2738
162+
- shorter python imports for postprocessing tools #2727
163+
- fix energy histogram deprecation warning #2729
164+
- `data`: base class for readers #2730
165+
- `param_parser` for JSON parameter files #2719
162166
- tools:
163167
- Tool: New Version #2080
164168
- Changelog & Left-Overs from 0.3.0 #2120
@@ -215,6 +219,8 @@ and Sebastian Hahn for contributing to this release!
215219
- `pmacc::math::Size_t<0>::create()` in Visual Studio #2513
216220
- fix V100 deadlock #2600
217221
- fix missing include #2608
222+
- fix gameOfLife #2700
223+
- Boost template aliases: fix older CUDA workaround #2706
218224
- plugins:
219225
- energy fields: fix reduce #2112
220226
- background fields: fix restart `GUARD` #2139
@@ -251,12 +257,15 @@ and Sebastian Hahn for contributing to this release!
251257
- new example: Foil (LCT) TNSA #2008
252258
- adjust LWFA setup for 8 GPUs #2480
253259
- `picongpu --version` #2147
254-
- add Internal Alpaka & cupla #2179 #2345
255-
- add alpaka dependency #2205 #2328 #2346 #2590 #2501 #2626 #2648 #2684
260+
- add internal Alpaka & cupla #2179 #2345
261+
- add alpaka dependency #2205 #2328 #2346 #2590 #2501 #2626 #2648 #2684 #2717
256262
- Update mallocMC to `2.3.0crp` #2350 #2629
257-
- Update cuda_memtest #2356
258-
- Examples: remove unused loaders #2247
259-
- examples: Update `species.param` #2474
263+
- cuda_memtest:
264+
- update #2356 #2724
265+
- usage on hypnos #2722
266+
- Examples:
267+
- remove unused loaders #2247
268+
- update `species.param` #2474
260269
- Bunch: no `precision.param` #2329
261270
- Travis:
262271
- stages #2341
@@ -385,6 +394,7 @@ and Sebastian Hahn for contributing to this release!
385394
- EnergyHistogram: Remove Detector Filter #2465
386395
- ISAAC: unify the usage of period #2455
387396
- add filter support to phase space plugin #2425
397+
- Resource Plugin: `fix boost::core::swap` #2721
388398
- tools:
389399
- Python: Fix Scripts PEP8 #2028
390400
- Prepare for Python Modules #2058
@@ -398,14 +408,17 @@ and Sebastian Hahn for contributing to this release!
398408
- Group parameters in LWFA example #2417
399409
- Python Tools (PS, Histo): Filter Aware #2431
400410
- Clearer conversion functions for Parameter values between UI scale and internal scale #2432
401-
- tbg: Add content of -o arg to env #2499
411+
- tbg:
412+
- add content of -o arg to env #2499
413+
- better handling of missing egetopt error message #2712
402414
- Format speciesAttributes.param #2087
403415
- Reduce # photons in Bremsstrahlung example #1979
404416
- TBG: .tpl no `_profile` suffix #2244
405417
- Default Inputs: C++11 Using for Typedef #2315
406418
- Examples: C++11 Using for Typedef #2314
407419
- LWFA Example: Restore a0=8.0 #2324
408420
- add support for CUDA9 `__shfl_snyc` #2333
421+
- add support for CUDA10 #2732
409422
- Update cuda_memtest: no cuBLAS #2401
410423
- Examples: Init of Particles per Cell #2412
411424
- Travis: Image Updates #2435
@@ -420,14 +433,16 @@ and Sebastian Hahn for contributing to this release!
420433
- Refactor Laser Profiles to Functors #2587
421434
- Params: float_X Constants to Literals #2625
422435
- documentation:
436+
- new subtitle #2734
423437
- Lockstep Programming Model #2026 #2064
424438
- `IdxConfig` append documentation #2022
425439
- `multiMask`: Refactor Documentation #2119
426440
- `CtxArray` #2390
427-
- Update openPMD Post-Processing #2322
441+
- Update openPMD Post-Processing #2322 #2733
428442
- Checkpoints Backends #2387
429443
- Plugins:
430-
- HDF5: fix links & lists #2313
444+
- HDF5: fix links, lists & MPI hints #2313 #2711
445+
- typo in libSplash install #2735
431446
- External dependencies #2175
432447
- Multi & CPU #2423
433448
- Update PS & Energy Histo #2427
@@ -468,13 +483,12 @@ and Sebastian Hahn for contributing to this release!
468483
- Doxygen: How to Build HTML #2134
469484
- Badge: Docs #2144
470485
- CMake 3.7.0 #2181
471-
- Boost 1.62.0 #2182
486+
- Boost (1.62.0-) 1.65.1 - 1.68.0 #2182 #2707 #2713
472487
- Bash Subshells: `cmd` to $(cmd) #2187
473488
- Boost Transient Deps: date_time, chrono, atomic #2195
474489
- Install Docs: CUDA is optional #2199
475490
- Fix broken links #2200
476491
- PIConGPU Logo: More Platforms #2190
477-
- Profiles for Titan & Taurus #2201
478492
- Repo Structure #2218
479493
- Document KNL GCC -march #2252
480494
- Streamline Install #2256
@@ -484,13 +498,16 @@ and Sebastian Hahn for contributing to this release!
484498
- Added an example profile and tpl file for taurus' KNL #2270
485499
- Profile: Draco (MPCDF) #2308
486500
- $PIC_EXAMPLES #2327
487-
- CUDA 8.0.61 on Taurus #2337
488-
- Link KNL Profile #2339
501+
- Profiles for Titan & Taurus #2201
502+
- Taurus:
503+
- CUDA 8.0.61 #2337
504+
- Link KNL Profile #2339
505+
- SCS5 Update #2667
489506
- Move ParaView Profile #2353
490507
- Spack: Own GitHub Org #2358
491508
- LWFA Example: Improve Ranges #2360
492509
- fix spelling mistake in checkpoint #2372
493-
- Spack Install: Clarify #2373
510+
- Spack Install: Clarify #2373 #2720
494511
- Probe Pusher #2379
495512
- CI/Deps: CUDA 8.0 #2420
496513
- Piz Daint (CSCS):
@@ -503,9 +520,10 @@ and Sebastian Hahn for contributing to this release!
503520
- Hypnos (HZDR): New Modules #2521 #2661
504521
- Hypnos: PNGwriter 0.6.0 #2166
505522
- Hypnos & Taurus: Profile Examples Per Queue #2249
523+
- Hemera: tbg templates #2723
506524
- Community Map #2445
507525
- License Header: Update 2018 #2448
508-
- Docker: Nvidia-Docker 2.0 #2462
526+
- Docker: Nvidia-Docker 2.0 #2462 #2557
509527
- Hide Double ToC #2463
510528
- Param Docs: Title Only #2466
511529
- New Developers #2487

INSTALL.rst

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ gcc
3535

3636
- CUDA 8.0: Use gcc 4.9 - 5.3
3737
- CUDA 9.0 - 9.1: Use gcc 4.9 - 5.5
38-
- CUDA 9.2: Use gcc 4.9 - 7
38+
- CUDA 9.2 - 10.0: Use gcc 4.9 - 7
3939
- *note:* be sure to build all libraries/dependencies with the *same* gcc version
4040
- *Debian/Ubuntu:*
4141

@@ -89,8 +89,8 @@ zlib
8989

9090
boost
9191
"""""
92-
- 1.62.0 - 1.67.0 (``program_options``, ``regex`` , ``filesystem``, ``system``, ``math``, ``serialization`` and header-only libs, optional: ``fiber`` with ``context``, ``thread``, ``chrono``, ``atomic``, ``date_time``)
93-
- *note:* for CUDA 9 support, use boost 1.65.1 or newer
92+
- 1.62.0 - 1.68.0 (``program_options``, ``regex`` , ``filesystem``, ``system``, ``math``, ``serialization`` and header-only libs, optional: ``fiber`` with ``context``, ``thread``, ``chrono``, ``atomic``, ``date_time``)
93+
- *note:* for CUDA 9+ support, use boost 1.65.1 or newer
9494
- *Debian/Ubuntu:* ``sudo apt-get install libboost-program-options-dev libboost-regex-dev libboost-filesystem-dev libboost-system-dev libboost-thread-dev libboost-chrono-dev libboost-atomic-dev libboost-date-time-dev libboost-math-dev libboost-serialization-dev libboost-fiber-dev libboost-context-dev``
9595
- *Arch Linux:* ``sudo pacman --sync boost``
9696
- *Spack:* ``spack install boost``
@@ -155,7 +155,7 @@ Optional Libraries
155155

156156
CUDA
157157
""""
158-
- `8.0 - 9.2 <https://developer.nvidia.com/cuda-downloads>`_
158+
- `8.0 - 10.0 <https://developer.nvidia.com/cuda-downloads>`_
159159
- required if you want to run on Nvidia GPUs
160160
- *Debian/Ubuntu:* ``sudo apt-get install nvidia-cuda-toolkit``
161161
- *Arch Linux:* ``sudo pacman --sync cuda``
@@ -206,7 +206,7 @@ libSplash
206206
- ``mkdir -p ~/src ~/build ~/lib``
207207
- ``git clone https://github.com/ComputationalRadiationPhysics/libSplash.git ~/src/splash/``
208208
- ``cd ~/build``
209-
- ``cmake -DCMAKE_INSTALL_PREFIX=$HOME/lib/splash -DSplash_USE_MPI=ON -DSplash_USE_PARALLE=ON ~/src/splash``
209+
- ``cmake -DCMAKE_INSTALL_PREFIX=$HOME/lib/splash -DSplash_USE_MPI=ON -DSplash_USE_PARALLEL=ON ~/src/splash``
210210
- ``make install``
211211

212212
- *environment:* (assumes install from source in ``$HOME/lib/splash``)
@@ -234,6 +234,7 @@ HDF5
234234
- ``make``
235235
- *optional:* ``make test``
236236
- ``make install``
237+
- If you encounter errors related to linking MPI during ``./configure``, you might try setting the compiler manually via ``./configure --enable-parallel --enable-shared --prefix $HOME/lib/hdf5/ CC=mpicc CXX=mpic++``.
237238
- *environment:* (assumes install from source in ``$HOME/lib/hdf5``)
238239

239240
- ``export HDF5_ROOT=$HOME/lib/hdf5``

README.md

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
PIConGPU - A Many GPGPU PIC Code
2-
================================================================
1+
PIConGPU - Particle-in-Cell Simulations for the Exascale Era
2+
============================================================
33

44
[![Code Status master](https://img.shields.io/travis/ComputationalRadiationPhysics/picongpu/master.svg?label=master)](https://travis-ci.org/ComputationalRadiationPhysics/picongpu/branches)
55
[![Code Status dev](https://img.shields.io/travis/ComputationalRadiationPhysics/picongpu/dev.svg?label=dev)](https://travis-ci.org/ComputationalRadiationPhysics/picongpu/branches)
@@ -15,8 +15,8 @@ PIConGPU - A Many GPGPU PIC Code
1515
Introduction
1616
------------
1717

18-
PIConGPU is a fully relativistic, many
19-
[GPGPU](http://en.wikipedia.org/wiki/Graphics_processing_unit),
18+
PIConGPU is a fully relativistic,
19+
[manycore](https://en.wikipedia.org/wiki/Manycore_processor),
2020
3D3V particle-in-cell ([PIC](http://en.wikipedia.org/wiki/Particle-in-cell))
2121
code. The Particle-in-Cell algorithm is a central tool in plasma physics.
2222
It describes the dynamics of a plasma by computing the motion of
@@ -59,9 +59,10 @@ a wide range of tools and diagnostics, e.g.:
5959
extreme I/O scalability and massively parallel online-analysis
6060
- 2D and 3D live view and diagnostics tools
6161
- a large selection of extensible
62-
[online-plugins](https://github.com/ComputationalRadiationPhysics/picongpu/wiki/PIConGPU-Plugins)
62+
[online-plugins](http://picongpu.readthedocs.io/en/latest/usage/plugins.html)
6363

64-
Todays GPUs provide a computational performance of several
64+
As one of our supported compute platforms, GPUs provide a computational
65+
performance of several
6566
[TFLOP/s](http://en.wikipedia.org/wiki/FLOPS) at considerable lower invest and
6667
maintenance costs compared to multi CPU-based compute architectures of similar
6768
performance. The latest high-performance systems

docs/requirements.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
sphinx_rtd_theme>=0.3.1
22
recommonmark
3-
sphinx
3+
sphinx==1.7
44
breathe>=4.5
55
sphinxcontrib.programoutput
6+
sphinxcontrib-napoleon>=0.7
67
pygments
78
# generate plots
89
matplotlib

docs/source/conf.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,9 @@
1919
import os
2020
import subprocess
2121
from recommonmark.parser import CommonMarkParser
22-
# import sys
23-
# sys.path.insert(0, os.path.abspath('.'))
22+
import sys
23+
python_libs = os.path.abspath('../../lib/python')
24+
sys.path.insert(0, python_libs)
2425

2526

2627
# -- General configuration ------------------------------------------------
@@ -38,13 +39,17 @@
3839
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
3940
# ones.
4041
extensions = ['sphinx.ext.mathjax',
42+
'sphinx.ext.napoleon',
4143
'breathe',
4244
'sphinxcontrib.programoutput',
4345
'matplotlib.sphinxext.plot_directive']
4446

4547
if not on_rtd:
4648
extensions.append('sphinx.ext.githubpages')
4749

50+
# napoleon autodoc config
51+
napoleon_include_init_with_doc = True
52+
4853
# breathe config
4954
breathe_projects = {'PIConGPU': '../xml'}
5055
breathe_default_project = 'PIConGPU'
@@ -96,7 +101,7 @@
96101
# The short X.Y version.
97102
version = u'0.4.0'
98103
# The full version, including alpha/beta/rc tags.
99-
release = u'0.4.0rc3'
104+
release = u'0.4.0rc4'
100105

101106
# The language for content autogenerated by Sphinx. Refer to documentation
102107
# for a list of supported languages.

docs/source/dev/py_postprocessing.rst

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
.. _development-pytools:
2+
3+
Python Postprocessing Tool Structure
4+
====================================
5+
6+
Each plugin should implement at least the following Python classes.
7+
8+
1. A data reader class responsible for loading the data from the simulation directory
9+
2. A visualizer class that outputs a matplotlib plot
10+
11+
The repository directory for PIConGPU Python modules for plugins is ``lib/python/picongpu/plugins/``.
12+
13+
Data Reader
14+
~~~~~~~~~~~
15+
16+
The data readers should reside in the ``lib/python/picongpu/plugins/data`` directory.
17+
There is a base class in ``base_reader.py`` defining the interface of a reader.
18+
Each reader class should derive from this class and needs to implement the following interface functions:
19+
20+
.. autoclass:: picongpu.plugins.data.base_reader.DataReader
21+
:members:
22+
:private-members:
23+
24+
To shorten the import statements for the readers, please also add an entry in the ``__init__.py`` file of the ``data`` directory.
25+
26+
Visualizer
27+
~~~~~~~~~~
28+
29+
The visualizers should reside in the ``lib/python/picongpu/plugins/plot_mpl/`` directory.
30+
The module names should end on ``_visualizer.py`` and the class name should only be ``Visualizer``.
31+
32+
To shorten the import statements for the visualizers, please also add an entry in the ``__init__.py`` file of the ``plot_mpl`` directory.
33+
34+
There is a base class for visualization found in ``base_visualizer.py`` which already handles the plotting logic.
35+
It uses the data reader classes for accessing the data.
36+
After getting the data, it ensures that (for performance reasons) a matplotlib artist is created only for the first plot and later only gets updated with fresh data.
37+
38+
.. autoclass:: picongpu.plugins.plot_mpl.base_visualizer.Visualizer
39+
:members:
40+
:private-members:
41+
42+
The complete implementation logic of the ``visualize`` function is pretty simple.
43+
44+
.. code:: python
45+
46+
def visualize(self, **kwargs):
47+
self.data = self.data_reader.get(**kwargs)
48+
if self.plt_obj is None:
49+
self._create_plt_obj()
50+
else:
51+
self._update_plt_obj()
52+
53+
All new plugins should derive from this class.
54+
55+
When implementing a new visualizer you have to perform the following steps:
56+
57+
1. Let your visualizer class inherit from the ``Visualizer`` class in ``base visualizer.py``.
58+
59+
2. Implement the ``_create_data_reader(self, run_directory)`` function.
60+
This function should return a data reader object (see above) for this plugin's data.
61+
62+
3. Implement the ``_create_plt_obj(self)`` function.
63+
This function needs to access the plotting data from the ``self.data`` member (this is the data structure as returned by the data readers ``.get(...)`` function, create some kind of matplotlib artist by storing it in the ``self.plt_obj`` member variable and set up other plotting details (e.g. a colorbar).
64+
65+
4. Implement the ``_update_plt_obj(self)`` function.
66+
This is called only after a valid ``self.plt_obj`` was created.
67+
It updates the matplotlib artist with new data.
68+
Therefore it again needs to access the plotting data from the ``self.data`` member and call the data update API for the matplotlib artist (normally via ``.set_data(...)``.
69+

docs/source/index.rst

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77

88
.. image:: ../logo/pic_logo.pdf
99

10-
*A particle-in-cell code for GPGPUs*
10+
*Particle-in-Cell Simulations for the Exascale Era*
1111

12-
PIConGPU is a fully relativistic, many GPGPU, 3D3V particle-in-cell (PIC) code.
12+
PIConGPU is a fully relativistic, manycore, 3D3V particle-in-cell (PIC) code.
1313
The PIC algorithm is a central tool in plasma physics.
1414
It describes the dynamics of a plasma by computing the motion of electrons and ions in the plasma based on Maxwell's equations.
1515

@@ -113,6 +113,7 @@ Development
113113
dev/clangtools
114114
dev/picongpu
115115
dev/pmacc
116+
dev/py_postprocessing
116117
dev/doxyindex
117118

118119
********************

0 commit comments

Comments
 (0)