32 #include <thrust/device_vector.h>
235 template <
typename WorkStreamT,
typename WorkUnitT>
238 const WorkStreamT&
stream,
239 const uint2 src_slot, WorkUnitT* src_unit,
240 const uint2 dst_slot, WorkUnitT* dst_unit)
const
243 *dst_unit = *src_unit;
276 template <
typename WorkStream>
281 template <
typename WorkStream,
typename WorkMover>
298 void clear() { thrust::fill( counters.begin(), counters.end(),
uint64(0u) ); }
305 thrust::raw_pointer_cast( &counters.front() ),
306 thrust::raw_pointer_cast( &counters.front() ) + 2u,
307 thrust::raw_pointer_cast( &counters.front() ) + 4u );
316 float avg_iterations()
const {
return counters[6] ? float(counters[4])/float(counters[6]) : 0.0f; }
323 thrust::device_vector<uint64> counters;