1 // 2 // MNNForwardType.h 3 // MNN 4 // 5 // Created by MNN on 2019/01/19. 6 // Copyright © 2018, Alibaba Group Holding Limited 7 // 8 9 #ifndef MNNForwardType_h 10 #define MNNForwardType_h 11 12 typedef enum { 13 MNN_FORWARD_CPU = 0, 14 15 /* 16 Firtly find the first available backends not equal to CPU 17 If no other backends, use cpu 18 */ 19 MNN_FORWARD_AUTO = 4, 20 21 /*Hand write metal*/ 22 MNN_FORWARD_METAL = 1, 23 24 /*Use IOS's MPS instead of hand-write metal, Not Support yet*/ 25 MNN_FORWARD_MPS = 2, 26 27 /*Android / Common Device GPU API*/ 28 MNN_FORWARD_OPENCL = 3, 29 MNN_FORWARD_OPENGL = 6, 30 MNN_FORWARD_VULKAN = 7, 31 32 /*Android 8.1's NNAPI, Not Support yet*/ 33 MNN_FORWARD_NN = 5, 34 35 /*User can use API from Backend.hpp to add or search Backend*/ 36 MNN_FORWARD_USER_0 = 8, 37 MNN_FORWARD_USER_1 = 9, 38 MNN_FORWARD_USER_2 = 10, 39 MNN_FORWARD_USER_3 = 11, 40 41 MNN_FORWARD_ALL 42 } MNNForwardType; 43 #ifdef __cplusplus 44 namespace MNN { 45 struct BackendConfig { 46 enum MemoryMode { 47 Memory_Normal = 0, 48 Memory_High, 49 Memory_Low 50 }; 51 52 MemoryMode memory = Memory_Normal; 53 54 enum PowerMode { 55 Power_Normal = 0, 56 Power_High, 57 Power_Low 58 }; 59 60 PowerMode power = Power_Normal; 61 62 enum PrecisionMode { 63 Precision_Normal = 0, 64 Precision_High, 65 Precision_Low 66 }; 67 68 PrecisionMode precision = Precision_Normal; 69 70 /** user defined context */ 71 void* sharedContext = nullptr; 72 }; 73 }; 74 #endif 75 #endif /* MNNForwardType_h */ 76