• Stars
    star
    659
  • Rank 65,759 (Top 2 %)
  • Language
    C++
  • License
    Other
  • Created almost 11 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Performance-Portable Particle-in-Cell Simulations for the Exascale Era ✨

PIConGPU - Particle-in-Cell Simulations for the Exascale Era

Code Status dev Documentation Status Doxygen Language License PIConGPU License PMacc

PIConGPU Presentation Video PIConGPU Release

Introduction

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

PIConGPU implements various numerical schemes to solve the PIC cycle. Its features for the electro-magnetic PIC algorithm include:

  • a central or Yee-lattice for fields
  • particle pushers that solve the equation of motion for charged and neutral particles, e.g., the Boris- and the Vay-Pusher
  • Maxwell field solvers, e.g. Yee's and Lehe's scheme
  • rigorously charge conserving current deposition schemes, such as Esirkepov and EZ (Esirkepov meets ZigZag)
  • macro-particle form factors ranging from NGP (0th order), CIC (1st), TSC (2nd), PQS (3rd) to PCS (4th)

and the electro-magnetic PIC algorithm is further self-consistently coupled to:

Besides the electro-magnetic PIC algorithm and extensions to it, we developed a wide range of tools and diagnostics, e.g.:

  • online, far-field radiation diagnostics for coherent and incoherent radiation emitted by charged particles
  • full restart and output capabilities via openPMD, including parallel HDF5
  • 2D and 3D live view and diagnostics tools
  • a large selection of extensible online-plugins

As one of our supported compute platforms, GPUs provide a computational performance of several TFLOP/s at considerable lower invest and maintenance costs compared to multi CPU-based compute architectures of similar performance. The latest high-performance systems (TOP500) are enhanced by accelerator hardware that boost their peak performance up to the multi-PFLOP/s level. With its outstanding performance and scalability to more than 18'000 GPUs, PIConGPU was one of the finalists of the 2013 Gordon Bell Prize.

PIConGPU is developed and maintained by the Computational Radiation Physics Group at the Institute for Radiation Physics at HZDR in close collaboration with the Center for Information Services and High Performance Computing (ZIH) of the Technical University Dresden (TUD). We are a member of the Dresden GPU Center of Excellence that cooperates on a broad range of scientific GPU and manycore applications, workshops and teaching efforts.

Attribution

PIConGPU is a scientific project. If you present and/or publish scientific results that used PIConGPU, you should set a reference to show your support.

Our according up-to-date publication at the time of your publication should be inquired from:

Please also consider adding yourself to our community map. We would love to hear from you!

Oral Presentations

The following slide should be part of oral presentations. It is intended to acknowledge the team maintaining PIConGPU and to support our community:

(coming soon) presentation_picongpu.pdf (svg version, key note version, png version: 1920x1080 and 1024x768)

Software License

PIConGPU is licensed under the GPLv3+. Furthermore, you can develop your own particle-mesh algorithms based on our general library PMacc that is shipped alongside PIConGPU. PMacc is dual licensed under both the GPLv3+ and LGPLv3+. For a detailed description, please refer to LICENSE.md


Install

See our notes in INSTALL.rst.

Users

Dear User, we hereby emphasize that we are still actively developing PIConGPU at great speed and do, from time to time, break backwards compatibility.

When using this software, please stick to the latest release or use the dev branch containing the latest changes. It also contains a file CHANGELOG.md with the latest changes (and how to update your simulations). Read it first before updating between two versions! Also, we add a git tag according to a version number for each release.

For any questions regarding the usage of PIConGPU please do not contact the developers and maintainers directly.

Instead, please open an issue on GitHub.

Before you post a question, browse the PIConGPU documentation, wiki and the issue tracker to see if your question has been answered, already.

PIConGPU is a collaborative project. We thus encourage users to engage in answering questions of other users and post solutions to problems to the list. A problem you have encountered might be the future problem of another user.

In addition, please consider using the collaborative features of GitHub if you have questions or comments on code or documentation. This will allow other users to see the piece of code or documentation you are referring to.

Main ressources are in our online manual, the user section of our wiki, documentation files in .md (Markdown) and .rst (reStructuredText) format in this repository and a getting started video. Feel free to visit picongpu.hzdr.de to learn more about the PIC algorithm.

Software Upgrades

PIConGPU ships new and frequent changes to the code in the development branch dev.

From time to time we publish a new release of PIConGPU. Before you pull the changes in, please read our ChangeLog! You may have to update some of your simulation .param and .cfg files by hand since PIConGPU is an active project and new features often require changes in input files. Additionally, a full description of new features and fixed bugs in comparison to the previous release is provided in that file.

In case you decide to use new, potentially buggy and experimental features from our dev branch, be aware that you must participate or at least follow the development yourself. Syntax changes and in-development bugs will not be announced outside of their according pull requests and issues.

Before drafting a new release, we open a new release-* branch from dev with the * being the version number of the upcoming release. This branch only receives bug fixes (feature freeze) and users are welcome to try it out (however, the change log and a detailed announcement might still be missing in it).

Developers

How to participate

See CONTRIBUTING.md

If you like to jump in right away, see
open "good first issue" issues

Active Team

Scientific Supervision

  • Dr. Michael Bussmann

Maintainers* and core developers

  • Dr. Sergei Bastrakov*
  • Finn-Ole Carstens
  • Dr. Alexander Debus
  • Dr. Marco Garten*
  • Dr. Axel Huebl*
  • Brian Edward Marre
  • Pawel Ordyna
  • Dr. Richard Pausch*
  • Franz Poeschel
  • Dr. Klaus Steiniger*
  • Rene Widera*

Former Members, Contributions and Thanks

The PIConGPU Team expresses its gratitude to:

Florian Berninger, Heiko Burau, Fabia Dietrich, Robert Dietrich, Carlchristian Eckert, Simeon Ehrig, Wen Fu, Ph.D., Alexander Grund, Sebastian Hahn, Anton Helm, Wolfgang Hoehnig, Dr.-Ing. Guido Juckeland, Jeffrey Kelling, Maximilian Knespel, Dr. Remi Lehe, Felix Schmitt, Frank Winkler, Benjamin Schneider, Joseph Schuchart, Conrad Schumann, Stefan Tietze, Marija Vranic, Ph.D., Benjamin Worpitz, Erik Zenker, Sophie Rudat, Sebastian Starke, Alexander Matthes, Kseniia Bastrakova, Bernhard Manfred Gruber, Jakob Trojok, Anton Lebedev, Nils Prinz, Felix Meyer, Lennert Sprenger, Manhui Wang, Maxence Thevenet, Ilja Goethel, Mika Soren Voß, Lei Bifeng, Andrei Berceanu, Felix Meyer, Lennert Sprenger and Nico Wrobel.

Kudos to everyone, mentioned or unmentioned, who contributed further in any way!


image of an lwfa image of our strong scaling

More Repositories

1

cuda_memtest

Fork of CUDA GPU memtest 👓
C++
103
star
2

isaac

In Situ Animation of Accelerated Computations 🔬
C++
23
star
3

redGrapes

Resource-based, Declarative task-Graphs for Parallel, Event-driven Scheduling 🍇
C++
19
star
4

libSplash

libSplash - Simple Parallel file output Library for Accumulating Simulation data using Hdf5
C++
15
star
5

pyDive

Distributed Interactive Visualization and Exploration of large datasets
Python
14
star
6

clara2

Clara2 - a parallel classical radiation calculator based on Liénard-Wiechert potentials
C++
13
star
7

InFlow

Python
12
star
8

cracen

Fit Modelfunctions on Digital Signals 〰️
C++
10
star
9

graybat

Graph Approach for Highly Generic Communication Schemes Based on Adaptive Topologies 📡
C++
8
star
10

openPMD-converter-GDF

converter between openPMD and GDF
Python
8
star
11

liFFT

library for Library-independent FFTs
C++
7
star
12

Xeus-Cling-CUDA-Example

Game-of-Life example notebook for the xeus-cling-cuda kernel.
Python
7
star
13

xeus-cling-cuda-container

The repository contains container recipes to build the entire stack of Xeus-Cling and Cling including cuda extension with just a few commands.
Python
7
star
14

DoDo

Specification of HPC hardware and program components
C++
6
star
15

contributing

📚 guidelines and styles to contribute to our projects
6
star
16

haseongpu

HASEonGPU: High performance Amplified Spontaneous Emission on GPU
Cuda
6
star
17

particle_reduction

Python
5
star
18

scatteralloc

ScatterAlloc: Massively Parallel Dynamic Memory Allocation for the GPU
Cuda
5
star
19

picongpu-communitymap

Map of PIConGPU contributors, collaborators and users worldwide, current and past
HTML
5
star
20

cmake-modules

CMake Modules written by our Group
CMake
5
star
21

stencil_filter_on_GPU

A GPU-accelerated stencil for filtering and smoothing using numba
5
star
22

crp-container

Container receipes for different projects of the HZDR Computational Radiation Physics group.
Python
5
star
23

parataxis

PARAllel Tracer for Arbitrary X-ray Interaction and Scattering ⚡
C++
4
star
24

QonGPU

Bachelorproject to simulate the 1D Time Dependent Schrödinger Equation for arbitrary Scalar potentials in 1D
C++
4
star
25

scpongpu

Simulation of strongly coupled plasma using GPUs
C++
4
star
26

alpaka

The project alpaka has moved to https://github.com/alpaka-group/alpaka
4
star
27

cupla

The project alpaka has moved to https://github.com/alpaka-group/cupla
4
star
28

imresh

Shrink-Wrap Phase Reconstruction Algorithm
C++
3
star
29

picongpu-workshop

A simple web page for information on PIConGPU workshops
3
star
30

inofficial-CD-Templates

Inofficial Templates for the Corporate Design of the HZDR
3
star
31

rivlib

Library for RIV providers (and more)
C++
3
star
32

spack-repo

spack.io repo for our in-development packages
Python
3
star
33

jungfrau-photoncounter

Conversion of Jungfrau pixel detector data to photon count rate
C++
2
star
34

icc-julia

Ion Coulomb Crystals - NBody Simulation written in Julia
Julia
1
star
35

gitlab-ci-testproject

This project is made to test gitlab CI test workflows
1
star
36

flint

Fast Linked particle Interactor aNd Tracker
C++
1
star
37

cracen2

C++ framework for resilient distribution of data with a easy to use interface.
C++
1
star
38

compileNode

modules for our compile node
Lua
1
star
39

raptr

Reconstruction of activity from PET data using rays
C++
1
star
40

student_project_python_bindings

The student project investigates the performance and memory handling of Python bindings for CUDA C++ code created with pybind11.
C++
1
star