AreWeThereYetAreWeThereYetAreWeThereYet

Oops


// Given a list of vehicles pending an update, eliminate those who
// are not yet ready for an update (not finished spawning, not heard
// from in a while, etc). Also perform all the various discrete,
// preliminary steps that can safely be executed in parallel.
static void _evaluateVehicleCandidates(VEHICLES& vehicles)
{
  // Have as many threads as possible spawn tasks of the
  // workload.
  #pragma omp parallel for schedule(guided) shared(vehicles)
  for ( size_t i = 0 ; i < vehicles.size() ; ++i )
  {
    // Turn each vehicle into a task, since the execution length
    // is variable.
    #pragma omp task firstprivate(i)
    {
      if ( _evaluateCandidate(vehicles[i]) == false )
      vehicles[i] = NULL ;
    }
  }
}

Cpu0: Idle: 99.8%
Cpu1: Idle: 0%

With 0 people on the server. Hmm.

OpenMP dissapointment from Visual Studio

I was going to post my little OpenMP self-tuition examples, but in the process of cleaning them up for public consumption, I discovered that Visual Studio 2010 doesn’t support OpenMP 3.0. Since about half of my examples focus on the use of the task directive for recursion and descent, it’s kinda pointless =/