git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@7286 f3b2605a-c512-4ea7-a41b-209d697bcdaa

This commit is contained in:
sjplimp 2011-12-02 16:22:37 +00:00
parent 111f044b85
commit 10fe5508e2
1 changed files with 24 additions and 18 deletions

View File

@ -197,24 +197,24 @@ void Cuda::accelerator(int narg, char** arg)
{ {
if(strcmp(arg[i],"gpu/node")==0) if(strcmp(arg[i],"gpu/node")==0)
{ {
if(++i==narg) if(++i==narg)
error->all(FLERR,"Invalid Options for 'accelerator' command. Expecting a number or keyword 'special' after 'gpu/node' option."); error->all(FLERR,"Invalid Options for 'accelerator' command. Expecting a number after 'gpu/node' option.");
if(strcmp(arg[i],"special")==0)
{
if(++i==narg)
error->all(FLERR,"Invalid Options for 'accelerator' command. Expecting number of GPUs to be used per node after keyword 'gpu/node special'.");
pppn=atoi(arg[i]);
if(pppn<1) error->all(FLERR,"Invalid Options for 'accelerator' command. Expecting number of GPUs to be used per node after keyword 'gpu/node special'.");
if(i+pppn==narg)
error->all(FLERR,"Invalid Options for 'accelerator' command. Expecting list of device ids after keyword 'gpu/node special'.");
devicelist=new int[pppn];
for(int k=0;k<pppn;k++)
{i++;devicelist[k]=atoi(arg[i]);}
}
else
pppn=atoi(arg[i]); pppn=atoi(arg[i]);
}
if(strcmp(arg[i],"gpu/node/special")==0)
{
if(++i==narg)
error->all(FLERR,"Invalid Options for 'accelerator' command. Expecting number of GPUs to be used per node after keyword 'gpu/node/special'.");
pppn=atoi(arg[i]);
if(pppn<1) error->all(FLERR,"Invalid Options for 'accelerator' command. Expecting number of GPUs to be used per node after keyword 'gpu/node special'.");
if(i+pppn==narg)
error->all(FLERR,"Invalid Options for 'accelerator' command. Expecting list of device ids after keyword 'gpu/node special'.");
devicelist=new int[pppn];
for(int k=0;k<pppn;k++)
{i++;devicelist[k]=atoi(arg[i]);}
} }
if(strcmp(arg[i],"pinned")==0) if(strcmp(arg[i],"pinned")==0)
{ {
if(++i==narg) if(++i==narg)
@ -222,34 +222,40 @@ void Cuda::accelerator(int narg, char** arg)
pinned=atoi(arg[i])==0?false:true; pinned=atoi(arg[i])==0?false:true;
if((pinned==false)&&(universe->me==0)) printf(" #CUDA: Pinned memory is not used for communication\n"); if((pinned==false)&&(universe->me==0)) printf(" #CUDA: Pinned memory is not used for communication\n");
} }
if(strcmp(arg[i],"timing")==0) if(strcmp(arg[i],"timing")==0)
{ {
dotiming=true; dotiming=true;
} }
if(strcmp(arg[i],"suffix")==0) if(strcmp(arg[i],"suffix")==0)
{ {
if(++i==narg) if(++i==narg)
error->all(FLERR,"Invalid Options for 'accelerator' command. Expecting a string after 'suffix' option."); error->all(FLERR,"Invalid Options for 'accelerator' command. Expecting a string after 'suffix' option.");
strcpy(lmp->suffix,arg[i]); strcpy(lmp->suffix,arg[i]);
} }
if(strcmp(arg[i],"overlap_comm")==0) if(strcmp(arg[i],"overlap_comm")==0)
{ {
shared_data.overlap_comm=1; shared_data.overlap_comm=1;
} }
if(strcmp(arg[i],"test")==0) if(strcmp(arg[i],"test")==0)
{ {
if(++i==narg) if(++i==narg)
error->all(FLERR,"Invalid Options for 'accelerator' command. Expecting a number after 'dotest' option."); error->all(FLERR,"Invalid Options for 'accelerator' command. Expecting a number after 'test' option.");
testatom=atof(arg[i]); testatom=atof(arg[i]);
dotestatom=true; dotestatom=true;
} }
if(strcmp(arg[i],"override/bpa")==0) if(strcmp(arg[i],"override/bpa")==0)
{ {
if(++i==narg) if(++i==narg)
error->all(FLERR,"Invalid Options for 'accelerator' command. Expecting a number after 'override_bpa' option."); error->all(FLERR,"Invalid Options for 'accelerator' command. Expecting a number after 'override/bpa' option.");
shared_data.pair.override_block_per_atom = atoi(arg[i]); shared_data.pair.override_block_per_atom = atoi(arg[i]);
} }
} }
CudaWrapper_Init(0, (char**)0,universe->me,pppn,devicelist); CudaWrapper_Init(0, (char**)0,universe->me,pppn,devicelist);
//if(shared_data.overlap_comm) //if(shared_data.overlap_comm)
CudaWrapper_AddStreams(3); CudaWrapper_AddStreams(3);