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
License
Other LicenseFollow SoAx
Other Useful Business Software
Enterprise-grade ITSM, for every business
Freshservice is an intuitive, AI-powered platform that helps IT, operations, and business teams deliver exceptional service without the usual complexity. Automate repetitive tasks, resolve issues faster, and provide seamless support across the organization. From managing incidents and assets to driving smarter decisions, Freshservice makes it easy to stay efficient and scale with confidence.
Rate This Project
Login To Rate This Project
User Reviews
Be the first to post a review of SoAx!