| 362 | } |
| 363 | |
| 364 | std::vector< StatData > |
| 365 | GpuStatTimer::getMinimumTime( size_t id ) |
| 366 | { |
| 367 | // Prep the data; query openCL for the timer information |
| 368 | queryOpenCL( id ); |
| 369 | |
| 370 | std::vector< StatData > minTime; |
| 371 | for( size_t s = 0; s < timerData.at( id ).size( ); ++s ) |
| 372 | { |
| 373 | StatDataVec::iterator iter |
| 374 | = std::min_element( timerData.at( id ).at( s ).begin( ), timerData.at( id ).at( s ).end( ) ); |
| 375 | |
| 376 | if( iter != timerData.at( id ).at( s ).end( ) ) |
| 377 | { |
| 378 | iter->doubleNanoSec = static_cast< cl_double >( iter->deltaNanoSec ) / timerData.at( id ).at( s ).size( ); |
| 379 | minTime.push_back( *iter ); |
| 380 | } |
| 381 | else |
| 382 | return std::vector< StatData >( ); |
| 383 | } |
| 384 | |
| 385 | return minTime; |
| 386 | } |
| 387 | |
| 388 | std::vector< size_t > |
| 389 | GpuStatTimer::pruneOutliers( size_t id , cl_double multiple ) |