1 | #pragma once |
---|---|
2 | |
3 | #include <c10/core/DeviceType.h> |
4 | #include <c10/core/DispatchKey.h> |
5 | #include <c10/util/Exception.h> |
6 | |
7 | namespace c10 { |
8 | |
9 | /** |
10 | * QEngine is an enum that is used to select the engine to run quantized ops. |
11 | * Keep this enum in sync with get_qengine_id() in |
12 | * torch/backends/quantized/__init__.py |
13 | */ |
14 | enum class QEngine : uint8_t { |
15 | NoQEngine = 0, |
16 | FBGEMM = 1, |
17 | QNNPACK = 2, |
18 | ONEDNN = 3, |
19 | X86 = 4, |
20 | }; |
21 | |
22 | constexpr auto kNoQEngine = QEngine::NoQEngine; |
23 | constexpr auto kFBGEMM = QEngine::FBGEMM; |
24 | constexpr auto kQNNPACK = QEngine::QNNPACK; |
25 | constexpr auto kONEDNN = QEngine::ONEDNN; |
26 | constexpr auto kX86 = QEngine::X86; |
27 | |
28 | inline std::string toString(QEngine qengine) { |
29 | switch (qengine) { |
30 | case kNoQEngine: |
31 | return "NoQEngine"; |
32 | case kFBGEMM: |
33 | return "FBGEMM"; |
34 | case kQNNPACK: |
35 | return "QNNPACK"; |
36 | case kONEDNN: |
37 | return "ONEDNN"; |
38 | case kX86: |
39 | return "X86"; |
40 | default: |
41 | TORCH_CHECK( |
42 | false, "Unrecognized Quantized Engine: ", static_cast<int>(qengine)); |
43 | } |
44 | } |
45 | |
46 | } // namespace c10 |
47 |