Domain decomp function
This commit is contained in:
parent
19ebf8b426
commit
9663b13ffb
@ -231,6 +231,7 @@ void Domain::Decomp(std::shared_ptr<Database> domain_db )
|
|||||||
//.......................................................................
|
//.......................................................................
|
||||||
// Reading the domain information file
|
// Reading the domain information file
|
||||||
//.......................................................................
|
//.......................................................................
|
||||||
|
int rank_offset = 0;
|
||||||
int nprocs, nprocx, nprocy, nprocz, nx, ny, nz;
|
int nprocs, nprocx, nprocy, nprocz, nx, ny, nz;
|
||||||
int64_t global_Nx,global_Ny,global_Nz;
|
int64_t global_Nx,global_Ny,global_Nz;
|
||||||
int64_t i,j,k,n;
|
int64_t i,j,k,n;
|
||||||
@ -316,17 +317,17 @@ void Domain::Decomp(std::shared_ptr<Database> domain_db )
|
|||||||
|
|
||||||
char *SegData = NULL;
|
char *SegData = NULL;
|
||||||
// Rank=0 reads the entire segmented data and distributes to worker processes
|
// Rank=0 reads the entire segmented data and distributes to worker processes
|
||||||
if (rank==0){
|
if (rank()==0){
|
||||||
printf("Dimensions of segmented image: %ld x %ld x %ld \n",global_Nx,global_Ny,global_Nz);
|
printf("Dimensions of segmented image: %ld x %ld x %ld \n",global_Nx,global_Ny,global_Nz);
|
||||||
int64_t SIZE = global_Nx*global_Ny*global_Nz;
|
int64_t SIZE = global_Nx*global_Ny*global_Nz;
|
||||||
SegData = new char[SIZE];
|
SegData = new char[SIZE];
|
||||||
if (ReadType == "8bit"){
|
if (ReadType == "8bit"){
|
||||||
printf("Reading 8-bit input data \n");
|
printf("Reading 8-bit input data \n");
|
||||||
FILE *SEGDAT = fopen(Filename.c_str(),"rb");
|
FILE *SEGDAT = fopen(Filename.c_str(),"rb");
|
||||||
if (SEGDAT==NULL) ERROR("Error reading segmented data");
|
if (SEGDAT==NULL) ERROR("Domain.cpp: Error reading segmented data");
|
||||||
size_t ReadSeg;
|
size_t ReadSeg;
|
||||||
ReadSeg=fread(SegData,1,SIZE,SEGDAT);
|
ReadSeg=fread(SegData,1,SIZE,SEGDAT);
|
||||||
if (ReadSeg != size_t(SIZE)) printf("lbpm_segmented_decomp: Error reading segmented data (rank=%i)\n",rank);
|
if (ReadSeg != size_t(SIZE)) printf("Domain.cpp: Error reading segmented data \n");
|
||||||
fclose(SEGDAT);
|
fclose(SEGDAT);
|
||||||
}
|
}
|
||||||
else if (ReadType == "16bit"){
|
else if (ReadType == "16bit"){
|
||||||
@ -334,10 +335,10 @@ void Domain::Decomp(std::shared_ptr<Database> domain_db )
|
|||||||
short int *InputData;
|
short int *InputData;
|
||||||
InputData = new short int[SIZE];
|
InputData = new short int[SIZE];
|
||||||
FILE *SEGDAT = fopen(Filename.c_str(),"rb");
|
FILE *SEGDAT = fopen(Filename.c_str(),"rb");
|
||||||
if (SEGDAT==NULL) ERROR("Error reading segmented data");
|
if (SEGDAT==NULL) ERROR("Domain.cpp: Error reading segmented data");
|
||||||
size_t ReadSeg;
|
size_t ReadSeg;
|
||||||
ReadSeg=fread(InputData,2,SIZE,SEGDAT);
|
ReadSeg=fread(InputData,2,SIZE,SEGDAT);
|
||||||
if (ReadSeg != size_t(SIZE)) printf("lbpm_segmented_decomp: Error reading segmented data (rank=%i)\n",rank);
|
if (ReadSeg != size_t(SIZE)) printf("Domain.cpp: Error reading segmented data \n");
|
||||||
fclose(SEGDAT);
|
fclose(SEGDAT);
|
||||||
for (int n=0; n<SIZE; n++){
|
for (int n=0; n<SIZE; n++){
|
||||||
SegData[n] = char(InputData[n]);
|
SegData[n] = char(InputData[n]);
|
||||||
@ -473,7 +474,7 @@ void Domain::Decomp(std::shared_ptr<Database> domain_db )
|
|||||||
|
|
||||||
std::vector<int> LabelCount(ReadValues.size(),0);
|
std::vector<int> LabelCount(ReadValues.size(),0);
|
||||||
// Set up the sub-domains
|
// Set up the sub-domains
|
||||||
if (rank==0){
|
if (rank()==0){
|
||||||
printf("Distributing subdomains across %i processors \n",nprocs);
|
printf("Distributing subdomains across %i processors \n",nprocs);
|
||||||
printf("Process grid: %i x %i x %i \n",nprocx,nprocy,nprocz);
|
printf("Process grid: %i x %i x %i \n",nprocx,nprocy,nprocz);
|
||||||
printf("Subdomain size: %i x %i x %i \n",nx,ny,nz);
|
printf("Subdomain size: %i x %i x %i \n",nx,ny,nz);
|
||||||
|
@ -175,7 +175,7 @@ public: // Public variables (need to create accessors instead)
|
|||||||
signed char *id;
|
signed char *id;
|
||||||
|
|
||||||
void ReadIDs();
|
void ReadIDs();
|
||||||
void Decomp();
|
void Decomp(std::shared_ptr<Database> domain_db);
|
||||||
void CommunicateMeshHalo(DoubleArray &Mesh);
|
void CommunicateMeshHalo(DoubleArray &Mesh);
|
||||||
void CommInit();
|
void CommInit();
|
||||||
int PoreCount();
|
int PoreCount();
|
||||||
|
Loading…
Reference in New Issue
Block a user