static inline void bw_set_metric_info_len(perf_metrics_t *metric_info) { unsigned int atomic_sizes[ATOMICS_N_DTs] = {sizeof(int), sizeof(long), sizeof(long long)}; metric_info->cstyle = ATOMIC_COMM_STYLE; metric_info->type = UNI_DIR; metric_info->bwstyle = STYLE_ATOMIC; int snode = streaming_node(*metric_info); atomic_op_type op_type = OP_ADD; for(op_type = OP_ADD; op_type < SIZE_OF_OP; op_type++) { if(metric_info->my_node == 0 && op_type != OP_ADD) printf("\nshmem_%s\n", op_names[op_type]); metric_info->start_len = atomic_sizes[0]; metric_info->max_len = atomic_sizes[0]; metric_info->size_inc = NUM_INC; shmem_barrier_all(); uni_bw(atomic_sizes[0], metric_info, snode, int, int, op_type); metric_info->start_len = atomic_sizes[1]; metric_info->max_len = atomic_sizes[1]; shmem_barrier_all(); uni_bw(atomic_sizes[1], metric_info, snode, long, long, op_type); metric_info->start_len = atomic_sizes[2]; metric_info->max_len = atomic_sizes[2]; shmem_barrier_all(); uni_bw(atomic_sizes[2], metric_info, snode, longlong, long long, op_type); } }
void uni_dir_bw(int len, perf_metrics_t *metric_info) { uni_bw(len, metric_info, !streaming_node(*metric_info)); }