22#include "config/config-features.hpp"
23#include "config/config-features.impl.hpp"
24#include "config/version.hpp"
27#include <boost/algorithm/string/join.hpp>
32#include <unordered_set>
39 return std::vector<std::string>{ptr, ptr +
len};
43 return std::unordered_set<std::string>(ptr, ptr +
len);
47 if (
name ==
"features") {
50 if (
name ==
"all_features") {
54 if (
name ==
"build_type") {
57 if (
name ==
"scafacos_methods") {
58#ifdef ESPRESSO_SCAFACOS
64 if (
name ==
"has_fast_math") {
65#if defined(__FAST_MATH__)
80 throw std::runtime_error(
"Unknown feature '" +
feature +
"'");
87 throw std::runtime_error(
"Missing features " +
Variant do_call_method(std::string const &name, VariantMap const ¶meters) override
std::string_view name() const
cudaStream_t stream[1]
CUDA streams for parallel computing on CPU and GPU.
static auto get_feature_set(char const *const ptr[], std::size_t len)
void check_features(std::vector< std::string > const &features)
static auto get_feature_vector(char const *const ptr[], std::size_t len)
std::vector< std::string > available_methods()
Fetch list of methods compiled in ScaFaCoS.
std::unordered_map< std::string, Variant > VariantMap
auto make_vector_of_variants(std::vector< T > const &v)
Recursive variant implementation.