|
1 | 1 | #include "source_base/kernels/math_kernel_op.h" |
2 | | -#include "source_base/parallel_reduce.h" |
3 | | - |
4 | 2 | namespace hsolver { |
5 | 3 |
|
6 | | -namespace { |
7 | | - |
8 | | -template <typename Value> |
9 | | -void reduce_pool_if_mpi_ready(Value& value) |
10 | | -{ |
11 | | -#ifdef __MPI |
12 | | - int initialized = 0; |
13 | | - int finalized = 0; |
14 | | - MPI_Initialized(&initialized); |
15 | | - MPI_Finalized(&finalized); |
16 | | - if (initialized && !finalized) |
17 | | - Parallel_Reduce::reduce_pool(value); |
18 | | -#endif |
19 | | -} |
20 | | - |
21 | | -template <typename Value> |
22 | | -void reduce_pool_if_mpi_ready(Value* value, const int n) |
23 | | -{ |
24 | | -#ifdef __MPI |
25 | | - int initialized = 0; |
26 | | - int finalized = 0; |
27 | | - MPI_Initialized(&initialized); |
28 | | - MPI_Finalized(&finalized); |
29 | | - if (initialized && !finalized) |
30 | | - Parallel_Reduce::reduce_pool(value, n); |
31 | | -#endif |
32 | | -} |
33 | | - |
34 | | -} // anonymous namespace |
35 | | - |
36 | 4 | // ============================================================================= |
37 | 5 | // Constructor |
38 | 6 | // ============================================================================= |
@@ -220,11 +188,9 @@ void DiagoPPCG<T, Device>::project_against( |
220 | 188 | for (const int bc : basis_cols) |
221 | 189 | { |
222 | 190 | // Full complex inner product <basis_bc | sx_c> |
223 | | - T coeff = 0; |
224 | 191 | const T* bb = basis + bc * ld_psi_; |
225 | 192 | const T* sc = sx.data() + c * ld_psi_; |
226 | | - for (int ig = 0; ig < n_dim_; ++ig) |
227 | | - coeff += std::conj(bb[ig]) * sc[ig]; |
| 193 | + const T coeff = complex_dot(bb, sc); |
228 | 194 | if (std::abs(coeff) <= std::numeric_limits<Real>::epsilon()) |
229 | 195 | continue; |
230 | 196 | const T* sb = sbasis + bc * ld_psi_; |
|
0 commit comments