1 #pragma once 2 3 #include <c10/util/Exception.h> 4 #include <cstdint> 5 #include <string> 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 toString(QEngine qengine)28inline 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