Xmipp  v3.23.11-Nereus
Public Member Functions | Friends | List of all members
FFTSettings< T > Class Template Reference

#include <fft_settings.h>

Public Member Functions

 FFTSettings (size_t x, size_t y=1, size_t z=1, size_t n=1, size_t batch=1, bool isInPlace=false, bool isForward=true)
 
 FFTSettings (const Dimensions &spatial, size_t batch=1, bool isInPlace=false, bool isForward=true)
 
constexpr Dimensions sDim () const
 
constexpr Dimensions fDim () const
 
constexpr size_t batch () const
 
constexpr size_t fBytesSingle () const
 
constexpr size_t fBytes () const
 
constexpr size_t fBytesBatch () const
 
constexpr size_t fElemsBatch () const
 
constexpr size_t sBytesSingle () const
 
constexpr size_t sBytes () const
 
constexpr size_t sBytesBatch () const
 
constexpr size_t sElemsBatch () const
 
constexpr bool isForward () const
 
constexpr bool isInPlace () const
 
constexpr size_t maxBytesBatch () const
 
FFTSettings< T > createInverse () const
 
FFTSettings< T > createSingle () const
 
FFTSettings< T > createBatch () const
 
FFTSettings< T > createSubset (size_t n) const
 
FFTSettings< T > copyForBatch (size_t b) const
 

Friends

std::ostream & operator (std::ostream &os, const FFTSettings< T > &s)
 

Detailed Description

template<typename T>
class FFTSettings< T >

Definition at line 38 of file fft_settings.h.

Constructor & Destructor Documentation

◆ FFTSettings() [1/2]

template<typename T>
FFTSettings< T >::FFTSettings ( size_t  x,
size_t  y = 1,
size_t  z = 1,
size_t  n = 1,
size_t  batch = 1,
bool  isInPlace = false,
bool  isForward = true 
)
inlineexplicit

Definition at line 44 of file fft_settings.h.

47  :
48  m_spatial(x, y, z, n),
49  m_freq(x / 2 + 1, y, z, n),
50  m_batch(batch),
51  m_isInPlace(isInPlace),
52  m_isForward(isForward) {
53  if (isInPlace) {
54  size_t padding = (m_freq.x() * 2) - x;
55  m_spatial = Dimensions(x, y, z, n, padding);
56  }
57  assert(batch <= n);
58  assert(batch > 0);
59  };
constexpr bool isInPlace() const
Definition: fft_settings.h:126
static double * y
doublereal * x
constexpr size_t batch() const
Definition: fft_settings.h:86
CUDA_HD constexpr size_t x() const
Definition: dimensions.h:51
double z
constexpr bool isForward() const
Definition: fft_settings.h:122
int * n

◆ FFTSettings() [2/2]

template<typename T>
FFTSettings< T >::FFTSettings ( const Dimensions spatial,
size_t  batch = 1,
bool  isInPlace = false,
bool  isForward = true 
)
inlineexplicit

Definition at line 61 of file fft_settings.h.

64  :
65  m_spatial(spatial),
66  m_freq(spatial.x() / 2 + 1, spatial.y(), spatial.z(), spatial.n()),
67  m_batch(batch),
68  m_isInPlace(isInPlace),
69  m_isForward(isForward) {
70  if (isInPlace) {
71  size_t padding = (m_freq.x() * 2) - spatial.x();
72  m_spatial = Dimensions(spatial.x(), spatial.y(), spatial.z(), spatial.n(), padding);
73  }
74  assert(batch <= spatial.n());
75  assert(batch > 0);
76  };
constexpr bool isInPlace() const
Definition: fft_settings.h:126
CUDA_HD constexpr size_t z() const
Definition: dimensions.h:69
constexpr size_t batch() const
Definition: fft_settings.h:86
CUDA_HD constexpr size_t x() const
Definition: dimensions.h:51
CUDA_HD constexpr size_t y() const
Definition: dimensions.h:60
CUDA_HD constexpr size_t n() const
Definition: dimensions.h:78
constexpr bool isForward() const
Definition: fft_settings.h:122

Member Function Documentation

◆ batch()

template<typename T>
constexpr size_t FFTSettings< T >::batch ( ) const
inline

Definition at line 86 of file fft_settings.h.

86  {
87  return m_batch;
88  }

◆ copyForBatch()

template<typename T>
FFTSettings<T> FFTSettings< T >::copyForBatch ( size_t  b) const
inline

Definition at line 159 of file fft_settings.h.

159  {
160  assert(b <= m_spatial.n());
161  auto copy = FFTSettings<T>(m_spatial.x(), m_spatial.y(), m_spatial.z(), m_spatial.n(), b,
162  this->isInPlace(), this->isForward());
163  return copy;
164  }
constexpr bool isInPlace() const
Definition: fft_settings.h:126
CUDA_HD constexpr size_t z() const
Definition: dimensions.h:69
CUDA_HD constexpr size_t x() const
Definition: dimensions.h:51
doublereal * b
CUDA_HD constexpr size_t y() const
Definition: dimensions.h:60
CUDA_HD constexpr size_t n() const
Definition: dimensions.h:78
constexpr bool isForward() const
Definition: fft_settings.h:122

◆ createBatch()

template<typename T>
FFTSettings<T> FFTSettings< T >::createBatch ( ) const
inline

Definition at line 146 of file fft_settings.h.

146  {
147  auto copy = FFTSettings<T>(m_spatial.x(), m_spatial.y(), m_spatial.z(), m_batch, m_batch,
148  this->isInPlace(), this->isForward());
149  return copy;
150  }
constexpr bool isInPlace() const
Definition: fft_settings.h:126
CUDA_HD constexpr size_t z() const
Definition: dimensions.h:69
CUDA_HD constexpr size_t x() const
Definition: dimensions.h:51
CUDA_HD constexpr size_t y() const
Definition: dimensions.h:60
constexpr bool isForward() const
Definition: fft_settings.h:122

◆ createInverse()

template<typename T>
FFTSettings<T> FFTSettings< T >::createInverse ( ) const
inline

Definition at line 134 of file fft_settings.h.

134  {
135  auto copy = FFTSettings<T>(*this);
136  copy.m_isForward = ! this->m_isForward;
137  return copy;
138  }

◆ createSingle()

template<typename T>
FFTSettings<T> FFTSettings< T >::createSingle ( ) const
inline

Definition at line 140 of file fft_settings.h.

140  {
141  auto copy = FFTSettings<T>(m_spatial.x(), m_spatial.y(), m_spatial.z(), 1, 1,
142  this->isInPlace(), this->isForward());
143  return copy;
144  }
constexpr bool isInPlace() const
Definition: fft_settings.h:126
CUDA_HD constexpr size_t z() const
Definition: dimensions.h:69
CUDA_HD constexpr size_t x() const
Definition: dimensions.h:51
CUDA_HD constexpr size_t y() const
Definition: dimensions.h:60
constexpr bool isForward() const
Definition: fft_settings.h:122

◆ createSubset()

template<typename T>
FFTSettings<T> FFTSettings< T >::createSubset ( size_t  n) const
inline

Definition at line 152 of file fft_settings.h.

152  {
153  assert(n <= m_spatial.n());
154  auto copy = FFTSettings<T>(m_spatial.x(), m_spatial.y(), m_spatial.z(), n, n,
155  this->isInPlace(), this->isForward());
156  return copy;
157  }
constexpr bool isInPlace() const
Definition: fft_settings.h:126
CUDA_HD constexpr size_t z() const
Definition: dimensions.h:69
CUDA_HD constexpr size_t x() const
Definition: dimensions.h:51
CUDA_HD constexpr size_t y() const
Definition: dimensions.h:60
CUDA_HD constexpr size_t n() const
Definition: dimensions.h:78
constexpr bool isForward() const
Definition: fft_settings.h:122
int * n

◆ fBytes()

template<typename T>
constexpr size_t FFTSettings< T >::fBytes ( ) const
inline

Definition at line 94 of file fft_settings.h.

94  {
95  return m_freq.sizePadded() * sizeof(std::complex<T>);
96  }
constexpr size_t sizePadded() const
Definition: dimensions.h:108

◆ fBytesBatch()

template<typename T>
constexpr size_t FFTSettings< T >::fBytesBatch ( ) const
inline

Definition at line 98 of file fft_settings.h.

98  {
99  return m_freq.xyzPadded() * m_batch * sizeof(std::complex<T>);
100  }
constexpr size_t xyzPadded() const
Definition: dimensions.h:95

◆ fBytesSingle()

template<typename T>
constexpr size_t FFTSettings< T >::fBytesSingle ( ) const
inline

Definition at line 90 of file fft_settings.h.

90  {
91  return m_freq.xyzPadded() * sizeof(std::complex<T>);
92  }
constexpr size_t xyzPadded() const
Definition: dimensions.h:95

◆ fDim()

template<typename T>
constexpr Dimensions FFTSettings< T >::fDim ( ) const
inline

Definition at line 82 of file fft_settings.h.

82  {
83  return m_freq;
84  }

◆ fElemsBatch()

template<typename T>
constexpr size_t FFTSettings< T >::fElemsBatch ( ) const
inline

Definition at line 102 of file fft_settings.h.

102  {
103  return m_freq.xyzPadded() * m_batch;
104  }
constexpr size_t xyzPadded() const
Definition: dimensions.h:95

◆ isForward()

template<typename T>
constexpr bool FFTSettings< T >::isForward ( ) const
inline

Definition at line 122 of file fft_settings.h.

122  {
123  return m_isForward;
124  }

◆ isInPlace()

template<typename T>
constexpr bool FFTSettings< T >::isInPlace ( ) const
inline

Definition at line 126 of file fft_settings.h.

126  {
127  return m_isInPlace;
128  }

◆ maxBytesBatch()

template<typename T>
constexpr size_t FFTSettings< T >::maxBytesBatch ( ) const
inline

Definition at line 130 of file fft_settings.h.

130  {
131  return sBytesBatch() + (m_isInPlace ? 0 :fBytesBatch());
132  }
constexpr size_t fBytesBatch() const
Definition: fft_settings.h:98
constexpr size_t sBytesBatch() const
Definition: fft_settings.h:114

◆ sBytes()

template<typename T>
constexpr size_t FFTSettings< T >::sBytes ( ) const
inline

Definition at line 110 of file fft_settings.h.

110  {
111  return m_spatial.sizePadded() * sizeof(T);
112  }
constexpr size_t sizePadded() const
Definition: dimensions.h:108

◆ sBytesBatch()

template<typename T>
constexpr size_t FFTSettings< T >::sBytesBatch ( ) const
inline

Definition at line 114 of file fft_settings.h.

114  {
115  return m_spatial.xyzPadded() * m_batch * sizeof(T);
116  }
constexpr size_t xyzPadded() const
Definition: dimensions.h:95

◆ sBytesSingle()

template<typename T>
constexpr size_t FFTSettings< T >::sBytesSingle ( ) const
inline

Definition at line 106 of file fft_settings.h.

106  {
107  return m_spatial.xyzPadded() * sizeof(T);
108  }
constexpr size_t xyzPadded() const
Definition: dimensions.h:95

◆ sDim()

template<typename T>
constexpr Dimensions FFTSettings< T >::sDim ( ) const
inline

Definition at line 78 of file fft_settings.h.

78  {
79  return m_spatial;
80  }

◆ sElemsBatch()

template<typename T>
constexpr size_t FFTSettings< T >::sElemsBatch ( ) const
inline

Definition at line 118 of file fft_settings.h.

118  {
119  return m_spatial.xyzPadded() * m_batch;
120  }
constexpr size_t xyzPadded() const
Definition: dimensions.h:95

Friends And Related Function Documentation

◆ operator

template<typename T>
std::ostream& operator ( std::ostream &  os,
const FFTSettings< T > &  s 
)
friend

The documentation for this class was generated from the following file: