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
Secure remote access solution to your private network, in the cloud or on-prem. Icon
Secure remote access solution to your private network, in the cloud or on-prem.

Deliver secure remote access with OpenVPN.

OpenVPN is here to bring simple, flexible, and cost-effective secure remote access to companies of all sizes, regardless of where their resources are located.
Get started — no credit card required.
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