void IMB_set_bmark(struct Bench* Bmark) /* In/out variables: -Bmark (type struct Bench*) (For explanation of struct Bench type: describes all aspects of modes of a benchmark; see [1] for more information) On input, only the name of the benchmark is set. On output, all necessary run modes are set accordingly */ { BTYPES type; #if 0 int index; IMB_get_def_index(&index, Bmark->name); if( index < 0 ) { Bmark->RUN_MODES[0].type=BTYPE_INVALID; Bmark->RUN_MODES[1].type=BTYPE_INVALID; return; } #endif /* 0 */ Bmark->N_Modes = 1; Bmark->RUN_MODES[0].AGGREGATE =-1; Bmark->RUN_MODES[0].NONBLOCKING = 0; Bmark->reduction = 0; Bmark->Ntimes = 1; Bmark->select_source = 0; if (!strcmp(Bmark->name,"pingpong")) { strcpy(Bmark->name,"PingPong"); Bmark->Benchmark = IMB_pingpong; Bmark->bench_comments = &PingPong_cmt[0]; type = SingleTransfer; Bmark->scale_time = 0.5; } else if (!strcmp(Bmark->name,"pingping")) { strcpy(Bmark->name,"PingPing"); Bmark->Benchmark = IMB_pingping; Bmark->bench_comments = &PingPing_cmt[0]; type = SingleTransfer; } else if (!strcmp(Bmark->name,"pingpongspecificsource")) { strcpy(Bmark->name,"PingPongSpecificSource"); Bmark->Benchmark = IMB_pingpong; Bmark->select_source = 1; Bmark->bench_comments = &PingPong_cmt[0]; type = SingleTransfer; Bmark->scale_time = 0.5; } else if (!strcmp(Bmark->name,"pingpingspecificsource")) { strcpy(Bmark->name,"PingPingSpecificSource"); Bmark->Benchmark = IMB_pingping; Bmark->select_source = 1; Bmark->bench_comments = &PingPing_cmt[0]; type = SingleTransfer; } else if (!strcmp(Bmark->name,"sendrecv")) { strcpy(Bmark->name,"Sendrecv"); Bmark->Benchmark = IMB_sendrecv; Bmark->bench_comments = &Sendrecv_cmt[0]; type = ParallelTransfer; Bmark->scale_time = 1.0; Bmark->scale_bw = 2.0; } else if (!strcmp(Bmark->name,"exchange") ) { strcpy(Bmark->name,"Exchange"); Bmark->Benchmark = IMB_exchange; Bmark->bench_comments = &Exchange_cmt[0]; type = ParallelTransfer; Bmark->scale_time = 1.0; Bmark->scale_bw = 4.0; } else if (!strcmp(Bmark->name,"allreduce")) { strcpy(Bmark->name,"Allreduce"); Bmark->Benchmark = IMB_allreduce; type = Collective; Bmark->bench_comments = &Allreduce_cmt[0]; Bmark->reduction = 1; } else if (!strcmp(Bmark->name,"reduce")) { strcpy(Bmark->name,"Reduce"); Bmark->Benchmark = IMB_reduce; type = Collective; Bmark->bench_comments = &Reduce_cmt[0]; Bmark->reduction = 1; } else if (!strcmp(Bmark->name,"reduce_scatter")) { strcpy(Bmark->name,"Reduce_scatter"); Bmark->Benchmark = IMB_reduce_scatter; type = Collective; Bmark->bench_comments = &Reduce_scatter_cmt[0]; Bmark->reduction = 1; } else if (!strcmp(Bmark->name,"bcast")) { strcpy(Bmark->name,"Bcast"); Bmark->Benchmark = IMB_bcast; type = Collective; Bmark->bench_comments = &Bcast_cmt[0]; } else if (!strcmp(Bmark->name,"barrier")) { strcpy(Bmark->name,"Barrier"); Bmark->Benchmark = IMB_barrier; type = Sync; Bmark->bench_comments = &Barrier_cmt[0]; } else if (!strcmp(Bmark->name,"allgather")) { strcpy(Bmark->name,"Allgather"); Bmark->Benchmark = IMB_allgather; type = Collective; Bmark->bench_comments = &Allgather_cmt[0]; } else if (!strcmp(Bmark->name,"allgatherv")) { strcpy(Bmark->name,"Allgatherv"); Bmark->Benchmark = IMB_allgatherv; type = Collective; Bmark->bench_comments = &Allgatherv_cmt[0]; } else if (!strcmp(Bmark->name,"gather")) { strcpy(Bmark->name,"Gather"); Bmark->Benchmark = IMB_gather; type = Collective; Bmark->bench_comments = &Gather_cmt[0]; } else if (!strcmp(Bmark->name,"gatherv")) { strcpy(Bmark->name,"Gatherv"); Bmark->Benchmark = IMB_gatherv; type = Collective; Bmark->bench_comments = &Gatherv_cmt[0]; } else if (!strcmp(Bmark->name,"scatter")) { strcpy(Bmark->name,"Scatter"); Bmark->Benchmark = IMB_scatter; type = Collective; Bmark->bench_comments = &Scatter_cmt[0]; } else if (!strcmp(Bmark->name,"scatterv")) { strcpy(Bmark->name,"Scatterv"); Bmark->Benchmark = IMB_scatterv; type = Collective; Bmark->bench_comments = &Scatterv_cmt[0]; } else if (!strcmp(Bmark->name,"alltoall")) { strcpy(Bmark->name,"Alltoall"); Bmark->Benchmark = IMB_alltoall; type = Collective; Bmark->bench_comments = &Alltoall_cmt[0]; } else if (!strcmp(Bmark->name,"alltoallv")) { strcpy(Bmark->name,"Alltoallv"); Bmark->Benchmark = IMB_alltoallv; type = Collective; Bmark->bench_comments = &Alltoallv_cmt[0]; } else if (!strcmp(Bmark->name,"alltoallw")) { strcpy(Bmark->name,"Alltoallw"); Bmark->Benchmark = IMB_alltoallw; type = Collective; Bmark->bench_comments = &Alltoallv_cmt[0]; } else if (!strcmp(Bmark->name,"spmd_gather")) { strcpy(Bmark->name,"spmd_Gather"); Bmark->Benchmark = IMB_shr_spmd_gather; type = Collective; Bmark->bench_comments = &Gather_cmt[0]; } else if (!strcmp(Bmark->name,"spmd_gatherv")) { strcpy(Bmark->name,"spmd_Gatherv"); Bmark->Benchmark = IMB_shr_spmd_gatherv; type = Collective; Bmark->bench_comments = &Gatherv_cmt[0]; } else if (!strcmp(Bmark->name,"spmd_swapm")) { strcpy(Bmark->name,"spmd_swapm"); Bmark->Benchmark = IMB_shr_spmd_swapm; type = Collective; Bmark->bench_comments = &Alltoallv_cmt[0]; } else { type = BTYPE_INVALID; } Bmark->RUN_MODES[0].type=type; }
void IMB_set_bmark(struct Bench* Bmark) /* In/out variables: -Bmark (type struct Bench*) (For explanation of struct Bench type: describes all aspects of modes of a benchmark; see [1] for more information) On input, only the name of the benchmark is set. On output, all necessary run modes are set accordingly */ { BTYPES type; char *tmp_name; int md, nam_beg; #if 0 int index; IMB_get_def_index(&index,Bmark->name); if( index < 0 ) { Bmark->RUN_MODES[0].type=BTYPE_INVALID; Bmark->RUN_MODES[1].type=BTYPE_INVALID; return; } #endif Bmark->RUN_MODES[0].AGGREGATE=1; Bmark->RUN_MODES[1].AGGREGATE=0; Bmark->reduction=0; Bmark->Ntimes = 1; md = 0; nam_beg = 2; if( Bmark->name[0] == 's' ) { type = SingleTransfer; Bmark->name[0] = 'S'; if( Bmark->name[2] == 'i' ) { md = 1; nam_beg++; Bmark->name[2]='I'; } } if( Bmark->name[0] == 'p' ) { type = ParallelTransfer; Bmark->name[0] = 'P'; if( Bmark->name[2] == 'i' ) { md = 1; nam_beg++; Bmark->name[2]='I'; } } if( Bmark->name[0] == 'c' ) { type = Collective; Bmark->name[0] = 'C'; if( Bmark->name[2] == 'i' ) { md = 1; nam_beg++; Bmark->name[2]='I'; } } if( md ) do_nonblocking=1; Bmark->Ntimes += md; Bmark->RUN_MODES[0].NONBLOCKING =md; Bmark->RUN_MODES[1].NONBLOCKING =md; tmp_name=Bmark->name+nam_beg; if (!strcmp(tmp_name,"write_indv")) { strcpy(tmp_name,"Write_Indv"); Bmark->Benchmark = IMB_write_indv; Bmark->bench_comments = &Write_Indv_cmt[0]; Bmark->access = put; Bmark->fpointer = indv_block; } else if (!strcmp(tmp_name,"write_shared")) { strcpy(tmp_name,"Write_Shared"); Bmark->Benchmark = IMB_write_shared; Bmark->bench_comments = &Write_Shared_cmt[0]; Bmark->access = put; Bmark->fpointer = shared; } else if (!strcmp(tmp_name,"write_priv")) { strcpy(tmp_name,"Write_Priv"); Bmark->Benchmark = IMB_write_indv; Bmark->bench_comments = &Write_Priv_cmt[0]; Bmark->access = put; Bmark->fpointer = private; }