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
Compliant and Reliable File Transfers Backed by Top Security Certifications
Stop relying on non-certified, legacy file transfer tools that creak under the weight of modern security demands. Get full audit trails, advanced access controls and more supported by an award-winning team of experts. Start your free 25-day trial today.
Rate This Project
Login To Rate This Project
User Reviews
Be the first to post a review of SoAx!