POSIX Shared Memory Data Structures 1.0
High-performance lock-free data structures for inter-process communication
|
Example of SIMD-optimized particle simulation using shared memory. More...
#include <iostream>
#include <chrono>
#include <random>
#include <iomanip>
#include "posix_shm.h"
#include "shm_array.h"
#include "shm_simd_utils.h"
Go to the source code of this file.
Classes | |
struct | ParticleSystemSoA |
Functions | |
void | initialize_particles (ParticleSystemSoA &particles) |
void | update_physics_scalar (ParticleSystemSoA &particles, float dt) |
void | update_physics_simd (ParticleSystemSoA &particles, float dt) |
float | calculate_kinetic_energy_scalar (ParticleSystemSoA &particles) |
float | calculate_kinetic_energy_simd (ParticleSystemSoA &particles) |
int | main () |
Variables | |
constexpr size_t | NUM_PARTICLES = 100000 |
constexpr size_t | ITERATIONS = 100 |
Example of SIMD-optimized particle simulation using shared memory.
Demonstrates:
Definition in file simd_simulation.cpp.
float calculate_kinetic_energy_scalar | ( | ParticleSystemSoA & | particles | ) |
Definition at line 160 of file simd_simulation.cpp.
References ParticleSystemSoA::mass, NUM_PARTICLES, ParticleSystemSoA::vx, ParticleSystemSoA::vy, and ParticleSystemSoA::vz.
Referenced by main().
float calculate_kinetic_energy_simd | ( | ParticleSystemSoA & | particles | ) |
Definition at line 174 of file simd_simulation.cpp.
References shm_array< T, TableType >::data(), shm_simd::dot_product(), ParticleSystemSoA::mass, NUM_PARTICLES, shm_simd::scale_floats(), shm_span< T, ShmType >::shm, ParticleSystemSoA::vx, ParticleSystemSoA::vy, ParticleSystemSoA::vz, and ParticleSystemSoA::x.
Referenced by main().
void initialize_particles | ( | ParticleSystemSoA & | particles | ) |
Definition at line 45 of file simd_simulation.cpp.
References ParticleSystemSoA::ax, ParticleSystemSoA::ay, ParticleSystemSoA::az, ParticleSystemSoA::mass, NUM_PARTICLES, ParticleSystemSoA::vx, ParticleSystemSoA::vy, ParticleSystemSoA::vz, ParticleSystemSoA::x, ParticleSystemSoA::y, and ParticleSystemSoA::z.
Referenced by main().
int main | ( | ) |
Definition at line 208 of file simd_simulation.cpp.
References calculate_kinetic_energy_scalar(), calculate_kinetic_energy_simd(), shm_array< T, TableType >::data(), initialize_particles(), shm_simd::is_aligned(), ITERATIONS, shm_simd::SimdArray< TableType >::max(), shm_simd::SimdArray< TableType >::min(), NUM_PARTICLES, shm_simd::SimdArray< TableType >::sum(), update_physics_scalar(), update_physics_simd(), ParticleSystemSoA::vx, and ParticleSystemSoA::x.
void update_physics_scalar | ( | ParticleSystemSoA & | particles, |
float | dt | ||
) |
Definition at line 70 of file simd_simulation.cpp.
References ParticleSystemSoA::ax, ParticleSystemSoA::ay, ParticleSystemSoA::az, NUM_PARTICLES, ParticleSystemSoA::vx, ParticleSystemSoA::vy, ParticleSystemSoA::vz, ParticleSystemSoA::x, ParticleSystemSoA::y, and ParticleSystemSoA::z.
Referenced by main().
void update_physics_simd | ( | ParticleSystemSoA & | particles, |
float | dt | ||
) |
Definition at line 91 of file simd_simulation.cpp.
References ParticleSystemSoA::ax, ParticleSystemSoA::ay, ParticleSystemSoA::az, NUM_PARTICLES, ParticleSystemSoA::vx, ParticleSystemSoA::vy, ParticleSystemSoA::vz, ParticleSystemSoA::x, ParticleSystemSoA::y, and ParticleSystemSoA::z.
Referenced by main().
|
constexpr |
Definition at line 25 of file simd_simulation.cpp.
Referenced by main().
|
constexpr |
Definition at line 24 of file simd_simulation.cpp.
Referenced by calculate_kinetic_energy_scalar(), calculate_kinetic_energy_simd(), initialize_particles(), main(), update_physics_scalar(), and update_physics_simd().