Structures of arrays (SoA) are generally faster than arrays of structures (AoS) while AoS are more handy. This project (SoAx) combines the advantages of both. By means of C++(11) meta-template programming SoAx achieves maximal performance (efficient use of vector units and cache of modern CPUs) while providing a very convenient user interface (including object-oriented element handling) and flexibility. It has been designed to handle list-like sets of particles (similar to struct {int id; double[3] pos; float[3] vel;};) in the context of high-performance numerical simulations. It can be applied to many other problems. Please check the sample file main.cpp to see examples of code that you can write with SoAx.

Features

  • Generic implementation of a Structure of Arrays with C++11
  • Similar handyness as Arrays of Structures but much faster
  • List-like operations such as remove and push_back
  • Template metaprogramming using template inheritance and std::tuple
  • Optimized array operations (+,-,...) using expression templates
  • GPU support
  • Serial/Threaded/MPI - file I/O
  • Tested with g++ 4.8.4, clang++ 3.6, icc 16.0, nvcc 7.0

Project Samples

Project Activity

See All Activity >

Categories

Physics, Libraries

License

Other License

Follow SoAx

SoAx Web Site

Other Useful Business Software
Orchestrate Your AI Agents with Zenflow Icon
Orchestrate Your AI Agents with Zenflow

The multi-agent workflow engine for modern teams. Zenflow executes coding, testing, and verification with deep repo awareness

Zenflow orchestrates AI agents like a real engineering system. With parallel execution, spec-driven workflows, and deep multi-repo understanding, agents plan, implement, test, and verify end-to-end. Upgrade to AI workflows that work the way your team does.
Try free now
Rate This Project
Login To Rate This Project

User Reviews

Be the first to post a review of SoAx!

Additional Project Details

Operating Systems

Linux

Intended Audience

Developers

Programming Language

C++

Related Categories

C++ Physics Software, C++ Libraries

Registered

2015-08-27