52 return "sequential count mf";
56 auto t = ctx.
task.template cast_safe<ScheduleTask_v_count_mf>();
60 return execute_dok(ctx);
62 return execute_coo(ctx);
64 return execute_dense(ctx);
66 return execute_coo(ctx);
73 auto t = ctx.
task.template cast_safe<ScheduleTask_v_count_mf>();
77 t->r->set_uint(dec_v->values);
81 Status execute_coo(
const DispatchContext& ctx) {
84 auto t = ctx.task.template cast_safe<ScheduleTask_v_count_mf>();
85 ref_ptr<TVector<T>> v = t->v.template cast_safe<TVector<T>>();
86 CpuCooVec<T>* dec_v = v->template get<CpuCooVec<T>>();
88 t->r->set_uint(dec_v->values);
92 Status execute_dense(
const DispatchContext& ctx) {
95 auto t = ctx.task.template cast_safe<ScheduleTask_v_count_mf>();
96 ref_ptr<TVector<T>> v = t->v.template cast_safe<TVector<T>>();
97 CpuDenseVec<T>* dec_v = v->template get<CpuDenseVec<T>>();
100 const T ref = v->get_fill_value();
102 for (
uint i = 0; i < v->get_n_rows(); i++) {
103 if (dec_v->Ax[i] != ref) {
108 t->r->set_uint(values);
Execution context of a single task.
Definition dispatcher.hpp:46
ref_ptr< ScheduleTask > task
Definition dispatcher.hpp:48