| 350 | } |
| 351 | |
| 352 | std::vector< StatData > |
| 353 | clsparseDeviceTimer::getMinimumTime( size_t id ) |
| 354 | { |
| 355 | // Prep the data; query openCL for the timer information |
| 356 | queryOpenCL( id ); |
| 357 | |
| 358 | std::vector< StatData > minTime; |
| 359 | for( size_t s = 0; s < timerData.at( id ).size( ); ++s ) |
| 360 | { |
| 361 | StatDataVec::iterator iter |
| 362 | = std::min_element( timerData.at( id ).at( s ).begin( ), timerData.at( id ).at( s ).end( ) ); |
| 363 | |
| 364 | if( iter != timerData.at( id ).at( s ).end( ) ) |
| 365 | { |
| 366 | iter->doubleNanoSec = static_cast<cl_double>( iter->deltaNanoSec ) / timerData.at( id ).at( s ).size( ); |
| 367 | minTime.push_back( *iter ); |
| 368 | } |
| 369 | else |
| 370 | return std::vector< StatData >( ); |
| 371 | } |
| 372 | |
| 373 | return minTime; |
| 374 | } |
| 375 | |
| 376 | std::vector< size_t > |
| 377 | clsparseDeviceTimer::pruneOutliers( size_t id, cl_double multiple ) |