| 201 | } |
| 202 | |
| 203 | void |
| 204 | GpuStatTimer::AddSample( clfftPlanHandle plHandle, FFTPlan* plan, cl_kernel kern, cl_uint numEvents, cl_event* ev, |
| 205 | const std::vector< size_t >& gWorkSize, const std::vector< size_t >& lWorkSize ) |
| 206 | { |
| 207 | if( (numEvents != 0) && (ev == NULL) ) |
| 208 | return; |
| 209 | |
| 210 | if( timerData.empty( ) ) |
| 211 | return; |
| 212 | |
| 213 | for( size_t i = 0; i < numEvents; ++i ) |
| 214 | { |
| 215 | ::clRetainEvent(ev[i]); |
| 216 | } |
| 217 | |
| 218 | if( currRecord == 0 ) |
| 219 | { |
| 220 | timerData.at( currID ).push_back( StatDataVec( ) ); |
| 221 | timerData.at( currID ).back( ).reserve( nSamples ); |
| 222 | timerData.at( currID ).back( ).push_back( StatData( plHandle, plan, kern, numEvents, ev, gWorkSize, lWorkSize) ); |
| 223 | } |
| 224 | else |
| 225 | { |
| 226 | timerData.at( currID ).at( currSample ) |
| 227 | .push_back( StatData( plHandle, plan, kern, numEvents, ev, gWorkSize, lWorkSize ) ); |
| 228 | ++currSample; |
| 229 | } |
| 230 | } |
| 231 | |
| 232 | // This function's purpose is to provide a mapping from a 'friendly' human readable text string |
| 233 | // to an index into internal data structures. |