黄老板逆天重写
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
#include "prolongrestrict.h"
|
||||
#include "misc.h"
|
||||
#include "parameters.h"
|
||||
|
||||
#include <omp.h>
|
||||
int Parallel::partition1(int &nx, int split_size, int min_width, int cpusize, int shape) // special for 1 diemnsion
|
||||
{
|
||||
nx = Mymax(1, shape / min_width);
|
||||
@@ -3338,7 +3338,7 @@ int Parallel::data_packer(double *data, MyList<Parallel::gridseg> *src, MyList<P
|
||||
{
|
||||
int myrank;
|
||||
MPI_Comm_rank(MPI_COMM_WORLD, &myrank);
|
||||
|
||||
// double time1 = omp_get_wtime();
|
||||
int DIM = dim;
|
||||
|
||||
if (dir != PACK && dir != UNPACK)
|
||||
@@ -3361,7 +3361,6 @@ int Parallel::data_packer(double *data, MyList<Parallel::gridseg> *src, MyList<P
|
||||
varls = varls->next;
|
||||
varld = varld->next;
|
||||
}
|
||||
|
||||
if (varls || varld)
|
||||
{
|
||||
cout << "error in short data packer, var lists does not match." << endl;
|
||||
@@ -3375,7 +3374,6 @@ int Parallel::data_packer(double *data, MyList<Parallel::gridseg> *src, MyList<P
|
||||
type = 2;
|
||||
else
|
||||
type = 3;
|
||||
|
||||
while (src && dst)
|
||||
{
|
||||
if ((dir == PACK && dst->data->Bg->rank == rank_in && src->data->Bg->rank == myrank) ||
|
||||
@@ -3385,6 +3383,7 @@ int Parallel::data_packer(double *data, MyList<Parallel::gridseg> *src, MyList<P
|
||||
varld = VarListd;
|
||||
while (varls && varld)
|
||||
{
|
||||
|
||||
if (data)
|
||||
{
|
||||
if (dir == PACK)
|
||||
@@ -3405,6 +3404,7 @@ int Parallel::data_packer(double *data, MyList<Parallel::gridseg> *src, MyList<P
|
||||
f_prolong3(DIM, src->data->Bg->bbox, src->data->Bg->bbox + dim, src->data->Bg->shape, src->data->Bg->fgfs[varls->data->sgfn],
|
||||
dst->data->llb, dst->data->uub, dst->data->shape, data + size_out,
|
||||
dst->data->llb, dst->data->uub, varls->data->SoA, Symmetry);
|
||||
|
||||
}
|
||||
if (dir == UNPACK) // from target data to corresponding grid
|
||||
f_copy(DIM, dst->data->Bg->bbox, dst->data->Bg->bbox + dim, dst->data->Bg->shape, dst->data->Bg->fgfs[varld->data->sgfn],
|
||||
@@ -3418,8 +3418,14 @@ int Parallel::data_packer(double *data, MyList<Parallel::gridseg> *src, MyList<P
|
||||
}
|
||||
dst = dst->next;
|
||||
src = src->next;
|
||||
}
|
||||
|
||||
}
|
||||
// double time2 = omp_get_wtime();
|
||||
// xxx += time2 - time1;
|
||||
// if(myrank == 0){
|
||||
// printf("prolong3 time = %lf\n", time2 - time1);
|
||||
|
||||
// }
|
||||
return size_out;
|
||||
}
|
||||
int Parallel::data_packermix(double *data, MyList<Parallel::gridseg> *src, MyList<Parallel::gridseg> *dst, int rank_in, int dir,
|
||||
@@ -3514,7 +3520,7 @@ void Parallel::transfer(MyList<Parallel::gridseg> **src, MyList<Parallel::gridse
|
||||
MPI_Comm_rank(MPI_COMM_WORLD, &myrank);
|
||||
|
||||
int node;
|
||||
|
||||
// double time1 = omp_get_wtime();
|
||||
MPI_Request *reqs;
|
||||
MPI_Status *stats;
|
||||
reqs = new MPI_Request[2 * cpusize];
|
||||
@@ -3583,7 +3589,9 @@ void Parallel::transfer(MyList<Parallel::gridseg> **src, MyList<Parallel::gridse
|
||||
if (rec_data[node])
|
||||
delete[] rec_data[node];
|
||||
}
|
||||
|
||||
// double time2 = omp_get_wtime();
|
||||
// if (myrank == 0)
|
||||
// printf("transfer time = %lf\n", time2 - time1);
|
||||
delete[] reqs;
|
||||
delete[] stats;
|
||||
delete[] send_data;
|
||||
|
||||
Reference in New Issue
Block a user