1 // Copyright (C) 2018 Intel Corporation
2 // SPDX-License-Identifier: Apache-2.0
5 #define INTEL_GNA_DLLEXPORT 1
7 #include <gna-api-dumper.h>
8 #include <gna-api-instrumentation.h>
9 #include "gna_mock_api.hpp"
11 static GNACppApi * current = nullptr;
13 GNACppApi :: GNACppApi() {
17 GNACppApi :: ~GNACppApi() {
22 extern "C" { // API uses C linkage so that it can be used by C and C++ applications
27 * intel_gna_status_t members printable descriptions
28 * Size: NUMGNASTATUS + 1
30 DLLDECL const char *GNAStatusName[] = {"status"};
33 * intel_gmm_mode_t members printable descriptions
34 * Size: NUMGMMMODES + 1
36 DLLDECL const char *GMMModeName[] = {"model"};
41 DLLDECL intel_gna_status_t GNAScoreGaussians(
42 intel_gna_handle_t handle,
43 const intel_feature_type_t* pFeatureType,
44 const intel_feature_t* pFeatureData,
45 const intel_gmm_type_t* pModelType,
46 const intel_gmm_t* pModelData,
47 const uint32_t* pActiveGMMIndices,
48 uint32_t nActiveGMMIndices,
49 uint32_t uMaximumScore,
50 intel_gmm_mode_t nGMMMode,
53 intel_gna_proc_t nAccelerationType
55 if (current != nullptr) {
56 return current->GNAScoreGaussians(
73 DLLDECL intel_gna_status_t GNAPropagateForward(
74 intel_gna_handle_t handle,
75 const intel_nnet_type_t* pNeuralNetwork,
76 const uint32_t* pActiveIndices,
77 uint32_t nActiveIndices,
79 intel_gna_proc_t nAccelerationType
81 if (current != nullptr) {
82 return current->GNAPropagateForward(
93 // TODO: add output status
97 DLLDECL void *GNAAlloc(
98 intel_gna_handle_t nGNADevice, // handle to GNA accelerator
99 uint32_t sizeRequested,
100 uint32_t* sizeGranted
102 if (current != nullptr) {
103 return current->GNAAlloc(nGNADevice, sizeRequested, sizeGranted);
105 if (sizeGranted != nullptr) {
106 *sizeGranted = sizeRequested;
114 DLLDECL intel_gna_status_t GNAFree(
115 intel_gna_handle_t nGNADevice // handle to GNA accelerator
117 if (current != nullptr) {
118 return current->GNAFree(nGNADevice);
126 DLLDECL intel_gna_handle_t GNADeviceOpen(
127 intel_gna_status_t* status // Status of the call
129 if (current != nullptr) {
130 return current->GNADeviceOpen(status);
139 DLLDECL intel_gna_handle_t GNADeviceOpenSetThreads(
140 intel_gna_status_t* status, // Status of the call
141 uint8_t n_threads // Number of worker threads
143 if (current != nullptr) {
144 return current->GNADeviceOpenSetThreads(status, n_threads);
153 DLLDECL intel_gna_status_t GNADeviceClose(
154 intel_gna_handle_t nGNADevice // handle to GNA accelerator
156 if (current != nullptr) {
157 return current->GNADeviceClose(nGNADevice);
166 DLLDECL intel_gna_status_t GNAWait(
167 intel_gna_handle_t nGNADevice, // handle to GNA accelerator
168 uint32_t nTimeoutMilliseconds,
169 uint32_t reqId // IN score request ID
171 if (current != nullptr) {
172 return current->GNAWait(nGNADevice, nTimeoutMilliseconds, reqId);
177 DLLDECL intel_gna_status_t GNAWaitPerfRes(
178 intel_gna_handle_t nGNADevice, // handle to GNA accelerator
179 uint32_t nTimeoutMilliseconds,
180 uint32_t reqId, // IN score request ID
181 intel_gna_perf_t* nGNAPerfResults
183 if (current != nullptr) {
184 return current->GNAWaitPerfRes(nGNADevice,
185 nTimeoutMilliseconds,
192 DLLDECL void* GNADumpXnn(
193 const intel_nnet_type_t* neuralNetwork,
194 const uint32_t* activeIndices,
195 uint32_t activeIndicesCount,
196 intel_gna_model_header* modelHeader,
197 intel_gna_status_t* status,
198 intel_gna_alloc_cb customAlloc) {
199 if (current != nullptr) {
200 return current->GNADumpXnn(neuralNetwork,
210 DLLDECL void gmmSetThreads(
213 current->gmmSetThreads((num != 0) ? num : 1);