HPC Magazine avril 2013 - L'Atelier CUDA - Listing 2.

Exécution de l’analyse en parallèle.


__device__ void traverseRecursive( 
  CollisionList& list,
  const BVH& bvh, 
  const AABB& queryAABB,
  int queryObjectIdx,
  NodePtr node)
{
  // cf. listing 1.
}

__global__ void findPotentialCollisions( 
  CollisionList list,
  BVH bvh, 
  AABB* objectAABBs,
  int numObjects)
{
  int idx = threadIdx.x + blockDim.x * blockIdx.x;
  if (idx < numObjects)
    traverseRecursive(bvh, list, objectAABBs[idx], idx, bvh.getRoot());
}