int PARMCI_GetValueInt(void *src, int proc) { int val; assert(COMEX_SUCCESS == comex_get(src, &val, sizeof(int), proc, COMEX_GROUP_WORLD)); return val; }
long PARMCI_GetValueLong(void *src, int proc) { long val; assert(COMEX_SUCCESS == comex_get(src, &val, sizeof(long), proc, COMEX_GROUP_WORLD)); return val; }
double PARMCI_GetValueDouble(void *src, int proc) { double val; assert(COMEX_SUCCESS == comex_get(src, &val, sizeof(double), proc, COMEX_GROUP_WORLD)); return val; }
int comex_nbget(void *src, void *dst, int bytes, int proc, comex_group_t group, comex_request_t *hdl) { int rc; rc = comex_get(src, dst, bytes, proc, group); return 0; }
int comex_acc(int datatype, void *scale, void *src_ptr, void *dst_ptr, int bytes, int proc, comex_group_t group) { double *get_buf = (double *)l_state.acc_buf; double *_src_buf = (double *)src_ptr; double calc_scale = *(double *)scale; int m, limit; assert(bytes <= l_state.acc_buf_len); assert(datatype == COMEX_ACC_DBL); assert(get_buf); COMEXD_network_lock(proc); comex_get(dst_ptr, get_buf, bytes, proc, group); for (m=0, limit=bytes/sizeof(double); m<limit; ++m) { if (calc_scale == 1.0) { get_buf[m] += _src_buf[m]; } else { get_buf[m] += calc_scale * _src_buf[m]; } } comex_put(get_buf, dst_ptr, bytes, proc, group); COMEXD_network_unlock(proc); return 0; }
int comex_getv(comex_giov_t *iov, int iov_len, int proc, comex_group_t group) { int i; for (i=0; i<iov_len; ++i) { int j; void **src = iov[i].src; void **dst = iov[i].dst; int bytes = iov[i].bytes; int limit = iov[i].count; for (j=0; j<limit; ++j) { comex_get(src[j], dst[j], bytes, proc, group); } } return COMEX_SUCCESS; }
int PARMCI_Get(void *src, void *dst, int bytes, int proc) { return comex_get(src, dst, bytes, proc, COMEX_GROUP_WORLD); }