42 :
43 _executor([](BlockRefinementContextD<T,DESCRIPTOR>& context) {
44 switch (context.getPlatform()) {
45#ifdef PLATFORM_CPU_SISD
47 ConcreteBlockRefinementO<T,DESCRIPTOR,Platform::CPU_SISD,OPERATOR>().apply(
48 context.template asConcrete<Platform::CPU_SISD>());
49 break;
50#endif
51#ifdef PLATFORM_CPU_SIMD
53 ConcreteBlockRefinementO<T,DESCRIPTOR,Platform::CPU_SIMD,OPERATOR>().apply(
54 context.template asConcrete<Platform::CPU_SIMD>());
55 break;
56#endif
57#ifdef PLATFORM_GPU_CUDA
59 ConcreteBlockRefinementO<T,DESCRIPTOR,Platform::GPU_CUDA,OPERATOR>().apply(
60 context.template asConcrete<Platform::GPU_CUDA>());
61 break;
62#endif
63 default:
64 throw std::runtime_error("Refinement executor not implemented for PLATFORM");
65 }
66 }),
68 std::set<FieldTypePromise<T,refinement::DATA_DESCRIPTOR<DESCRIPTOR>>> fields;
69 OPERATOR::data::for_each([&fields](auto id) {
70 fields.emplace(meta::id<Array<
decltype(
id.
get())>>{});
71 });
72 return fields;
73 }),
74 _requiresContextNeigborAccess{
75 OPERATOR::data::template contains<fields::refinement::CONTEXT_NEIGHBORS>()
76 },
78 { }
#define OPERATOR(OP, rhs)
int get()
Get current device.
descriptors::LATTICE_DESCRIPTOR< DESCRIPTOR::d, DESCRIPTOR::q, fields::refinement::CELL_ID_COARSE, fields::refinement::CELL_ID_FINE > DATA_DESCRIPTOR
@ CPU_SIMD
Basic scalar CPU.
@ GPU_CUDA
Vector CPU (AVX2 / AVX-512 collision)