69 |
|
} |
70 |
|
|
71 |
|
void PRCGMinimizer::prepareStep(){ |
72 |
< |
std::vector<double> deltaGrad; |
73 |
< |
double beta; |
72 |
> |
std::vector<RealType> deltaGrad; |
73 |
> |
RealType beta; |
74 |
|
size_t i; |
75 |
|
|
76 |
|
deltaGrad.resize(ndim); |
83 |
|
#ifndef IS_MPI |
84 |
|
beta = dotProduct(deltaGrad, curG) / dotProduct(prevG, prevG); |
85 |
|
#else |
86 |
< |
double localDP1; |
87 |
< |
double localDP2; |
88 |
< |
double globalDP1; |
89 |
< |
double globalDP2; |
86 |
> |
RealType localDP1; |
87 |
> |
RealType localDP2; |
88 |
> |
RealType globalDP1; |
89 |
> |
RealType globalDP2; |
90 |
|
|
91 |
|
localDP1 = dotProduct(deltaGrad, curG); |
92 |
|
localDP2 = dotProduct(prevG, prevG); |
93 |
|
|
94 |
< |
MPI_Allreduce(&localDP1, &globalDP1, 1, MPI_DOUBLE,MPI_SUM, MPI_COMM_WORLD); |
95 |
< |
MPI_Allreduce(&localDP2, &globalDP2, 1, MPI_DOUBLE,MPI_SUM, MPI_COMM_WORLD); |
94 |
> |
MPI_Allreduce(&localDP1, &globalDP1, 1, MPI_REALTYPE,MPI_SUM, MPI_COMM_WORLD); |
95 |
> |
MPI_Allreduce(&localDP2, &globalDP2, 1, MPI_REALTYPE,MPI_SUM, MPI_COMM_WORLD); |
96 |
|
|
97 |
|
beta = globalDP1 / globalDP2; |
98 |
|
#endif |