New wrapperAPI design

Master      Slave 
Parse cmd line args  Parse cmd line args 
Load shared object  Load shared object 
Get ILWD element   
Create MPI data structure
to represent ILWD
Create MPI data structure
to represent ILWD
if( dataDistributor == WrapperAPI)
  Broadcast data 
else
  Send data to search Master 

create LBComm

if( dataDistributor == WrapperAPI)
  Receive data 
else if( searchMaster )
  Receive data 

create LBComm

initSearch() initSearch()
  ConditionData()
while(fractionRemaining)
{
while(notFinished)
{

  for(i=0;i<numLBNodes;++i)
  {

 if(inLBComm())
 {
 
  start timing
  applySearch( notFinished)
  stop timing
  receive status, results   report to Master
  calculates timing info  
  receive fractionRemaining  
     freeOutput()
  converts to ILWD  
  }  } 
  execute load balance  execute load balance
} }
sends results to API  
finalizeSearch() finalizeSearch()
cleanup and stop MPI