fbpic
simsopt
fbpic | simsopt | |
---|---|---|
2 | 2 | |
165 | 77 | |
-0.6% | - | |
8.1 | 9.6 | |
8 days ago | 3 days ago | |
Python | Python | |
GNU General Public License v3.0 or later | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
fbpic
-
Numba: A High Performance Python Compiler
When I wrote my bachelor thesis years back I worked on a particle-in-cell code [1] that makes heavy use of numba for GPU kernels. At the time it was the most convenient way to do that from python. I remember spending weeks to optimizing these kernels to eek out every last bit of performance I could (which interestingly enough did eventually involve using atomic operations and introducing a lot of variables[2] instead of using arrays everywhere to keep things in registers instead of slower caches).
I remember the team being really responsive to feature requests back then and I had a lot of fun working with it. IIRC compared to using numpy we managed to get speedups of up to 60x for the most critical pieces of code.
[1]: https://github.com/fbpic/fbpic
-
Faster Python calculations with Numba: 2 lines of code, 13× speed-up
We used numba to accelerate the code and most importantly write GPU kernels for the heavy parts. I remember spending hours optimising my code to eek out the most performance possible (which eventually meant using atomics and manually unrolling many loops because somehow this was giving us the best performance) but honestly I was really happy that I didn't need to write cuda kernels in C and generally it was pretty easy to work with. I remember back then the documentation was sometimes a little rough around the edges but the numba team was incredibly helpful and responsive. Overall I had a great time.
[0] https://github.com/fbpic/fbpic
simsopt
-
stellarator math problems: boozer surface approach
Coil configurations are typically obtained numerically. You might know https://github.com/hiddenSymmetries/simsopt already, but if not, it's worth having a look at their example problems and understanding what's going on
-
Getting into fusion as a space physicist
It sounds like to me that you are tied to a specific region or university? If so it might be difficult to get involved. However, a lot of work, especially on stellarator optimization, is done remotely, and tools are somewhat easy to get. For example, the simsopt project is fully open source, but it does involve compiling VMEC which is a pain. If you're willing to share your university/area of the country, then I can see if I know anyone involved in fusion research in your area.
What are some alternatives?
WarpX - WarpX is an advanced, time-based electromagnetic & electrostatic Particle-In-Cell code.
konsave - A command line program written in Python to let you backup your dotfiles and switch to other ones in an instant. Works out-of-the box on KDE Plasma!
pure_numba_alias_sampling - Pure numba version of Alias sampling algorithm from L. Devroye's, "Non-Uniform Random Random Variate Generation"
openmc - OpenMC Monte Carlo Code
autograd - Efficiently computes derivatives of numpy code.
fusion_plots - Plots and figures relevant for a fusion research lecture
ndarray_comparison - Benchmark of toy calculation on an n-dimensional array using python, numba, cython, pythran and rust
Ray - Ray is a unified framework for scaling AI and Python applications. Ray consists of a core distributed runtime and a set of AI Libraries for accelerating ML workloads.
rust-numpy - PyO3-based Rust bindings of the NumPy C-API
paramak - Create parametric 3D fusion reactor CAD and neutronics models
nodevectors - Fastest network node embeddings in the west
Numba - NumPy aware dynamic Python compiler using LLVM