C++ high-performance-computing

Open-source C++ projects categorized as high-performance-computing

Top 22 C++ high-performance-computing Projects

high-performance-computing
  • Taskflow

    A General-purpose Task-parallel Programming System using Modern C++

    Project mention: The Way We Are Building Event-Driven Applications Is Misguided | news.ycombinator.com | 2024-05-28

    > The set-theory approach is hard to do, but promising. Each object that wants something has a small set of the things it wants. There's a big pool of such sets. There's also a big pool of the items you have, which changes constantly. It's easy to express what you need to fetch and which objects are now ready to go as set intersection and difference operations. But you need representations for big sparse sets which can do set operations fast. Probably B-trees, or something in that space.

    Incremental updates to dynamic dependency graphs is a familiar problem for build tooling. I personally have used the taskflow C++ library (https://github.com/taskflow/taskflow) to great effect.

    > Microsoft Research fooled around with this concept years ago in a different context. The idea was to have a database which supported pending SQL queries. The query would return new results when the database changed such that the results of the query changed. The goal was to to support that for millions of pending queries. Financial traders would love to have that. It's a very hard scaling problem. Don't know how that came out.

    Incremental view maintenance is an active area of research. The likes of Noria and Materialize have done this with SQL, and the pg_ivm Postgres extension looks promising. Not sure if there is an equivalent implementation geared towards entity-component systems, though.

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • FluidX3D

    The fastest and most memory efficient lattice Boltzmann CFD software, running on all GPUs via OpenCL. Free for non-commercial use.

    Project mention: FluidX3D | news.ycombinator.com | 2024-03-24
  • kokkos

    Kokkos C++ Performance Portability Programming Ecosystem: The Programming Model - Parallel Execution and Memory Abstraction

  • mfem

    Lightweight, general, scalable C++ library for finite element methods

  • AdaptiveCpp

    Implementation of SYCL and C++ standard parallelism for CPUs and GPUs from all vendors: The independent, community-driven compiler for C++-based heterogeneous programming models. Lets applications adapt themselves to all the hardware in the system - even at runtime!

    Project mention: AdaptiveCpp | news.ycombinator.com | 2024-05-18
  • envpool

    C++-based high-performance parallel environment execution engine (vectorized env) for general RL environments.

    Project mention: How do I improve my SB3 PPO on an EnvPool environment | /r/reinforcementlearning | 2023-09-21

    I am looking to improve the overall performance as well as optimize the wall clock time. I slightly modified the code to develop a SB3 wrapper for envpool from here.

  • preCICE

    A coupling library for partitioned multi-physics simulations, including, but not restricted to fluid-structure interaction and conjugate heat transfer simulations.

  • SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
  • relion

    Image-processing software for cryo-electron microscopy

  • thread-pool

    A modern, fast, lightweight thread pool library based on C++20 (by DeveloperPaul123)

  • aphros

    Finite volume solver for incompressible multiphase flows with surface tension. Foaming flows in complex geometries.

  • vuh

    Vulkan compute for people

  • feelpp

    :gem: Feel++: Finite Element Embedded Language and Library in C++

  • qmcpack

    Main repository for QMCPACK, an open-source production level many-body ab initio Quantum Monte Carlo code for computing the electronic structure of atoms, molecules, and solids with full performance portable GPU support

  • ADIOS2

    Next generation of ADIOS developed in the Exascale Computing Program

    Project mention: What Every Developer Should Know About GPU Computing | news.ycombinator.com | 2023-10-21

    I thought I'd share something with my experience with HPC that applies to many areas, especially in the rise of GPUs.

    The main bottleneck isn't compute, it is memory. If you go to talks you're gonna see lots of figures like this one[0] (typically also showing disk speeds, which are crazy small).

    Compute is increasing so fast that at this point we finish our operations long faster than it takes to save those simulations or even create the visualizations and put on disk. There's a lot of research going into this, with a lot of things like in situ computing (asynchronous operations, often pushing to a different machine, but needing many things like flash buffers. See ADIOS[1] as an example software).

    What I'm getting at here is that we're at a point where we have to think about that IO bottleneck, even for non-high performance systems. I work in ML now, which we typically think of as compute bound, but being in the generative space there are still many things where the IO bottlenecks. This can be loading batches into memory, writing results to disk, or communication between distributed processes. It's one beg reason we typically want to maximize memory usage (large batches).

    There's a lot of low hanging fruit in these areas that aren't going to be generally publishable works but are going to have lots of high impact. Just look at things like LLaMA CPP[2], where in the process they've really decreased the compute time and memory load. There's also projects like TinyLLaMa[3] who are exploring training a 1B model and doing so on limited compute, and are getting pretty good results. But I'll tell you from personal experience, small models and limited compute experience doesn't make for good papers (my most cited work did this and has never been published, gotten many rejections for not competing with models 100x it's size, but is also quite popular in the general scientific community who work with limited compute). Wfiw, companies that are working on applications do value these things, but it is also noise in the community that's hard to parse. Idk how we can do better as a community to not get trapped in these hype cycles, because real engineering has a lot of these aspects too, and they should be (but aren't) really good areas for academics to be working in. Scale isn't everything in research, and there's a lot of different problems out there that are extremely important but many are blind to.

    And one final comment, there's lots of code that is used over and over that are not remotely optimized and can be >100x faster. Just gotta slow down and write good code. The move fast and break things method is great for getting moving but the debt compounds. It's just debt is less visible, but there's so much money being wasted from writing bad code (and LLMs are only going to amplify this. They were trained on bad code after all)

    [0] https://drivenets.com/wp-content/uploads/2023/05/blog-networ...

    [1] https://github.com/ornladios/ADIOS2

    [2] https://github.com/ggerganov/llama.cpp

    [3] https://github.com/jzhang38/TinyLlama

  • intel-qs

    High-performance simulator of quantum circuits

  • mpl

    A C++17 message passing library based on MPI (by rabauke)

  • librapid

    A highly optimised C++ library for mathematical applications and neural networks.

    Project mention: Huge LibRapid Update -- New Features, Performance Improvements and Bug Fixes | /r/cpp | 2023-08-04

    In addition to all of these changes, I used LibRapid and Surge to write a simple Flappy Bird genetic AI as a proof of concept. The code runs well on all platforms and can simulate over 20,000 birds without too much trouble. If you want to check it out, here's the GitHub page: https://github.com/Pencilcaseman/FlappyBirdAI

  • vpic

    Vector Particle-In-Cell (VPIC) Project

  • OpenCL-Benchmark

    A small OpenCL benchmark program to measure peak GPU/CPU performance.

  • dftfe

    DFT-FE: Real-space DFT calculations using Finite Elements

  • Bulk

    A modern interface for implementing bulk-synchronous parallel programs.

  • kmer-signatures

    High-performance kmer-signatures

  • SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
NOTE: The open source projects on this list are ordered by number of github stars. The number of mentions indicates repo mentiontions in the last 12 Months or since we started tracking (Dec 2020).

C++ high-performance-computing discussion

Log in or Post with

C++ high-performance-computing related posts

  • The Way We Are Building Event-Driven Applications Is Misguided

    1 project | news.ycombinator.com | 28 May 2024
  • AdaptiveCpp

    1 project | news.ycombinator.com | 18 May 2024
  • What Every Developer Should Know About GPU Computing

    5 projects | news.ycombinator.com | 21 Oct 2023
  • Huge LibRapid Update -- New Features, Performance Improvements and Bug Fixes

    3 projects | /r/cpp | 4 Aug 2023
  • Looking for HLS frameworks to start deploying DL algorithms on FPGAs

    3 projects | /r/FPGA | 20 Jun 2023
  • Improvements of Clojure in his time

    1 project | /r/Clojure | 16 Jun 2023
  • Taskflow: A General-Purpose Parallel and Heterogeneous Task Programming System

    1 project | news.ycombinator.com | 7 May 2023
  • A note from our sponsor - InfluxDB
    www.influxdata.com | 18 Jul 2024
    Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality. Learn more →

Index

What are some of the best open-source high-performance-computing projects in C++? This list will help you:

Project Stars
1 Taskflow 9,769
2 FluidX3D 3,477
3 kokkos 1,800
4 mfem 1,626
5 AdaptiveCpp 1,175
6 envpool 1,044
7 preCICE 710
8 relion 436
9 thread-pool 392
10 aphros 382
11 vuh 344
12 feelpp 294
13 qmcpack 285
14 ADIOS2 266
15 intel-qs 217
16 mpl 165
17 librapid 159
18 vpic 147
19 OpenCL-Benchmark 133
20 dftfe 110
21 Bulk 93
22 kmer-signatures 0

Sponsored
Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com

Did you konow that C++ is
the 6th most popular programming language
based on number of metions?