Skip to content

Instantly share code, notes, and snippets.

@kelindar
Created March 18, 2015 17:47
Show Gist options
  • Save kelindar/dbfbabb4b9069b5e6f74 to your computer and use it in GitHub Desktop.
Save kelindar/dbfbabb4b9069b5e6f74 to your computer and use it in GitHub Desktop.
Data Locality: Particle System
struct Particle {
float x;
float y;
float z;
float w;
float vx;
float vy;
float vz;
float vw;
}
struct A
{
Particle *particles;
int count;
void update(float dt)
{
for (int i = 0; i<count; i++)
{
auto p = particles[i];
p.x += p.vx * dt;
p.y += p.vy * dt;
p.z += p.vz * dt;
p.w += p.vw * dt;
}
}
}
struct Particle {
float x;
float y;
float z;
float w;
float vx;
float vy;
float vz;
float vw;
}
struct B
{
Particle *particles;
int count;
void update(float dt)
{
parallel_for(0, count, [&](int i)
{
auto p = particles[i];
p.x += p.vx * dt;
p.y += p.vy * dt;
p.z += p.vz * dt;
p.w += p.vw * dt;
});
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment