1 | #pragma once |
2 | |
3 | #include <string> |
4 | #include "taichi/common/core.h" |
5 | |
6 | namespace taichi { |
7 | |
8 | enum class Arch : int { |
9 | #define PER_ARCH(x) x, |
10 | #include "taichi/inc/archs.inc.h" |
11 | |
12 | #undef PER_ARCH |
13 | }; |
14 | |
15 | std::string arch_name(Arch arch); |
16 | |
17 | Arch arch_from_name(const std::string &arch); |
18 | |
19 | bool arch_is_cpu(Arch arch); |
20 | |
21 | bool arch_is_cuda(Arch arch); |
22 | |
23 | bool arch_uses_llvm(Arch arch); |
24 | |
25 | bool arch_is_gpu(Arch arch); |
26 | |
27 | bool arch_uses_spirv(Arch arch); |
28 | |
29 | Arch host_arch(); |
30 | |
31 | bool arch_use_host_memory(Arch arch); |
32 | |
33 | int default_simd_width(Arch arch); |
34 | |
35 | } // namespace taichi |
36 | |