Exemple #1
0
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;
}
Exemple #2
0
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;
    }