1#ifndef PSCF_CUDA_VEC_OP_H
2#define PSCF_CUDA_VEC_OP_H
11#include <pscf/cuda/cudaTypes.h>
12#include <pscf/cuda/DeviceArray.h>
96 void eqV(DeviceArray<cudaReal>& a,
97 DeviceArray<cudaReal>
const & b,
98 const int beginIdA,
const int beginIdB,
const int n);
126 const int beginIdA,
const int beginIdB,
const int n);
154 const int beginIdA,
const int beginIdB,
const int n);
182 const int beginIdA,
const int beginIdB,
const int n);
209 const int beginIdA,
const int n);
235 const int beginIdA,
const int n);
267 const int beginIdA,
const int beginIdB,
const int beginIdC,
301 const int beginIdA,
const int beginIdB,
const int beginIdC,
335 const int beginIdA,
const int beginIdB,
const int beginIdC,
369 const int beginIdA,
const int beginIdB,
const int beginIdC,
402 const int beginIdA,
const int beginIdB,
435 const int beginIdA,
const int beginIdB,
468 const int beginIdA,
const int beginIdB,
const int n);
500 const int beginIdA,
const int beginIdB,
const int n);
536 const int beginIdA,
const int beginIdB,
const int beginIdC,
569 const int beginIdB,
const int beginIdC,
const int n);
603 const int beginIdB,
const int beginIdC,
638 const int beginIdB,
const int beginIdC,
const int n);
670 const int beginIdA,
const int beginIdB,
703 const int beginIdA,
const int beginIdB,
const int n);
735 const int beginIdA,
const int beginIdB,
const int n);
767 const int beginIdA,
const int beginIdB,
const int n);
803 const int beginIdA,
const int beginIdB,
const int beginIdC,
837 const int beginIdA,
const int beginIdB,
const int beginIdC,
871 const int beginIdB,
const int beginIdC,
const int n);
904 const int beginIdA,
const int beginIdB,
const int beginIdC,
937 const int beginIdA,
const int beginIdB,
970 const int beginIdA,
const int beginIdB,
const int n);
1002 const int beginIdA,
const int beginIdB,
const int n);
1034 const int beginIdA,
const int beginIdB,
const int n);
1070 const int beginIdA,
const int beginIdB,
const int beginIdC,
1104 const int beginIdA,
const int beginIdB,
const int beginIdC,
1136 const cudaReal c,
const int beginIdA,
1137 const int beginIdB,
const int n);
1169 const int beginIdA,
const int beginIdB,
const int n);
1201 const int beginIdA,
const int beginIdC,
const int n);
1233 const int beginIdA,
const int beginIdB,
const int n);
1261 const int beginIdA,
const int beginIdB,
const int n);
1289 const int beginIdA,
const int beginIdB,
const int n);
1316 const int beginIdA,
const int n);
1342 const int beginIdA,
const int n);
1368 const int beginIdA,
const int n);
1398 const int beginIdA,
const int beginIdB,
const int n);
1426 const int beginIdA,
const int beginIdB,
const int n);
1454 const int beginIdA,
const int beginIdB,
const int n);
1480 const int beginIdA,
const int n);
1505 const int beginIdA,
const int n);
1531 const int beginIdA,
const int n);
1561 const int beginIdA,
const int beginIdB,
const int n);
1589 const int beginIdA,
const int beginIdB,
const int n);
1617 const int beginIdA,
const int beginIdB,
const int n);
1643 const int beginIdA,
const int n);
1668 const int beginIdA,
const int n);
1694 const int beginIdA,
const int n);
1724 const int beginIdA,
const int beginIdB,
const int n);
1752 const int beginIdA,
const int beginIdB,
const int n);
1779 const int beginIdA,
const int n);
1805 const int beginIdA,
const int n);
1834 const int beginIdA,
const int beginIdB,
1863 const int beginIdA,
const int beginIdB,
1894 const int beginIdA,
const int beginIdB,
1923 const int beginIdA,
const int beginIdB,
1954 const int beginIdA,
const int beginIdB,
1983 const int beginIdA,
const int beginIdB,
2003#include "VecOpMisc.h"
Dynamic array on the GPU device with aligned data.
int capacity() const
Return array capacity.
Array container class template.
int capacity() const
Return allocated size.
void divEqS(Array< double > &a, double b)
Vector-scalar in-place division, a[i] /= b.
void addEqV(Array< double > &a, Array< double > const &b)
Vector-vector in-place addition, a[i] += b[i] (real).
void divEqV(Array< double > &a, Array< double > const &b)
Vector-vector in-place division, a[i] /= b[i].
void addEqS(Array< double > &a, double b)
Vector-scalar in-place addition, a[i] += b (real).
void sqV(Array< double > &a, Array< double > const &b)
Vector element-wise square, a[i] = b[i]*b[i] (real).
void mulEqV(Array< double > &a, Array< double > const &b)
Vector-vector in-place multiplication, a[i] *= b[i] (real).
void eqV(Array< double > &a, Array< double > const &b, const int beginIdA, const int beginIdB, const int n)
Vector assignment, a[i] = b[i] (real, slice).
void sqAbsV(Array< double > &a, Array< fftw_complex > const &b)
Square of absolute magnitude, a[i] = |b[i]|^2 (complex).
void mulEqS(Array< double > &a, double b)
Vector-scalar in-place multiplication, a[i] *= b (real).
void subVV(Array< double > &a, Array< double > const &b, Array< double > const &c)
Vector-vector subtraction, a[i] = b[i] - c[i] (real)
void absV(Array< double > &a, Array< double > const &b)
Element-wise absolute magnitude, a[i] = abs(b[i]) (real).
void expV(Array< double > &a, Array< double > const &b)
Vector exponentiation, a[i] = exp(b[i]) (real).
void divVS(Array< double > &a, Array< double > const &b, double c)
Vector-scalar division, a[i] = b[i] / c (real).
void eqS(Array< double > &a, double b)
Vector assignment, a[i] = b (real).
void mulVV(Array< double > &a, Array< double > const &b, Array< double > const &c)
Vector-vector multiplication, a[i] = b[i] * c[i] (real).
void subVS(Array< double > &a, Array< double > const &b, double c)
Vector-scalar subtraction, a[i] = b[i] - c (real).
void subEqV(Array< double > &a, Array< double > const &b)
Vector-vector in-place subtraction, a[i] -= b[i] (real).
void addVV(Array< double > &a, Array< double > const &b, Array< double > const &c)
Vector-vector addition, a[i] = b[i] + c[i] (real)
void divSV(Array< double > &a, double b, Array< double > const &c)
Vector division, a[i] = b / c[i].
void addVS(Array< double > &a, Array< double > const &b, double c)
Vector-scalar addition, a[i] = b[i] + c (real).
void divVV(Array< double > &a, Array< double > const &b, Array< double > const &c)
Vector-vector division, a[i] = b[i] / c[i] (real).
void subEqS(Array< double > &a, double b)
Vector-scalar subtraction in-place, a[i] -= b (real).
void mulVS(Array< double > &a, Array< double > const &b, double c)
Vector-scalar multiplication, a[i] = b[i] * c (real).
Vector operations on GPU or CPU.
PSCF package top-level namespace.
cufftDoubleComplex cudaComplex
Complex number type used in CPU code that uses FFTW.
cufftDoubleReal cudaReal
Real number type used in CPU code that uses FFTW.