跳到主要内容
版本:2.9.0

TORQ C API 参考

概述

TORQ C API 是 UCA Runtime(运行时库)的 C 语言接口。通过使用 TORQ C API,开发者可以利用 NPU 的计算能力完成高效的 TORQ 模型推理。本文对 TORQ C API 的各个函数、数据结构以及返回值定义进行说明。

支持硬件平台

TORQ C API 适用如下硬件平台。

支持硬件平台
A200
A210

TORQ 编译说明

开发者编译应用时要包含接口函数所在的头文件,并且根据使用的硬件平台和系统类型,链接相应 UCA 运行时库。以下对 TORQ C API 头文件和运行时库文件进行说明。

TORQ C API 头文件

torq_api.h 中定义了部署 TORQ 模型的基础接口和数据结构。

Linux 平台 TORQ 运行时库

对于 A200/A210 系列硬件平台, UCA 运行时库文件libtorqrt.so,路径为 <sdk_path>/uca/runtime,其中 <sdk_path> 是 NPU 软件开发包的路径。


TORQ C API 说明

各个硬件平台的 C API 支持情况

TORQ C API 的接口以及接口参数对不同芯片平台的支持情况可能存在差异。各个硬件平台的 TORQ C API 接口支持情况如下表所示。

序号TORQ C APIA200A210
1torq_init
2torq_destroy
3torq_query
4torq_inputs_set
5torq_run
6torq_outputs_get
7torq_outputs_release
8torq_create_mem_from_phys
9torq_create_mem_from_fd
10torq_create_mem
11torq_destroy_mem
12torq_set_io_mem
13torq_set_input_shapes

TORQ C API 接口调用流程

关于 TORQ C API 接口调用流程,请见 TORQ SDK 介绍

基础数据结构定义

torq_sdk_version

描述

TORQ SDK 的版本信息。

成员

成员变量数据类型含义
api_versionchar[]SDK 的版本信息。
drv_versionchar[]SDK 所基于的驱动版本信息。

torq_input_output_num

描述

输入/输出 tensor 个数。

成员

成员变量数据类型含义
n_inputuint32_t输入 tensor 个数。
n_outputuint32_t输出 tensor 个数。

torq_input_range

描述

表示一个输入的支持形状列表信息。

成员

成员变量数据类型含义
indexuint32_t表示该形状对应输入的索引位置。
shape_numberuint32_t表示 TORQ 模型支持的输入形状个数。
fmttorq_tensor_format表示形状对应的数据布局格式。
namechar[]表示输入的名称。
dyn_rangeuint32_t[][]表示输入形状列表,它是包含多个形状数组的二维数组,形状优先存储。
n_dimsuint32_t表示每个形状数组的有效维度个数。

torq_tensor_attr

描述

TORQ 模型的 tensor 的属性。

成员

成员变量数据类型含义
indexuint32_t表示输入输出 tensor 的索引位置。
n_dimsuint32_ttensor 维度个数。
dimsuint32_t[]tensor 形状。
namechar[]tensor 名称。
n_elemsuint32_ttensor 数据元素个数。
sizeuint32_ttensor 数据所占内存大小。
fmttorq_tensor_formattensor 维度的格式, 有以下格式:
  • TORQ_TENSOR_NCHW
  • TORQ_TENSOR_UNDEFINED
typetorq_tensor_typetensor 数据类型, 有以下数据类型:
  • TORQ_TENSOR_FLOAT32
  • TORQ_TENSOR_FLOAT16
  • TORQ_TENSOR_INT8
  • TORQ_TENSOR_UINT8
  • TORQ_TENSOR_INT16
  • TORQ_TENSOR_UINT16
  • TORQ_TENSOR_INT32
  • TORQ_TENSOR_INT64
  • TORQ_TENSOR_BOOL
qnt_typetorq_tensor_qnt_typetensor 量化类型, 有以下的量化类型:
  • TORQ_TENSOR_QNT_NONE: 未量化
  • TORQ_TENSOR_QNT_AFFINE_ASYMMETRIC: 非对称量化
flint8_t无效,占位预留。
zpint32_tzero point,TORQ_TENSOR_QNT_AFFINE_ASYMMETRIC 量化类型的参数。
scalefloatTORQ_TENSOR_QNT_AFFINE_ASYMMETRIC 量化类型的参数。
w_strideuint32_t无效,占位预留。
size_with_strideuint32_t无效,占位预留。
pass_throughuint8_t
  • 0 表示未转换的数据。
  • 1 表示转换后的数据, 转换包括归一化和量化。
h_strideuint32_t无效,占位预留。

torq_tensor_mem

描述

tensor 的内存信息。

成员

成员变量数据类型含义
virt_addrvoid*tensor 的虚拟地址。
phys_addruint64_ttensor 的物理地址。
fdint32_ttensor 的文件描述符。
offsetint32_ttensor 内存相较于文件描述符和虚拟地址的偏移量。
sizeuint32_ttensor 占用的内存大小。
flagsuint32_ttorq_tensor_mem 的标志位。
priv_datavoid*内存的私有数据。

torq_input

描述

TORQ 模型的输入数据,作为参数传递给 torq_inputs_set 函数。

成员

成员变量数据类型含义
indexuint32_t该输入的索引位置。
bufvoid*输入数据的指针。
sizeuint32_t输入数据所占内存大小。
pass_throughuint8_tpass_through=1 时,buf 存放的输入数据不做任何预处理(如归一化等),直接设为模型的输入节点。
typetorq_tensor_type输入数据的类型。
fmttorq_tensor_format输入数据的格式。

torq_output

描述

TORQ 模型输出数据,作为参数传递给 torq_outputs_get 函数。在torq_outputs_get函数执行后,结构体将被赋值。

成员

成员变量数据类型含义
want_floatuint8_t标识是否需要将输出数据转为 float 类型输出,该字段由用户设置。
is_preallocuint8_t标识存放输出数据是否是预分配,该字段由用户设置。
indexuint32_t该输出的索引位置,该字段由用户设置。
bufvoid*输出数据的指针,该字段由接口返回。
sizeuint32_t输出数据所占内存大小,该字段由接口返回。

基础 API 说明

torq_init

描述

初始化函数,用于初始化 TORQ 上下文。

创建 torq_context对象(根据flagtorq_init_extend结构体加载 TORQ 模型执行特定的初始化行为)。

参数

参数数据类型含义
contexttorq_context*torq_context 指针。
modelvoid*根据 size 的不同,可能为 TORQ 模型的二进制数据或者 TORQ 模型路径。
  • size>0 时,model 为 TORQ 模型的二进制数据。
  • size=0 时,model 为 TORQ 模型路径。
sizeuint32_t
  • 若 model 为 TORQ 模型的二进制数据,则 size 为 TORQ 模型的大小。
  • 若 model 为 TORQ 模型的路径,则 size=0。
flaguint32_t预留初始化标志,默认初始化行为需要设置为 0。
extendtorq_init_extend*预留初始化时的扩展信息。

返回值

int 错误码。详情见 TORQ 错误码

示例代码

torq_context ctx;
int ret = torq_init(&ctx, model_data, model_data_size, 0, NULL);

torq_destroy

描述

释放传入的torq_context及其相关资源。

参数

参数数据类型含义
contexttorq_context要销毁的 torq_context 对象。

返回值

int 错误码。详情见 TORQ 错误码

示例代码

torq_context ctx;
int ret = torq_destroy(ctx);

torq_query

描述

查询获取到模型输入输出信息、逐层运行时间、模型推理的总时间、 SDK 版本、内存占用信息、用户自定义字符串等信息。

参数

参数数据类型含义
contexttorq_contexttorq_context 对象。
cmdtorq_query_cmd查询命令。关于支持的查询命令,请见下表。
infovoid*存放返回结果的结构体变量。
sizeuint32_tinfo 对应的结构体变量的大小。

当前 SDK 支持的查询命令如下表。

查询命令返回结果含义
TORQ_QUERY_IN_OUT_NUMtorq_input_output_num在 torq_init 接口调用完毕后查询输入/输出 tensor 个数。
查询前请先创建 torq_input_output_num 结构体。
TORQ_QUERY_INPUT_ATTRtorq_tensor_attr在 torq_init 接口调用完毕后查询输入 tensor 属性(用于通用 API 接口)。
查询前请先创建 torq_tensor_attr 结构体。
TORQ_QUERY_OUTPUT_ATTRtorq_tensor_attr在 torq_init 接口调用完毕后,查询输出 tensor 属性(用于通用 API 接口)。
查询前请先创建 torq_tensor_attr 结构体。
TORQ_QUERY_SDK_VERSIONtorq_sdk_version查询 SDK 版本。查询前请先创建 torq_sdk_version 结构体。
TORQ_QUERY_NATIVE_INPUT_ATTRtorq_tensor_attr使用零拷贝 API 接口时,在 torq_init 接口调用完毕后查询原生输入 tensor 属性,即 NPU 直接读取到的模型输入属性。
查询前请先创建 torq_tensor_attr 结构体。
TORQ_QUERY_NATIVE_OUTPUT_ATTRtorq_tensor_attr使用零拷贝 API 接口时,在 torq_init 接口调用完毕后查询原生输出 tensor 属性,即 NPU 直接读取到的模型输出属性。
查询前请先创建 torq_tensor_attr 结构体。
TORQ_QUERY_CURRENT_INPUT_ATTRtorq_tensor_attr使用支持动态形状 TORQ 模型时, 在 torq_set_input_shapes 接口调用完毕后,查询模型当前推理所使用的输入属性。
查询前请先创建 torq_tensor_attr 结构体。
TORQ_QUERY_CURRENT_OUTPUT_ATTRtorq_tensor_attr使用支持动态形状 TORQ 模型时, 在 torq_set_input_shapes 接口调用完毕后,查询模型当前推理所使用的输出属性。
查询前请先创建 torq_tensor_attr 结构体。
TORQ_QUERY_CURRENT_NATIVE_INPUT_ATTRtorq_tensor_attr使用支持动态形状 TORQ 模型时, 在 torq_set_input_shapes 接口调用完毕后,查询模型当前推理所使用的 NPU 原生输入属性。
查询前请先创建 torq_tensor_attr 结构体。
TORQ_QUERY_CURRENT_NATIVE_OUTPUT_ATTRtorq_tensor_attr使用支持动态形状 TORQ 模型时, 在 torq_set_input_shapes 接口调用完毕后,查询模型当前推理所使用的 NPU 原生输出属性。
查询前请先创建 torq_tensor_attr 结构体。

返回值

int 错误码。详情见 TORQ 错误码

示例代码

  • TORQ_QUERY_SDK_VERSION 查询 SDK 版本。

    torq_sdk_version version;
    ret = torq_query(ctx, TORQ_QUERY_SDK_VERSION, &version, sizeof(torq_sdk_version ));

    printf("sdk api version: %s\n", version.api_version);
    printf("driver version: %s\n", version.drv_version);
  • TORQ_QUERY_IN_OUT_NUM ​ 查询输入输出 tensor 个数。

    torq_input_output_num io_num;

    ret = torq_query(ctx, TORQ_QUERY_IN_OUT_NUM, &io_num, sizeof(io_num));
    printf("model input num: %d, output num: %d\n", io_num.n_input, io_num.n_output);
  • TORQ_QUERY_INPUT_ATTR 查询输入 tensor 属性(用于通用 API 接口)。

    torq_tensor_attr input_attrs[io_num.n_input]; 
    memset(input_attrs, 0, sizeof(input_attrs));

    for (int i = 0; i < io_num.n_input; i++) {
    input_attrs[i].index = i;
    ret = torq_query(ctx, TORQ_QUERY_INPUT_ATTR, &(input_attrs[i]), sizeof(torq_tensor_attr));
    }
  • TORQ_QUERY_OUTPUT_ATTR ​ 查询输出 tensor 属性(用于通用 API 接口)。

    torq_tensor_attr output_attrs[io_num.n_output]; 
    memset(output_attrs, 0, sizeof(output_attrs));

    for (int i = 0; i < io_num.n_output; i++) {
    output_attrs[i].index = i;
    ret = torq_query(ctx, TORQ_QUERY_OUTPUT_ATTR, &(output_attrs[i]), sizeof(torq_tensor_attr));
    }
  • TORQ_QUERY_NATIVE_INPUT_ATTR 查询原生输入 tensor 属性(用于零拷贝 API 接口)。

    torq_tensor_attr input_attrs[io_num.n_input];
    memset(input_attrs, 0, sizeof(input_attrs));

    for (int i = 0; i < io_num.n_input; i++) {
    input_attrs[i].index = i;
    ret = torq_query(ctx, TORQ_QUERY_NATIVE_INPUT_ATTR, &(input_attrs[i]), sizeof(torq_tensor_attr));
    }
  • TORQ_QUERY_NATIVE_OUTPUT_ATTR 查询原生输出 tensor 属性(用于零拷贝 API 接口)。

    torq_tensor_attr output_attrs[io_num.n_output];
    memset(output_attrs, 0, sizeof(output_attrs));

    for (int i = 0; i < io_num.n_output; i++) {
    output_attrs[i].index = i;
    ret = torq_query(ctx, TORQ_QUERY_NATIVE_OUTPUT_ATTR, &(output_attrs[i]), sizeof(torq_tensor_attr));
    }
  • TORQ_QUERY_CURRENT_INPUT_ATTR ​ 查询 TORQ 模型当前使用的输入动态形状。

    torq_tensor_attr cur_input_attrs[io_num.n_input];
    memset(cur_input_attrs, 0, io_num.n_input * sizeof(torq_tensor_attr));

    for (uint32_t i = 0; i < io_num.n_input; i++) {
    cur_input_attrs[i].index = i;
    ret = torq_query(ctx, TORQ_QUERY_CURRENT_INPUT_ATTR, &(cur_input_attrs[i]), sizeof(torq_tensor_attr));
    }
  • TORQ_QUERY_CURRENT_OUTPUT_ATTR ​ 查询 TORQ 模型当前使用的输出动态形状。

    torq_tensor_attr cur_output_attrs[io_num.n_output];
    memset(cur_output_attrs, 0, io_num.n_output * sizeof(torq_tensor_attr));

    for (uint32_t i = 0; i < io_num.n_output; i++) {
    cur_output_attrs[i].index = i;
    ret = torq_query(ctx, TORQ_QUERY_CURRENT_OUTPUT_ATTR, &(cur_output_attrs[i]), sizeof(torq_tensor_attr));

    }
  • TORQ_QUERY_CURRENT_NATIVE_INPUT_ATTR 查询 TORQ 模型当前使用的原生输入动态形状。

    torq_tensor_attr cur_input_attrs[io_num.n_input];

    memset(cur_input_attrs, 0, io_num.n_input * sizeof(torq_tensor_attr));

    for (uint32_t i = 0; i < io_num.n_input; i++) {
    cur_input_attrs[i].index = i;
    ret = torq_query(ctx, TORQ_QUERY_CURRENT_NATIVE_INPUT_ATTR, &(cur_input_attrs[i]), sizeof(torq_tensor_attr));

    }
  • TORQ_QUERY_CURRENT_NATIVE_OUTPUT_ATTR 查询 TORQ 模型当前使用的原生输出动态形状。

    torq_tensor_attr cur_output_attrs[io_num.n_output];

    memset(cur_output_attrs, 0, io_num.n_output * sizeof(torq_tensor_attr));

    for (uint32_t i = 0; i < io_num.n_output; i++) {
    cur_output_attrs[i].index = i;

    ret = torq_query(ctx, TORQ_QUERY_CURRENT_NATIVE_OUTPUT_ATTR, &(cur_output_attrs[i]), sizeof(torq_tensor_attr));

    }

torq_inputs_set

描述

设置模型的输入数据。该函数能够支持多个输入,其中每个输入均是 torq_input 结构体对象,在传入之前请确认该对象已被设置。

参数

参数数据类型含义
contexttorq_contexttorq_context 对象。
n_inputsuint32_t输入数据个数。
inputstorq_input[]输入数据数组,数组每个元素是 torq_input 结构体对象。

返回值

int 错误码。详情见 TORQ 错误码

示例代码

torq_input inputs[1];
memset(inputs, 0, sizeof(inputs));
inputs[0].index = 0;
inputs[0].type = TORQ_TENSOR_UINT8;
inputs[0].size = img_width*img_height*img_channels;
inputs[0].fmt = TORQ_TENSOR_NHWC;
inputs[0].buf = in_data;
inputs[0].pass_through = 0;

ret = torq_inputs_set(ctx, 1, inputs);


torq_run

描述

执行一次模型推理。调用之前需要先通过 torq_inputs_set 函数或者零拷贝的接口设置输入数据。

参数

参数数据类型含义
contexttorq_contexttorq_context 对象。
extendtorq_run_extend*保留扩展,当前没有使用,传入 NULL 即可。

返回值

int 错误码。详情见 TORQ 错误码

示例代码

ret = torq_run(ctx, NULL);

torq_outputs_get

描述

获取模型推理的输出数据。该函数能够一次获取多个输出数据。其中每个输出是 torq_output 结构体对象,在函数调用之前需要依次创建并设置每个 torq_output 对象。

对于输出数据的 buffer 存放可以采用以下两种方式

  • 用户自行申请和释放。此时 torq_output 对象的 is_prealloc 设置为 1,并且将 buf 指针指向用户申请的 buffer。

  • 由 torq 来进行分配。此时 torq_output 对象的 is_prealloc 设置为 0,函数执行之后 buf 将指向输出数据。

参数

参数数据类型含义
contexttorq_contexttorq_context 对象。
n_outputsuint32_t输出数据个数。
outputstorq_output[]输出数据的数组,其中数组每个元素为 torq_output 结构体对象,代表模型的一个输出。
extendtorq_run_extend*保留扩展,当前没有使用,传入 NULL 即可。

返回值

int 错误码。详情见 TORQ 错误码

示例代码

torq_output outputs[io_num.n_output];
memset(outputs, 0, sizeof(outputs));

for (int i = 0; i < io_num.n_output; i++) {
outputs[i].index = i;
outputs[i].is_prealloc = 0;
outputs[i].want_float = 1;
}
ret = torq_outputs_get(ctx, io_num.n_output, outputs, NULL);

torq_outputs_release

描述

释放 torq_outputs_get 函数,释放输出资源。

参数

参数数据类型含义
contexttorq_contexttorq_context 对象。
n_outputsuint32_t输出数据个数。
outputs[]torq_output要销毁的 torq_output 数组。

返回值

int 错误码。详情见 TORQ 错误码

示例代码

ret = torq_outputs_release(ctx, io_num.n_output, outputs); 

torq_create_mem_from_phys

描述

通过物理地址创建 torq_tensor_mem 结构体并分配内存。

用户为 NPU 分配内存时,torq_create_mem_from_phys 函数传入物理地址,虚拟地址,大小和外部内存相关信息并赋值给 torq_tensor_mem 结构体,从而创建一个 torq_tensor_mem 结构体并获取该结构体指针。

参数

参数数据类型含义
ctxtorq_contexttorq_context 对象。
phys_addruint64_t内存的物理地址。
virt_addrvoid*内存的虚拟地址。
sizeuint32_t内存的大小。

返回值

torq_tensor_mem*: tensor 内存信息结构体指针。

示例代码

//suppose we have got buffer information as input_fd, input_virt and size

torq_tensor_mem* input_mems [1];

input_mems[0] = torq_create_mem_from_phys(ctx, input_phys, input_virt, size);

torq_create_mem_from_fd

描述

通过文件描述符创建 torq_tensor_mem 结构体。

用户为 NPU 分配内存时,torq_create_mem_from_fd 函数传入文件描述符 fd、偏移、虚拟地址以及大小,外部内存并赋值给 torq_tensor_mem 结构体,从而创建一个 torq_tensor_mem 结构体并获取该结构体指针。

参数

参数数据类型含义
ctxtorq_contexttorq_context 对象。
fdint32_t内存的文件描述符。
virt_addrvoid*内存的虚拟地址, fd 对应的内存的首地址。
sizeuint32_t内存的大小。
offsetint32_t内存相对于文件描述符和虚拟地址的偏移量。

返回值

torq_tensor_mem*: tensor 内存信息结构体指针。

示例代码

//suppose we have got buffer information as input_fd, input_virt and size

torq_tensor_mem* input_mems [1];

input_mems[0] = torq_create_mem_from_fd(ctx, input_fd, input_virt, size, 0);

torq_create_mem

描述

当用户要 NPU 内部分配内存时,torq_create_mem 函数可以分配用户指定的内存大小,并返回一个 torq_tensor_mem 结构体。

参数

参数数据类型含义
ctxtorq_contexttorq_context 对象。
sizeuint32_t内存的大小。

返回值

torq_tensor_mem*: tensor 内存信息结构体指针。

示例代码

//suppose we have got buffer size

torq_tensor_mem* input_mems [1];
input_mems[0] = torq_create_mem(ctx, size);

torq_destroy_mem

描述

torq_destroy_mem 函数会销毁 torq_tensor_mem 结构体,用户分配的内存需要自行释放。

参数

参数数据类型含义
ctxtorq_contexttorq_context 对象。
memtorq_tensor_mem*tensor 内存信息结构体指针。

返回值

int 错误码。详情见 TORQ 错误码

示例代码

torq_tensor_mem* input_mems [1];
int ret = torq_destroy_mem(ctx, input_mems[0]);

torq_set_io_mem

描述

设置包含模型输入/输出内存信息的 torq_tensor_mem结构体。如果用户自己为网络输入/输出 tensor 分配内存,初始化相应的 torq_tensor_mem 结构体后,在调用 torq_run 前,通过 torq_set_io_mem 函数可以让 NPU 使用该内存。

参数

参数数据类型含义
ctxtorq_contexttorq_context 对象。
memtorq_tensor_mem*输入/输出 tensor 内存信息结构体指针。
attrtorq_tensor_attr*输入/输出 tensor 的属性。

返回值

int 错误码。详情见 TORQ 错误码

示例代码

torq_tensor_attr output_attrs[1];
torq_tensor_mem* output_mems[1];

ret = torq_query(ctx, TORQ_QUERY_NATIVE_OUTPUT_ATTR, &(output_attrs[0]), sizeof(torq_tensor_attr));
output_mems[0] = torq_create_mem(ctx, output_attrs[0].size_with_stride);
torq_set_io_mem(ctx, output_mems[0], &output_attrs[0]);

torq_set_input_shapes

描述

设置模型当前使用的输入形状。

对于动态形状输入 TORQ 模型,在推理前必须指定当前使用的输入形状。该接口传入输入的 tensor 个数和 torq_tensor_attr 数组,包含了每个输入形状和对应的数据布局信息,包含每个 torq_tensor_attr 结构体对象的索引、名称、形状(dims)和内存布局信息(fmt)。

说明

  • 在使用该接口前,用户可先通过 torq_query 函数查询 TORQ 模型支持的输入形状数量和动态形状列表,确认输入数据的形状在模型支持的输入形状列表中。

  • 初次运行或每次切换新的输入形状,需要调用该接口设置新的形状,否则不需要重复调用该接口 。

参数

参数数据类型含义
ctxtorq_contexttorq_context 对象
n_inputsuint32_t输入 tensor 的数量
attrtorq_tensor_attr[]输入 tensor 的属性数组指针,传递所有输入的形状信息,用户需要设置每个输入属性结构体中的 index、 name、 dims、 fmt、 n_dims 成员,其他成员无需设置

返回值

int 错误码。详情见 TORQ 错误码

示例代码

for (int i = 0; i < io_num.n_input; i++) {
for (int j = 0; j < input_attrs[i].n_dims; ++j) {
//使用第一个动态输入形状
input_attrs[i].dims[j] = dyn_range[i].dyn_range[0][j];
}
}

ret = torq_set_input_shapes(ctx, io_num.n_input, input_attrs);

if (ret < 0) {
fprintf(stderr, "torq_set_input_shapes error! ret=%d\n", ret);
return -1;
}

TORQ 错误码

TORQ API 函数的返回值错误码定义如下表所示。

错误码取值错误详情
TORQ_SUCC0执行成功。
TORQ_ERR_FAIL-1执行出错。
TORQ_ERR_TIMEOUT-2执行超时。
TORQ_ERR_DEVICE_UNAVAILABLE-3NPU 设备不可用。
TORQ_ERR_MALLOC_FAIL-4内存分配失败。
TORQ_ERR_PARAM_INVALID-5传入参数错误。
TORQ_ERR_MODEL_INVALID-6传入的 TORQ 模型无效。
TORQ_ERR_CTX_INVALID-7传入的 torq_context 无效。
TORQ_ERR_INPUT_INVALID-8传入的 torq_input 对象无效。
TORQ_ERR_OUTPUT_INVALID-9传入的 torq_output 对象无效。
TORQ_ERR_DEVICE_UNMATCH-10设备型号/驱动版本不匹配。
TORQ_ERR_INCOMPATILE_PRE_COMPILE_MODEL-11当前驱动暂不支持。
TORQ_ERR_INCOMPATILE_OPTIMIZATION_LEVEL_VERSION-12TORQ 模型设置了优化等级的选项,但是和当前驱动不兼容。
TORQ_ERR_TARGET_PLATFORM_UNMATCH-13TORQ 模型和当前平台不兼容。
TORQ_ERR_NOT_SUPPORTED-14当前平台不支持此 API。
TORQ_ERR_MEMORY-15内存分配失败。