kill dead code
This commit is contained in:
@@ -343,997 +343,6 @@ void ScaLBL_Communicator::D3Q19_MapRecv(int Cqx, int Cqy, int Cqz, int *list, i
|
||||
delete [] ReturnDist;
|
||||
}
|
||||
|
||||
|
||||
void ScaLBL_Communicator::MemoryDenseLayout(IntArray &Map, int *neighborList, char *id, int Np){
|
||||
/*
|
||||
* Generate a memory optimized layout
|
||||
* id[n] == 0 implies that site n should be ignored (treat as a mask)
|
||||
* Map(i,j,k) = idx <- this is the index for the memory optimized layout
|
||||
* neighborList(idx) <-stores the neighbors for the D3Q19 model
|
||||
* note that the number of communications remains the same
|
||||
* the index in the Send and Recv lists is also updated
|
||||
* this means that the commuincations are no longer valid for regular data structures
|
||||
*/
|
||||
int idx,i,j,k,n;
|
||||
|
||||
// Check that Map has size matching sub-domain
|
||||
if (Map.size(0) != Nx)
|
||||
ERROR("ScaLBL_Communicator::MemoryDenseLayout: Map array dimensions do not match! \n");
|
||||
|
||||
// Initialize Map
|
||||
for (k=0;k<Nz;k++){
|
||||
for (j=0;j<Ny;j++){
|
||||
for (i=0;i<Nx;i++){
|
||||
Map(i,j,k) = -2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// for (k=1;k<Nz-1;k++){
|
||||
// printf("....k=%i .....\n",k);
|
||||
// for (j=1;j<Ny-1;j++){
|
||||
// for (i=1;i<Nx-1;i++){
|
||||
// n=k*Nx*Ny+j*Nx+i;
|
||||
// idx=Map(i,j,k);
|
||||
// printf("%i ",idx);
|
||||
// }
|
||||
// printf("\n");
|
||||
// }
|
||||
// }
|
||||
// printf("\n\n");
|
||||
|
||||
|
||||
// Create dense map structure
|
||||
idx=0;
|
||||
for (k=1; k<Nz-1; k++){
|
||||
for (j=1; j<Ny-1; j++){
|
||||
for (i=1; i<Nx-1; i++){
|
||||
// domain interior
|
||||
Map(i,j,k) = -1;
|
||||
// Local index
|
||||
n = k*Nx*Ny+j*Nx+i;
|
||||
if (id[n] != 0){ // forget about solid for a moment
|
||||
// Counts for the six faces
|
||||
|
||||
Map(n)=idx++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (idx > Np ){
|
||||
ERROR("ScaLBL_Communicator::MemoryDenseLayout: Failed to create memory efficient layout!\n");
|
||||
}
|
||||
|
||||
// for (k=1;k<Nz-1;k++){
|
||||
// printf("....k=%i .....\n",k);
|
||||
// for (j=1;j<Ny-1;j++){
|
||||
// for (i=1;i<Nx-1;i++){
|
||||
// n=k*Nx*Ny+j*Nx+i;
|
||||
// idx=Map(i,j,k);
|
||||
// printf("%i ",idx);
|
||||
// }
|
||||
// printf("\n");
|
||||
// }
|
||||
// }
|
||||
// printf("\n\n");
|
||||
|
||||
|
||||
// Now use Map to determine the neighbors for each lattice direction
|
||||
for (k=1;k<Nz-1;k++){
|
||||
for (j=1;j<Ny-1;j++){
|
||||
for (i=1;i<Nx-1;i++){
|
||||
n=k*Nx*Ny+j*Nx+i;
|
||||
idx=Map(i,j,k);
|
||||
if (idx > Np) printf("ScaLBL_Communicator::MemoryDenseLayout: Map(%i,%i,%i) = %i > %i \n",i,j,k,Map(i,j,k),Np);
|
||||
else if (!(idx<0)){
|
||||
// store the idx associated with each neighbor
|
||||
// store idx for self if neighbor is in solid or out of domain
|
||||
//D3Q19 = {{1,0,0},{-1,0,0}
|
||||
// {0,1,0},{0,-1,0}
|
||||
// {0,0,1},{0,0,-1},
|
||||
// {1,1,0},{-1,-1,0},
|
||||
// {1,-1,0},{-1,1,0},
|
||||
// {1,0,1},{-1,0,-1},
|
||||
// {1,0,-1},{-1,0,1},
|
||||
// {0,1,1},{0,-1,-1},
|
||||
// {0,1,-1},{0,-1,1}};
|
||||
// note that only odd distributions need to be stored to execute the swap algorithm
|
||||
int neighbor; // cycle through the neighbors of lattice site idx
|
||||
neighbor=Map(i+1,j,k);
|
||||
if (neighbor==-2) neighborList[idx]=-1;
|
||||
else if (neighbor<0) neighborList[idx]=idx;
|
||||
else neighborList[idx]=neighbor;
|
||||
|
||||
neighbor=Map(i,j+1,k);
|
||||
if (neighbor==-2) neighborList[Np+idx]=-1;
|
||||
else if (neighbor<0) neighborList[Np+idx]=idx;
|
||||
else neighborList[Np+idx]=neighbor;
|
||||
|
||||
neighbor=Map(i,j,k+1);
|
||||
if (neighbor==-2) neighborList[2*Np+idx]=-1;
|
||||
else if (neighbor<0) neighborList[2*Np+idx]=idx;
|
||||
else neighborList[2*Np+idx]=neighbor;
|
||||
|
||||
neighbor=Map(i+1,j+1,k);
|
||||
if (neighbor==-2) neighborList[3*Np+idx]=-1;
|
||||
else if (neighbor<0) neighborList[3*Np+idx]=idx;
|
||||
else neighborList[3*Np+idx]=neighbor;
|
||||
|
||||
neighbor=Map(i+1,j-1,k);
|
||||
if (neighbor==-2) neighborList[4*Np+idx]=-1;
|
||||
else if (neighbor<0) neighborList[4*Np+idx]=idx;
|
||||
else neighborList[4*Np+idx]=neighbor;
|
||||
|
||||
neighbor=Map(i+1,j,k+1);
|
||||
if (neighbor==-2) neighborList[5*Np+idx]=-1;
|
||||
else if (neighbor<0) neighborList[5*Np+idx]=idx;
|
||||
else neighborList[5*Np+idx]=neighbor;
|
||||
|
||||
neighbor=Map(i+1,j,k-1);
|
||||
if (neighbor==-2) neighborList[6*Np+idx]=-1;
|
||||
else if (neighbor<0) neighborList[6*Np+idx]=idx;
|
||||
else neighborList[6*Np+idx]=neighbor;
|
||||
|
||||
neighbor=Map(i,j+1,k+1);
|
||||
if (neighbor==-2) neighborList[7*Np+idx]=-1;
|
||||
else if (neighbor<0) neighborList[7*Np+idx]=idx;
|
||||
else neighborList[7*Np+idx]=neighbor;
|
||||
|
||||
neighbor=Map(i,j+1,k-1);
|
||||
if (neighbor==-2) neighborList[8*Np+idx]=-1;
|
||||
else if (neighbor<0) neighborList[8*Np+idx]=idx;
|
||||
else neighborList[8*Np+idx]=neighbor;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//for (idx=0; idx<Np; idx++) printf("%i: %i %i\n", idx, neighborList[3*Np+idx], neighborList[4*Np+idx]);
|
||||
//.......................................................................
|
||||
// Now map through SendList and RecvList to update indices
|
||||
// First loop over the send lists
|
||||
|
||||
int *TempBuffer;
|
||||
TempBuffer = new int [5*RecvCount];
|
||||
|
||||
//.......................................................................
|
||||
// Re-index the send lists
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcSendList_x,sendCount_x*sizeof(int));
|
||||
for (i=0; i<sendCount_x; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcSendList_x,TempBuffer,sendCount_x*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcSendList_y,sendCount_y*sizeof(int));
|
||||
for (i=0; i<sendCount_y; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcSendList_y,TempBuffer,sendCount_y*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcSendList_z,sendCount_z*sizeof(int));
|
||||
for (i=0; i<sendCount_z; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcSendList_z,TempBuffer,sendCount_z*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcSendList_X,sendCount_X*sizeof(int));
|
||||
for (i=0; i<sendCount_X; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcSendList_X,TempBuffer,sendCount_X*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcSendList_Y,sendCount_Y*sizeof(int));
|
||||
for (i=0; i<sendCount_Y; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcSendList_Y,TempBuffer,sendCount_Y*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcSendList_Z,sendCount_Z*sizeof(int));
|
||||
for (i=0; i<sendCount_Z; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcSendList_Z,TempBuffer,sendCount_Z*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcSendList_xy,sendCount_xy*sizeof(int));
|
||||
for (i=0; i<sendCount_xy; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcSendList_xy,TempBuffer,sendCount_xy*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcSendList_xY,sendCount_xY*sizeof(int));
|
||||
for (i=0; i<sendCount_xY; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcSendList_xY,TempBuffer,sendCount_xY*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcSendList_Xy,sendCount_Xy*sizeof(int));
|
||||
for (i=0; i<sendCount_Xy; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcSendList_Xy,TempBuffer,sendCount_Xy*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcSendList_XY,sendCount_XY*sizeof(int));
|
||||
for (i=0; i<sendCount_XY; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcSendList_XY,TempBuffer,sendCount_XY*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcSendList_xz,sendCount_xz*sizeof(int));
|
||||
for (i=0; i<sendCount_xz; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcSendList_xz,TempBuffer,sendCount_xz*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcSendList_xZ,sendCount_xZ*sizeof(int));
|
||||
for (i=0; i<sendCount_xZ; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcSendList_xZ,TempBuffer,sendCount_xZ*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcSendList_Xz,sendCount_Xz*sizeof(int));
|
||||
for (i=0; i<sendCount_Xz; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcSendList_Xz,TempBuffer,sendCount_Xz*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcSendList_XZ,sendCount_XZ*sizeof(int));
|
||||
for (i=0; i<sendCount_XZ; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcSendList_XZ,TempBuffer,sendCount_XZ*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcSendList_yz,sendCount_yz*sizeof(int));
|
||||
for (i=0; i<sendCount_yz; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcSendList_yz,TempBuffer,sendCount_yz*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcSendList_Yz,sendCount_Yz*sizeof(int));
|
||||
for (i=0; i<sendCount_Yz; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcSendList_Yz,TempBuffer,sendCount_Yz*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcSendList_yZ,sendCount_yZ*sizeof(int));
|
||||
for (i=0; i<sendCount_yZ; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcSendList_yZ,TempBuffer,sendCount_yZ*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcSendList_YZ,sendCount_YZ*sizeof(int));
|
||||
for (i=0; i<sendCount_YZ; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcSendList_YZ,TempBuffer,sendCount_YZ*sizeof(int));
|
||||
//.......................................................................
|
||||
// Re-index the recieve lists for the D3Q19 distributions
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcRecvDist_x,5*recvCount_x*sizeof(int));
|
||||
for (i=0; i<5*recvCount_x; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
// printf("dvcRecvList_x: Map(%i)=%i \n",n,idx);
|
||||
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcRecvDist_x,TempBuffer,5*recvCount_x*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcRecvDist_y,5*recvCount_y*sizeof(int));
|
||||
for (i=0; i<5*recvCount_y; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcRecvDist_y,TempBuffer,5*recvCount_y*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcRecvDist_z,5*recvCount_z*sizeof(int));
|
||||
for (i=0; i<5*recvCount_z; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcRecvDist_z,TempBuffer,5*recvCount_z*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcRecvDist_X,5*recvCount_X*sizeof(int));
|
||||
for (i=0; i<5*recvCount_X; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcRecvDist_X,TempBuffer,5*recvCount_X*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcRecvDist_Y,5*recvCount_Y*sizeof(int));
|
||||
for (i=0; i<5*recvCount_Y; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcRecvDist_Y,TempBuffer,5*recvCount_Y*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcRecvDist_Z,5*recvCount_Z*sizeof(int));
|
||||
for (i=0; i<5*recvCount_Z; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcRecvDist_Z,TempBuffer,5*recvCount_Z*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcRecvDist_xy,recvCount_xy*sizeof(int));
|
||||
for (i=0; i<recvCount_xy; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcRecvDist_xy,TempBuffer,recvCount_xy*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcRecvDist_xY,recvCount_xY*sizeof(int));
|
||||
for (i=0; i<recvCount_xY; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcRecvDist_xY,TempBuffer,recvCount_xY*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcRecvDist_Xy,recvCount_Xy*sizeof(int));
|
||||
for (i=0; i<recvCount_Xy; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcRecvDist_Xy,TempBuffer,recvCount_Xy*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcRecvDist_XY,recvCount_XY*sizeof(int));
|
||||
for (i=0; i<recvCount_XY; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcRecvDist_XY,TempBuffer,recvCount_XY*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcRecvDist_xz,recvCount_xz*sizeof(int));
|
||||
for (i=0; i<recvCount_xz; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcRecvDist_xz,TempBuffer,recvCount_xz*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcRecvDist_xZ,recvCount_xZ*sizeof(int));
|
||||
for (i=0; i<recvCount_xZ; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcRecvDist_xZ,TempBuffer,recvCount_xZ*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcRecvDist_Xz,recvCount_Xz*sizeof(int));
|
||||
for (i=0; i<recvCount_Xz; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcRecvDist_Xz,TempBuffer,recvCount_Xz*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcRecvDist_XZ,recvCount_XZ*sizeof(int));
|
||||
for (i=0; i<recvCount_XZ; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcRecvDist_XZ,TempBuffer,recvCount_XZ*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcRecvDist_yz,recvCount_yz*sizeof(int));
|
||||
for (i=0; i<recvCount_yz; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcRecvDist_yz,TempBuffer,recvCount_yz*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcRecvDist_Yz,recvCount_Yz*sizeof(int));
|
||||
for (i=0; i<recvCount_Yz; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcRecvDist_Yz,TempBuffer,recvCount_Yz*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcRecvDist_yZ,recvCount_yZ*sizeof(int));
|
||||
for (i=0; i<recvCount_yZ; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcRecvDist_yZ,TempBuffer,recvCount_yZ*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcRecvDist_YZ,recvCount_YZ*sizeof(int));
|
||||
for (i=0; i<recvCount_YZ; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcRecvDist_YZ,TempBuffer,recvCount_YZ*sizeof(int));
|
||||
//.......................................................................
|
||||
|
||||
|
||||
// Reset the value of N to match the dense structure
|
||||
N = Np;
|
||||
|
||||
// Clean up
|
||||
delete [] TempBuffer;
|
||||
}
|
||||
|
||||
void ScaLBL_Communicator::MemoryDenseLayoutFull(IntArray &Map, int *neighborList, char *id, int Np){
|
||||
/*
|
||||
* Generate a memory optimized layout
|
||||
* id[n] == 0 implies that site n should be ignored (treat as a mask)
|
||||
* Map(i,j,k) = idx <- this is the index for the memory optimized layout
|
||||
* neighborList(idx) <-stores the neighbors for the D3Q19 model
|
||||
* note that the number of communications remains the same
|
||||
* the index in the Send and Recv lists is also updated
|
||||
* this means that the commuincations are no longer valid for regular data structures
|
||||
*/
|
||||
int idx,i,j,k,n;
|
||||
|
||||
// Check that Map has size matching sub-domain
|
||||
if (Map.size(0) != Nx)
|
||||
ERROR("ScaLBL_Communicator::MemoryDenseLayoutFull: Map array dimensions do not match! \n");
|
||||
|
||||
// Initialize Map
|
||||
for (k=0;k<Nz;k++){
|
||||
for (j=0;j<Ny;j++){
|
||||
for (i=0;i<Nx;i++){
|
||||
Map(i,j,k) = -2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// if (rank == 0) {
|
||||
// printf("* Displaying the initial map from rank %d\n",rank);
|
||||
// for (k=0;k<Nz;k++){
|
||||
// printf("....k=%i .....\n",k);
|
||||
// for (j=0;j<Ny;j++){
|
||||
// for (i=0;i<Nx;i++){
|
||||
// n=k*Nx*Ny+j*Nx+i;
|
||||
// idx=Map(i,j,k);
|
||||
// printf("%i ",idx);
|
||||
// }
|
||||
// printf("\n");
|
||||
// }
|
||||
// }
|
||||
// printf("\n\n");
|
||||
// }
|
||||
|
||||
|
||||
// Create dense map structure
|
||||
idx=0;
|
||||
for (k=1; k<Nz-1; k++){
|
||||
for (j=1; j<Ny-1; j++){
|
||||
for (i=1; i<Nx-1; i++){
|
||||
// domain interior
|
||||
Map(i,j,k) = -1;
|
||||
// Local index
|
||||
n = k*Nx*Ny+j*Nx+i;
|
||||
if (id[n] != 0){ // forget about solid for a moment
|
||||
// Counts for the six faces
|
||||
|
||||
Map(n)=idx++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (idx > Np ){
|
||||
ERROR("ScaLBL_Communicator::MemoryDenseLayoutFull: Failed to create memory efficient layout!\n");
|
||||
}
|
||||
|
||||
// if (rank == 0) {
|
||||
// printf("* Displaying the final map from rank %d\n",rank);
|
||||
//
|
||||
// for (k=1;k<Nz-1;k++){
|
||||
// printf("....k=%i .....\n",k);
|
||||
// for (j=1;j<Ny-1;j++){
|
||||
// for (i=1;i<Nx-1;i++){
|
||||
// n=k*Nx*Ny+j*Nx+i;
|
||||
// idx=Map(i,j,k);
|
||||
// printf("%i ",idx);
|
||||
// }
|
||||
// printf("\n");
|
||||
// }
|
||||
// }
|
||||
// printf("\n\n");
|
||||
// }
|
||||
|
||||
// Now use Map to determine the neighbors for each lattice direction
|
||||
for (k=1;k<Nz-1;k++){
|
||||
for (j=1;j<Ny-1;j++){
|
||||
for (i=1;i<Nx-1;i++){
|
||||
n=k*Nx*Ny+j*Nx+i;
|
||||
idx=Map(i,j,k);
|
||||
if (idx > Np) printf("ScaLBL_Communicator::MemoryDenseLayoutFull: Map(%i,%i,%i) = %i > %i \n",i,j,k,Map(i,j,k),Np);
|
||||
else if (!(idx<0)){
|
||||
// store the idx associated with each neighbor
|
||||
// store idx for self if neighbor is in solid or out of domain
|
||||
//D3Q19 = {{1,0,0},{-1,0,0}
|
||||
// {0,1,0},{0,-1,0}
|
||||
// {0,0,1},{0,0,-1},
|
||||
// {1,1,0},{-1,-1,0},
|
||||
// {1,-1,0},{-1,1,0},
|
||||
// {1,0,1},{-1,0,-1},
|
||||
// {1,0,-1},{-1,0,1},
|
||||
// {0,1,1},{0,-1,-1},
|
||||
// {0,1,-1},{0,-1,1}};
|
||||
|
||||
|
||||
/*
|
||||
* Storing the full neighbor list. The AA algorithm may require fewer neighbors but I'm saving everything for now...
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
int neighbor; // cycle through the neighbors of lattice site idx
|
||||
neighbor=Map(i+1,j,k);
|
||||
if (neighbor==-2) neighborList[idx]=-1;
|
||||
else if (neighbor<0) neighborList[idx]=idx;
|
||||
else neighborList[idx]=neighbor;
|
||||
|
||||
// 2
|
||||
neighbor=Map(i-1,j,k);
|
||||
if (neighbor==-2) neighborList[Np+idx]=-1;
|
||||
else if (neighbor<0) neighborList[Np+idx]=idx;
|
||||
else neighborList[Np+idx]=neighbor;
|
||||
|
||||
neighbor=Map(i,j+1,k);
|
||||
if (neighbor==-2) neighborList[2*Np+idx]=-1;
|
||||
else if (neighbor<0) neighborList[2*Np+idx]=idx;
|
||||
else neighborList[2*Np+idx]=neighbor;
|
||||
|
||||
// 4
|
||||
neighbor=Map(i,j-1,k);
|
||||
if (neighbor==-2) neighborList[3*Np+idx]=-1;
|
||||
else if (neighbor<0) neighborList[3*Np+idx]=idx;
|
||||
else neighborList[3*Np+idx]=neighbor;
|
||||
|
||||
|
||||
neighbor=Map(i,j,k+1);
|
||||
if (neighbor==-2) neighborList[4*Np+idx]=-1;
|
||||
else if (neighbor<0) neighborList[4*Np+idx]=idx;
|
||||
else neighborList[4*Np+idx]=neighbor;
|
||||
|
||||
// 6
|
||||
neighbor=Map(i,j,k-1);
|
||||
if (neighbor==-2) neighborList[5*Np+idx]=-1;
|
||||
else if (neighbor<0) neighborList[5*Np+idx]=idx;
|
||||
else neighborList[5*Np+idx]=neighbor;
|
||||
|
||||
neighbor=Map(i+1,j+1,k);
|
||||
if (neighbor==-2) neighborList[6*Np+idx]=-1;
|
||||
else if (neighbor<0) neighborList[6*Np+idx]=idx;
|
||||
else neighborList[6*Np+idx]=neighbor;
|
||||
|
||||
// 8
|
||||
neighbor=Map(i-1,j-1,k);
|
||||
if (neighbor==-2) neighborList[7*Np+idx]=-1;
|
||||
else if (neighbor<0) neighborList[7*Np+idx]=idx;
|
||||
else neighborList[7*Np+idx]=neighbor;
|
||||
|
||||
|
||||
neighbor=Map(i+1,j-1,k);
|
||||
if (neighbor==-2) neighborList[8*Np+idx]=-1;
|
||||
else if (neighbor<0) neighborList[8*Np+idx]=idx;
|
||||
else neighborList[8*Np+idx]=neighbor;
|
||||
|
||||
// 10
|
||||
neighbor=Map(i-1,j+1,k);
|
||||
if (neighbor==-2) neighborList[9*Np+idx]=-1;
|
||||
else if (neighbor<0) neighborList[9*Np+idx]=idx;
|
||||
else neighborList[9*Np+idx]=neighbor;
|
||||
|
||||
|
||||
neighbor=Map(i+1,j,k+1);
|
||||
if (neighbor==-2) neighborList[10*Np+idx]=-1;
|
||||
else if (neighbor<0) neighborList[10*Np+idx]=idx;
|
||||
else neighborList[10*Np+idx]=neighbor;
|
||||
|
||||
// 12
|
||||
neighbor=Map(i-1,j,k-1);
|
||||
if (neighbor==-2) neighborList[11*Np+idx]=-1;
|
||||
else if (neighbor<0) neighborList[11*Np+idx]=idx;
|
||||
else neighborList[11*Np+idx]=neighbor;
|
||||
|
||||
|
||||
neighbor=Map(i+1,j,k-1);
|
||||
if (neighbor==-2) neighborList[12*Np+idx]=-1;
|
||||
else if (neighbor<0) neighborList[12*Np+idx]=idx;
|
||||
else neighborList[12*Np+idx]=neighbor;
|
||||
|
||||
// 14
|
||||
neighbor=Map(i-1,j,k+1);
|
||||
if (neighbor==-2) neighborList[13*Np+idx]=-1;
|
||||
else if (neighbor<0) neighborList[13*Np+idx]=idx;
|
||||
else neighborList[13*Np+idx]=neighbor;
|
||||
|
||||
neighbor=Map(i,j+1,k+1);
|
||||
if (neighbor==-2) neighborList[14*Np+idx]=-1;
|
||||
else if (neighbor<0) neighborList[14*Np+idx]=idx;
|
||||
else neighborList[14*Np+idx]=neighbor;
|
||||
|
||||
// 16
|
||||
neighbor=Map(i,j-1,k-1);
|
||||
if (neighbor==-2) neighborList[15*Np+idx]=-1;
|
||||
else if (neighbor<0) neighborList[15*Np+idx]=idx;
|
||||
else neighborList[15*Np+idx]=neighbor;
|
||||
|
||||
neighbor=Map(i,j+1,k-1);
|
||||
if (neighbor==-2) neighborList[16*Np+idx]=-1;
|
||||
else if (neighbor<0) neighborList[16*Np+idx]=idx;
|
||||
else neighborList[16*Np+idx]=neighbor;
|
||||
|
||||
// 18
|
||||
neighbor=Map(i,j-1,k+1);
|
||||
if (neighbor==-2) neighborList[17*Np+idx]=-1;
|
||||
else if (neighbor<0) neighborList[17*Np+idx]=idx;
|
||||
else neighborList[17*Np+idx]=neighbor;
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//.......................................................................
|
||||
// Now map through SendList and RecvList to update indices
|
||||
// First loop over the send lists
|
||||
|
||||
int *TempBuffer;
|
||||
TempBuffer = new int [5*RecvCount];
|
||||
|
||||
//.......................................................................
|
||||
// Re-index the send lists
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcSendList_x,sendCount_x*sizeof(int));
|
||||
|
||||
for (i=0; i<sendCount_x; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcSendList_x,TempBuffer,sendCount_x*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcSendList_y,sendCount_y*sizeof(int));
|
||||
for (i=0; i<sendCount_y; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcSendList_y,TempBuffer,sendCount_y*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcSendList_z,sendCount_z*sizeof(int));
|
||||
for (i=0; i<sendCount_z; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcSendList_z,TempBuffer,sendCount_z*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcSendList_X,sendCount_X*sizeof(int));
|
||||
|
||||
for (i=0; i<sendCount_X; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcSendList_X,TempBuffer,sendCount_X*sizeof(int));
|
||||
|
||||
MPI_Barrier(MPI_COMM_WORLD);
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcSendList_Y,sendCount_Y*sizeof(int));
|
||||
for (i=0; i<sendCount_Y; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcSendList_Y,TempBuffer,sendCount_Y*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcSendList_Z,sendCount_Z*sizeof(int));
|
||||
for (i=0; i<sendCount_Z; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcSendList_Z,TempBuffer,sendCount_Z*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcSendList_xy,sendCount_xy*sizeof(int));
|
||||
for (i=0; i<sendCount_xy; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcSendList_xy,TempBuffer,sendCount_xy*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcSendList_xY,sendCount_xY*sizeof(int));
|
||||
for (i=0; i<sendCount_xY; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcSendList_xY,TempBuffer,sendCount_xY*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcSendList_Xy,sendCount_Xy*sizeof(int));
|
||||
for (i=0; i<sendCount_Xy; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcSendList_Xy,TempBuffer,sendCount_Xy*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcSendList_XY,sendCount_XY*sizeof(int));
|
||||
for (i=0; i<sendCount_XY; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcSendList_XY,TempBuffer,sendCount_XY*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcSendList_xz,sendCount_xz*sizeof(int));
|
||||
for (i=0; i<sendCount_xz; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcSendList_xz,TempBuffer,sendCount_xz*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcSendList_xZ,sendCount_xZ*sizeof(int));
|
||||
for (i=0; i<sendCount_xZ; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcSendList_xZ,TempBuffer,sendCount_xZ*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcSendList_Xz,sendCount_Xz*sizeof(int));
|
||||
for (i=0; i<sendCount_Xz; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcSendList_Xz,TempBuffer,sendCount_Xz*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcSendList_XZ,sendCount_XZ*sizeof(int));
|
||||
for (i=0; i<sendCount_XZ; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcSendList_XZ,TempBuffer,sendCount_XZ*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcSendList_yz,sendCount_yz*sizeof(int));
|
||||
for (i=0; i<sendCount_yz; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcSendList_yz,TempBuffer,sendCount_yz*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcSendList_Yz,sendCount_Yz*sizeof(int));
|
||||
for (i=0; i<sendCount_Yz; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcSendList_Yz,TempBuffer,sendCount_Yz*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcSendList_yZ,sendCount_yZ*sizeof(int));
|
||||
for (i=0; i<sendCount_yZ; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcSendList_yZ,TempBuffer,sendCount_yZ*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcSendList_YZ,sendCount_YZ*sizeof(int));
|
||||
for (i=0; i<sendCount_YZ; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcSendList_YZ,TempBuffer,sendCount_YZ*sizeof(int));
|
||||
|
||||
//.......................................................................
|
||||
// Re-index the recieve lists for the D3Q19 distributions
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcRecvDist_x,5*recvCount_x*sizeof(int));
|
||||
|
||||
for (i=0; i<5*recvCount_x; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcRecvDist_x,TempBuffer,5*recvCount_x*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcRecvDist_y,5*recvCount_y*sizeof(int));
|
||||
for (i=0; i<5*recvCount_y; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcRecvDist_y,TempBuffer,5*recvCount_y*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcRecvDist_z,5*recvCount_z*sizeof(int));
|
||||
for (i=0; i<5*recvCount_z; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcRecvDist_z,TempBuffer,5*recvCount_z*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcRecvDist_X,5*recvCount_X*sizeof(int));
|
||||
for (i=0; i<5*recvCount_X; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcRecvDist_X,TempBuffer,5*recvCount_X*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcRecvDist_Y,5*recvCount_Y*sizeof(int));
|
||||
for (i=0; i<5*recvCount_Y; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcRecvDist_Y,TempBuffer,5*recvCount_Y*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcRecvDist_Z,5*recvCount_Z*sizeof(int));
|
||||
for (i=0; i<5*recvCount_Z; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcRecvDist_Z,TempBuffer,5*recvCount_Z*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcRecvDist_xy,recvCount_xy*sizeof(int));
|
||||
for (i=0; i<recvCount_xy; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcRecvDist_xy,TempBuffer,recvCount_xy*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcRecvDist_xY,recvCount_xY*sizeof(int));
|
||||
for (i=0; i<recvCount_xY; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcRecvDist_xY,TempBuffer,recvCount_xY*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcRecvDist_Xy,recvCount_Xy*sizeof(int));
|
||||
for (i=0; i<recvCount_Xy; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcRecvDist_Xy,TempBuffer,recvCount_Xy*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcRecvDist_XY,recvCount_XY*sizeof(int));
|
||||
for (i=0; i<recvCount_XY; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcRecvDist_XY,TempBuffer,recvCount_XY*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcRecvDist_xz,recvCount_xz*sizeof(int));
|
||||
for (i=0; i<recvCount_xz; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcRecvDist_xz,TempBuffer,recvCount_xz*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcRecvDist_xZ,recvCount_xZ*sizeof(int));
|
||||
for (i=0; i<recvCount_xZ; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcRecvDist_xZ,TempBuffer,recvCount_xZ*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcRecvDist_Xz,recvCount_Xz*sizeof(int));
|
||||
for (i=0; i<recvCount_Xz; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcRecvDist_Xz,TempBuffer,recvCount_Xz*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcRecvDist_XZ,recvCount_XZ*sizeof(int));
|
||||
for (i=0; i<recvCount_XZ; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcRecvDist_XZ,TempBuffer,recvCount_XZ*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcRecvDist_yz,recvCount_yz*sizeof(int));
|
||||
for (i=0; i<recvCount_yz; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcRecvDist_yz,TempBuffer,recvCount_yz*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcRecvDist_Yz,recvCount_Yz*sizeof(int));
|
||||
for (i=0; i<recvCount_Yz; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcRecvDist_Yz,TempBuffer,recvCount_Yz*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcRecvDist_yZ,recvCount_yZ*sizeof(int));
|
||||
for (i=0; i<recvCount_yZ; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcRecvDist_yZ,TempBuffer,recvCount_yZ*sizeof(int));
|
||||
|
||||
ScaLBL_CopyToHost(TempBuffer,dvcRecvDist_YZ,recvCount_YZ*sizeof(int));
|
||||
for (i=0; i<recvCount_YZ; i++){
|
||||
n = TempBuffer[i];
|
||||
idx=Map(n);
|
||||
TempBuffer[i]=idx;
|
||||
}
|
||||
ScaLBL_CopyToDevice(dvcRecvDist_YZ,TempBuffer,recvCount_YZ*sizeof(int));
|
||||
//.......................................................................
|
||||
|
||||
|
||||
// Reset the value of N to match the dense structure
|
||||
N = Np;
|
||||
|
||||
// Clean up
|
||||
delete [] TempBuffer;
|
||||
}
|
||||
|
||||
int ScaLBL_Communicator::MemoryOptimizedLayoutAA(IntArray &Map, int *neighborList, char *id, int Np){
|
||||
/*
|
||||
* Generate a memory optimized layout
|
||||
|
||||
Reference in New Issue
Block a user