PSCF v1.4.0
cuda/Reduce.h
1#ifndef PSCF_CUDA_REDUCE_H
2#define PSCF_CUDA_REDUCE_H
3
4/*
5* PSCF - Polymer Self-Consistent Field
6*
7* Copyright 2015 - 2025, The Regents of the University of Minnesota
8* Distributed under the terms of the GNU General Public License.
9*/
10
11#include <pscf/cuda/cudaTypes.h>
12#include <pscf/cuda/DeviceArray.h>
13#include <complex>
14
15namespace Pscf {
16
46
52 namespace Reduce {
53
54 // Summation
55
64 cudaReal sum(DeviceArray<cudaReal> const & in);
65
76 cudaReal sum(DeviceArray<cudaReal> const & in, int begin, int end);
77
86 std::complex<cudaReal> sum(DeviceArray<cudaComplex> const & in);
87
98 std::complex<cudaReal> sum(DeviceArray<cudaComplex> const & in,
99 int begin, int end);
100
101 // Sum of squares and array products
102
114 cudaReal sumSq(DeviceArray<cudaReal> const & in);
115
127 std::complex<cudaReal> sumSq(DeviceArray<cudaComplex> const & in);
128
141 cudaReal sumSqAbs(DeviceArray<cudaComplex> const & in);
142
152 cudaReal innerProduct(DeviceArray<cudaReal> const & a,
153 DeviceArray<cudaReal> const & b);
154
155 // Maxima - real array inputs
156
165 cudaReal max(DeviceArray<cudaReal> const & in);
166
177 cudaReal max(DeviceArray<cudaReal> const & in, int begin, int end);
178
187 cudaReal maxAbs(DeviceArray<cudaReal> const & in);
188
189 // Minima - real array inputs
190
199 cudaReal min(DeviceArray<cudaReal> const & in);
200
211 cudaReal min(DeviceArray<cudaReal> const & in, int begin, int end);
212
221 cudaReal minAbs(DeviceArray<cudaReal> const & in);
222
223 // Memory management
224
230 void freeWorkSpace();
231
232 } // namespace Reduce
233} // namespace Pscf
234#endif
double minAbs(Array< double > const &in)
Get minimum absolute magnitude of array elements .
Definition Reduce.cpp:229
double min(Array< double > const &in)
Get minimum of array elements .
Definition Reduce.cpp:198
double innerProduct(Array< double > const &a, Array< double > const &b)
Compute Euclidean inner product of two real arrays .
Definition Reduce.cpp:117
double maxAbs(Array< double > const &in)
Get maximum absolute magnitude of array elements .
Definition Reduce.cpp:182
double sumSq(Array< double > const &in)
Compute sum of of squares of array elements (real).
Definition Reduce.cpp:82
double sum(Array< double > const &in)
Compute sum of array elements (real).
Definition Reduce.cpp:20
double max(Array< double > const &in)
Get maximum of array elements (real).
Definition Reduce.cpp:151
cudaReal sumSqAbs(DeviceArray< cudaComplex > const &in)
Return sum of squared magnitudes of elements of a complex array.
Definition Reduce.cu:328
void freeWorkSpace()
Free any private work space currently allocated for reductions.
Definition Reduce.cu:203
Reduction operations performed on a CPU or GPU.
Definition Reduce.cpp:13
PSCF package top-level namespace.
cufftDoubleReal cudaReal
Real number type used in CPU code that uses FFTW.
Definition cudaTypes.h:35