19 #ifndef GLFFT_WISDOM_HPP__
20 #define GLFFT_WISDOM_HPP__
22 #include <unordered_map>
47 return std::memcmp(&
pass, &other.
pass,
sizeof(
pass)) == 0;
56 struct hash<GLFFT::WisdomPass>
62 for (std::size_t i = 0; i <
sizeof(params.
pass); i++)
64 h ^= hasher(reinterpret_cast<const uint8_t*>(¶ms.
pass)[i]);
92 const std::pair<double, FFTOptions::Performance>
learn_optimal_options(
unsigned Nx,
unsigned Ny,
unsigned radix,
98 const std::pair<const WisdomPass, FFTOptions::Performance>*
find_optimal_options(
unsigned Nx,
unsigned Ny,
unsigned radix,
117 std::unordered_map<WisdomPass, FFTOptions::Performance>
library;
122 const std::shared_ptr<ProgramCache> &cache)
const;
std::pair< double, FFTOptions::Performance > study(const WisdomPass &pass, FFTOptions::Type options) const
struct GLFFT::FFTWisdom::@4 params
unsigned max_workgroup_size
double bench(GLuint output, GLuint input, const WisdomPass &pass, const FFTOptions &options, const std::shared_ptr< ProgramCache > &cache) const
struct GLFFT::WisdomPass::@3 pass
std::unordered_map< WisdomPass, FFTOptions::Performance > library
FFTStaticWisdom static_wisdom
Options for FFT implementation. Defaults for performance as conservative.
const std::pair< const WisdomPass, FFTOptions::Performance > * find_optimal_options(unsigned Nx, unsigned Ny, unsigned radix, Mode mode, Target input_target, Target output_target, const FFTOptions::Type &base_options) const
static FFTStaticWisdom get_static_wisdom_from_renderer(const char *renderer)
GLfloat GLfloat GLfloat GLfloat h
const std::pair< double, FFTOptions::Performance > learn_optimal_options(unsigned Nx, unsigned Ny, unsigned radix, Mode mode, Target input_target, Target output_target, const FFTOptions::Type &type)
GLbitfield GLuint64 timeout
bool operator==(const WisdomPass &other) const
const FFTOptions::Performance & find_optimal_options_or_default(unsigned Nx, unsigned Ny, unsigned radix, Mode mode, Target input_target, Target output_target, const FFTOptions &base_options) const
void learn_optimal_options_exhaustive(unsigned Nx, unsigned Ny, Type type, Target input_target, Target output_target, const FFTOptions::Type &fft_type)
void set_static_wisdom(FFTStaticWisdom static_wisdom)
unsigned min_workgroup_size
unsigned min_workgroup_size_shared
void set_bench_params(unsigned warmup, unsigned iterations, unsigned dispatches, double timeout)
typedef GLuint(GL_APIENTRYP PFNGLGETDEBUGMESSAGELOGKHRPROC)(GLuint count
std::size_t operator()(const GLFFT::WisdomPass ¶ms) const