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);
    }
}
Beispiel #2
0
void
uni_dir_bw(int len, perf_metrics_t *metric_info)
{
    uni_bw(len, metric_info, !streaming_node(*metric_info));
}