tvm.target
目标描述和代码生成模块。
TVM的目标字符串格式为。
注意
选项列表包括:
-device=
设备名称。
-mtriple=
指定目标三元组,这对于交叉编译很有用。
-mcpu=
指定当前架构中的特定芯片来生成代码。默认情况下,这会从目标三元组推断并自动检测当前架构。
-mattr=a1,+a2,-a3,…
覆盖或控制目标的特定属性,例如是否启用SIMD操作。默认属性集由当前CPU设置。
-mabi=
为指定的ABI生成代码,例如"lp64d"。
-system-lib
构建TVM系统库模块。系统库是一个全局模块,包含程序启动时自注册的函数。用户可以通过tvm.runtime.system_lib获取该模块。 这在禁止使用dlopen等动态加载API的环境中非常有用。只要程序链接了结果代码,系统库就会可用。
我们可以使用tvm.target.Target()从目标字符串创建一个tvm.target.Target。
我们也可以使用该模块中的其他特定函数来创建特定目标。
类:
|
目标设备信息,通过TVM API使用。 |
一种编译目标 |
|
|
一个编译时的数据表示,用于确定运行时数据的存储位置以及如何编译代码来计算它。 |
功能:
|
已弃用。 |
|
返回一个cuda目标。 |
|
返回一个ROCM目标。 |
|
返回一个ARM Mali GPU目标。 |
|
返回一个Intel Graphics目标。 |
|
返回一个ARM CPU目标。 |
|
返回一个树莓派3b目标设备。 |
|
返回一个ARM Mali GPU目标(Bifrost架构)。 |
|
返回一个RISC-V CPU目标。 |
|
返回一个Hexagon目标。 |
|
返回一个STM32目标。 |
|
返回一个Qualcomm GPU目标。 |
|
返回适用于目标和目标主机的CompilationConfig,使用与标准构建接口相同的表示约定。 |
返回一个标签字典,将每个标签名称映射到其对应的目标。 |
- class tvm.target.Target(target, host=None)
目标设备信息,通过TVM API使用。
注意
您可以通过构造函数或以下函数来创建目标
tvm.target.arm_cpu()创建arm_cpu目标tvm.target.cuda()创建CUDA目标tvm.target.rocm()创建ROCM目标tvm.target.mali()创建Mali目标tvm.target.intel_graphics()创建Intel Graphics目标
方法:
from_device(device)检测与给定设备关联的目标。
current([allow_none])返回当前目标。
get_kind_attr(attr_name)获取关于目标类型的附加属性。
返回此目标的设备类型。
返回可用目标名称列表。
canon_target(target)给定一个类似目标的单一对象,返回表示它的TVM目标对象。
canon_target_and_host(target[, target_host])返回一个包含target和target_host的TVM Target对象。
canon_multi_target(multi_targets)给定一个类似目标的对象,或者一个由类似目标的对象组成的集合类对象,返回一个表示它们的TVM目标对象的TVM数组。
canon_multi_target_and_host(target[, ...])返回一个TVM Array
,其中包含target和target_host。 canon_target_map_and_host(target_map[, ...])返回target_map,作为从规范形式的TVM Target到IRModules的映射。
target_or_current(target)返回目标值,如果target参数为None则返回环境中的当前目标值
属性:
如果目标中存在,则返回其CUDA架构。
如果目标中存在max_num_threads,则返回该值。
如果存在目标,则返回其在x维度上的最大块大小。
如果存在目标,则返回其在y维度上的最大块大小。
如果存在,则返回目标中的thread_warp_size。
如果目标中存在模型,则返回该模型。
如果目标中存在mcpu则返回该值。
如果目标中存在该属性,则返回该属性值。
- static current(allow_none=True)
返回当前目标。
- Parameters:
allow_none (bool) – 是否允许当前目标为空
- Raises:
如果当前目标未设置则抛出ValueError。 –
- property arch
如果目标中存在,则返回其CUDA架构。
- property max_num_threads
如果目标中存在max_num_threads,则返回该值。
- property max_block_size_x
如果存在目标,则返回其在x维度上的最大块大小。
- property max_block_size_y
如果存在目标,则返回其在y维度上的最大块大小。
- property thread_warp_size
如果存在,则返回目标中的thread_warp_size。
- property model
如果目标中存在模型,则返回该模型。
- property mcpu
如果目标中存在mcpu则返回该值。
- property mattr
如果目标中存在该属性,则返回该属性值。
- get_kind_attr(attr_name)
获取关于目标类型的附加属性。
- get_target_device_type()
返回此目标的设备类型。
- static list_kinds()
返回可用目标名称列表。
- static canon_target(target)
给定一个类似目标的单一对象,返回表示该对象的TVM Target对象。 可以从以下类型转换: - None(转换为None)。 - 现有的TVM Target对象。 - 字符串,例如“cuda”或“cuda -arch=sm_80” - Python字典,例如{“kind”: “cuda”, “arch”: “sm_80” }
- static canon_target_and_host(target, target_host=None)
返回一个包含目标(target)和目标主机(target_host)的TVM Target对象。同时以规范形式返回主机信息。给定的目标(target)可以是Target.canon_target识别的任何形式。如果提供了目标主机(target_host),它也可以是Target.canon_target识别的任何形式。如果提供了目标主机(target_host),它将被设置为结果Target对象中的'host'字段(并给出警告)。
请注意,此方法不支持异构编译目标。
- static canon_multi_target(multi_targets)
给定一个单一的目标类对象,或一个由目标类对象组成的集合类对象, 返回一个表示这些对象的TVM目标对象数组。可以从以下形式转换: - None(转换为None)。 - 由canon_target识别的单一目标类对象形式。 - 由canon_target识别的Python列表或TVM目标类对象数组形式。 - 一个Python字典或TVM映射,其中键为表示设备类型的TVM IntImm对象, 值为由canon_target识别的目标类对象形式。(这是一种表示异构目标的遗留方法,键值将被忽略。)
- static canon_multi_target_and_host(target, target_host=None)
返回一个TVM Array
,其中包含target和target_host。给定的target可以是Target.canon_multi_target识别的任何形式。如果提供了target_host,它可以是Target.canon_target识别的任何形式。如果提供了target_host,它将被设置为每个结果Target对象中的'host'(并给出警告)。
- static canon_target_map_and_host(target_map, target_host=None)
返回target_map作为从规范形式的TVM Target到IRModules的映射。输入target_map的键可以是Target.canon_target识别的任何形式。同样,如果提供的话,target_host也可以是Target.canon_target识别的任何形式。最终的target_map键将以规范形式捕获target_host。同时返回规范形式的target_host。
- static target_or_current(target)
返回目标值,如果target参数为None则返回环境中的当前目标值
- tvm.target.create(target)
已弃用。请直接使用
tvm.target.Target的构造函数。
- class tvm.target.TargetKind
一种编译目标
属性:
返回可用选项名称和类型的字典
方法:
options_from_name(kind_name)返回从TargetKind名称获取的可用选项名称和类型的字典
- property options
返回可用选项名称和类型的字典
- tvm.target.cuda(model='unknown', arch=None, options=None)
返回一个cuda目标。
- tvm.target.rocm(model='unknown', options=None)
返回一个ROCM目标。
- tvm.target.mali(model='unknown', options=None)
返回一个ARM Mali GPU目标。
- tvm.target.intel_graphics(model='unknown', options=None)
返回一个Intel Graphics目标。
- tvm.target.arm_cpu(model='unknown', options=None)
返回一个ARM CPU目标。 当没有预调优的操作参数时,该函数还会下载预调优的操作参数。
- tvm.target.bifrost(model='unknown', options=None)
返回一个ARM Mali GPU目标(Bifrost架构)。
- tvm.target.riscv_cpu(model='sifive-u54', options=None)
返回一个RISC-V CPU目标。 默认值:sifive-u54 rv64gc
- tvm.target.hexagon(cpu_ver='v68', **kwargs)
返回一个Hexagon目标。
- Parameters:
cpu_ver (str (默认值: "v68")) – 用于代码生成的CPU版本。并非所有允许的cpu字符串都是有效的,LLVM会抛出错误。
parameters (已识别的关键字)
-----------------------------
hvx (int (默认值: 128)) – HVX向量的字节大小。值为0时禁用HVX代码生成。
use_qfloat (bool (默认值:当cpu_ver >= v68时为True, 否则为False)) – 是否使用QFloat HVX指令集。
use_ieee_fp (bool (默认值: False)) – 是否使用IEEE HVX指令
num_cores (int (默认值: 4)) – HVX线程数。该属性是元调度器所必需的。
vtcm_capacity (int (默认值: 0)) – Hexagon VTCM容量限制。如果值为0,则表示容量无限制。
注意 (HVX中的浮点运算支持需要LLVM 14及以上版本。)
- tvm.target.stm32(series='unknown', options=None)
返回一个STM32目标。
- tvm.target.adreno(model='unknown', options=None, clml=False)
返回一个高通GPU目标。 :param model: 该设备的型号 :type model: str :param options: 附加选项 :type options: str或str列表
- class tvm.target.VirtualDevice(device=None, target=None, memory_scope='')
一个编译时的表示,用于描述数据在运行时的存储位置,以及如何编译代码来计算它。
- tvm.target.make_compilation_config(ctxt, target, target_host=None)
返回一个适用于目标(target)和目标主机(target_host)的CompilationConfig,使用与标准构建接口相同的表示约定。仅用于单元测试。