Learning about reductions
void reduceResult(int result) { NodeType const num_nodes = ::vt::theContext()->getNumNodes(); (void)num_nodes; // don't warn about possibly unused variable fmt::print("reduction value={}\n", result); assert(num_nodes * 50 == result); } // Tutorial code to demonstrate using reduction on all nodes static inline void activeMessageReduce() { NodeType const this_node = ::vt::theContext()->getNode(); (void)this_node; // don't warn about unused variable NodeType const num_nodes = ::vt::theContext()->getNumNodes(); (void)num_nodes; // don't warn about unused variable /* * Perform reduction over all the nodes. */ NodeType const root_reduce_node = 0; auto r = vt::theCollective()->global(); r->reduce<reduceResult, collective::PlusOp>(vt::Node{root_reduce_node}, 50); }