File: dlnnapi.h

package info (click to toggle)
pytorch 1.13.1%2Bdfsg-4
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 139,252 kB
  • sloc: cpp: 1,100,274; python: 706,454; ansic: 83,052; asm: 7,618; java: 3,273; sh: 2,841; javascript: 612; makefile: 323; xml: 269; ruby: 185; yacc: 144; objc: 68; lex: 44
file content (104 lines) | stat: -rw-r--r-- 5,665 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#include <stdbool.h>
#include <stdint.h>

#include "NeuralNetworks.h"

#define DLNNAPI_FUNCTION_COUNT 23

#define DLNNAPI_FLAG_VERSION_MASK 0xFF
/* Android 8.1, API 27 version */
#define DLNNAPI_FLAG_VERSION_27 0x01

/* clang-format off */
/* nn api function types */
typedef int (*ANeuralNetworksMemory_createFromFd_fn)(size_t size, int protect, int fd, size_t offset, ANeuralNetworksMemory** memory);

typedef void (*ANeuralNetworksMemory_free_fn)(ANeuralNetworksMemory* memory);

typedef int (*ANeuralNetworksModel_create_fn)(ANeuralNetworksModel** model);

typedef int (*ANeuralNetworksModel_finish_fn)(ANeuralNetworksModel* model);

typedef void (*ANeuralNetworksModel_free_fn)(ANeuralNetworksModel* model);

typedef int (*ANeuralNetworksCompilation_create_fn)(ANeuralNetworksModel* model, ANeuralNetworksCompilation** compilation);

typedef void (*ANeuralNetworksCompilation_free_fn)(ANeuralNetworksCompilation* compilation);

typedef int (*ANeuralNetworksCompilation_setPreference_fn)(ANeuralNetworksCompilation* compilation, int32_t preference);

typedef int (*ANeuralNetworksCompilation_finish_fn)(ANeuralNetworksCompilation* compilation);

typedef int (*ANeuralNetworksModel_addOperand_fn)(ANeuralNetworksModel* model, const ANeuralNetworksOperandType* type);

typedef int (*ANeuralNetworksModel_setOperandValue_fn)(ANeuralNetworksModel* model, int32_t index, const void* buffer, size_t length);

typedef int (*ANeuralNetworksModel_setOperandValueFromMemory_fn)(ANeuralNetworksModel* model, int32_t index, const ANeuralNetworksMemory* memory, size_t offset, size_t length);

typedef int (*ANeuralNetworksModel_addOperation_fn)(ANeuralNetworksModel* model, ANeuralNetworksOperationType type, uint32_t inputCount, const uint32_t* inputs, uint32_t outputCount, const uint32_t* outputs);

typedef int (*ANeuralNetworksModel_identifyInputsAndOutputs_fn)(ANeuralNetworksModel* model, uint32_t inputCount, const uint32_t* inputs, uint32_t outputCount, const uint32_t* outputs);

typedef int (*ANeuralNetworksExecution_create_fn)(ANeuralNetworksCompilation* compilation, ANeuralNetworksExecution** execution);

typedef void (*ANeuralNetworksExecution_free_fn)(ANeuralNetworksExecution* execution);

typedef int (*ANeuralNetworksExecution_setInput_fn)(ANeuralNetworksExecution* execution, int32_t index, const ANeuralNetworksOperandType* type, const void* buffer, size_t length);

typedef int (*ANeuralNetworksExecution_setInputFromMemory_fn)(ANeuralNetworksExecution* execution, int32_t index, const ANeuralNetworksOperandType* type, const ANeuralNetworksMemory* memory, size_t offset, size_t length);

typedef int (*ANeuralNetworksExecution_setOutput_fn)(ANeuralNetworksExecution* execution, int32_t index, const ANeuralNetworksOperandType* type, void* buffer, size_t length);

typedef int (*ANeuralNetworksExecution_setOutputFromMemory_fn)(ANeuralNetworksExecution* execution, int32_t index, const ANeuralNetworksOperandType* type, const ANeuralNetworksMemory* memory, size_t offset, size_t length);

typedef int (*ANeuralNetworksExecution_startCompute_fn)(ANeuralNetworksExecution* execution, ANeuralNetworksEvent** event);

typedef int (*ANeuralNetworksEvent_wait_fn)(ANeuralNetworksEvent* event);

typedef void (*ANeuralNetworksEvent_free_fn)(ANeuralNetworksEvent* event);

struct dlnnapi {
	void* handle;
	uint32_t flags;
	union {
		struct {
			/* ndk-r16b */
			ANeuralNetworksMemory_createFromFd_fn             ANeuralNetworksMemory_createFromFd;
			ANeuralNetworksMemory_free_fn                     ANeuralNetworksMemory_free;
			ANeuralNetworksModel_create_fn                    ANeuralNetworksModel_create;
			ANeuralNetworksModel_finish_fn                    ANeuralNetworksModel_finish;
			ANeuralNetworksModel_free_fn                      ANeuralNetworksModel_free;
			ANeuralNetworksCompilation_create_fn              ANeuralNetworksCompilation_create;
			ANeuralNetworksCompilation_free_fn                ANeuralNetworksCompilation_free;
			ANeuralNetworksCompilation_setPreference_fn       ANeuralNetworksCompilation_setPreference;
			ANeuralNetworksCompilation_finish_fn              ANeuralNetworksCompilation_finish;
			ANeuralNetworksModel_addOperand_fn                ANeuralNetworksModel_addOperand;
			ANeuralNetworksModel_setOperandValue_fn           ANeuralNetworksModel_setOperandValue;
			ANeuralNetworksModel_setOperandValueFromMemory_fn ANeuralNetworksModel_setOperandValueFromMemory;
			ANeuralNetworksModel_addOperation_fn              ANeuralNetworksModel_addOperation;
			ANeuralNetworksModel_identifyInputsAndOutputs_fn  ANeuralNetworksModel_identifyInputsAndOutputs;
			ANeuralNetworksExecution_create_fn                ANeuralNetworksExecution_create;
			ANeuralNetworksExecution_free_fn                  ANeuralNetworksExecution_free;
			ANeuralNetworksExecution_setInput_fn              ANeuralNetworksExecution_setInput;
			ANeuralNetworksExecution_setInputFromMemory_fn    ANeuralNetworksExecution_setInputFromMemory;
			ANeuralNetworksExecution_setOutput_fn             ANeuralNetworksExecution_setOutput;
			ANeuralNetworksExecution_setOutputFromMemory_fn   ANeuralNetworksExecution_setOutputFromMemory;
			ANeuralNetworksExecution_startCompute_fn          ANeuralNetworksExecution_startCompute;
			ANeuralNetworksEvent_wait_fn                      ANeuralNetworksEvent_wait;
			ANeuralNetworksEvent_free_fn                      ANeuralNetworksEvent_free;
		};
		void* functions[DLNNAPI_FUNCTION_COUNT];
	};
};
/* clang-format on */

#ifdef __cplusplus
extern "C" {
#endif

bool dlnnapi_load(struct dlnnapi* nnapi, uint32_t flags);
void dlnnapi_free(struct dlnnapi* nnapi);

#ifdef __cplusplus
} /* extern "C" */
#endif