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