28#ifndef _util_group_messaget_h
29#define _util_group_messaget_h
35#include <util/group/message.h>
41GrpSumReduce<T>::reduce(T*target, T*data,
int nelement)
43 for (
int i=0; i<nelement; i++) {
50GrpMinReduce<T>::reduce(T*target, T*data,
int nelement)
52 for (
int i=0; i<nelement; i++) {
53 if (target[i] > data[i]) target[i] = data[i];
59GrpMaxReduce<T>::reduce(T*target, T*data,
int nelement)
61 for (
int i=0; i<nelement; i++) {
62 if (target[i] < data[i]) target[i] = data[i];
68GrpArithmeticAndReduce<T>::reduce(T*target, T*data,
int nelement)
70 for (
int i=0; i<nelement; i++) {
71 target[i] = target[i] & data[i];
77GrpArithmeticOrReduce<T>::reduce(T*target, T*data,
int nelement)
79 for (
int i=0; i<nelement; i++) {
80 target[i] = target[i] | data[i];
86GrpArithmeticXOrReduce<T>::reduce(T*target, T*data,
int nelement)
88 for (
int i=0; i<nelement; i++) {
89 target[i] = target[i] ^ data[i];
95GrpProductReduce<T>::reduce(T*target, T*data,
int nelement)
97 for (
int i=0; i<nelement; i++) {
104GrpFunctionReduce<T>::reduce(T*target, T*data,
int nelement)
106 (*func_)(target,data,nelement);