配置#
Warp 在全局、模块和内核级别都有设置,可用于微调 Warp 程序的编译和详细程度。在可以在多个级别更改设置的情况下(例如:enable_backward
),更具体范围内的设置优先。
全局设置#
可以在调用 wp.init()
之前或之后通过直接赋值修改设置,但有些设置只有在初始化之前设置才会生效。
例如,用户内核缓存的位置可以通过以下方式更改
import os
import warp as wp
example_dir = os.path.dirname(os.path.realpath(__file__))
# set default cache directory before wp.init()
wp.config.kernel_cache_dir = os.path.join(example_dir, "tmp", "warpcache1")
wp.init()
- warp.config.print_launches: bool = False#
启用详细的内核启动日志记录。
打印每个内核启动的信息,包括
启动维度
输入/输出参数
目标设备
注意:启用此标志会影响性能。
- warp.config.mode: str = 'release'#
Warp 内核的编译模式。
- 参数:
mode –
"release"
或"debug"
。
注意:调试模式可能会影响性能。
此设置可以在模块级别通过设置
"mode"
模块选项来覆盖。
- warp.config.enable_vector_component_overwrites: bool = False#
允许对向量/矩阵/四元数分量进行多次写入。
注意:启用此选项可能会显著增加内核编译时间。
- warp.config.kernel_cache_dir: str | None = None#
存储已编译内核缓存的目录路径。
如果为
None
,路径按以下顺序确定WARP_CACHE_PATH
环境变量。系统的用户缓存目录(通过
appdirs.user_cache_directory
)。
注意:前缀为
wp_
的子目录将在此位置创建。
- warp.config.cuda_output: str | None = None#
内核编译的首选 CUDA 输出格式。
- 参数:
cuda_output – {
None
,"ptx"
,"cubin"
} 之一。如果为None
,则格式自动确定。
- warp.config.ptx_target_arch: int | None = None#
PTX 生成的目标架构版本,例如
ptx_target_arch = 75
。如果为
None
,则架构由系统中存在的设备确定。
- warp.config.lineinfo: bool = False#
启用包含行信息的模块编译。
为 GPU 执行编译的模块将使用
--generate-line-info
编译器选项进行编译,该选项为设备代码生成行号信息。无论此设置如何,在"debug"
模式下编译模块时始终包含行号信息。此设置可以在模块级别通过设置
"lineinfo"
模块选项来覆盖。
- warp.config.line_directives: bool = True#
在生成代码中启用 Python 源行映射。
如果为
True
,则在为包含行信息的模块生成的代码中插入#line
指令,以映射回原始 Python 源文件。
模块设置#
可以通过将选项对字典传递给 wp.set_module_options()
来更改控制运行时编译和代码生成的模块级设置。
例如,可以通过以下方式禁用整个模块中内核的反向传播编译
wp.set_module_options({"enable_backward": False})
模块的选项也可以使用 wp.get_module_options()
查询。
字段 |
类型 |
默认值 |
描述 |
---|---|---|---|
|
字符串 |
全局设置 |
|
|
整数 |
全局设置 |
|
|
布尔值 |
全局设置 |
|
|
布尔值 |
|
如果为 |
|
布尔值 |
|
如果为 |
|
布尔值 |
全局设置 |
|
|
字符串 |
|
|
内核设置#
通过将 enable_backward
参数传递给 @wp.kernel
装饰器,可以按内核禁用反向传播编译,示例如下
@wp.kernel(enable_backward=False)
def scale_2(
x: wp.array(dtype=float),
y: wp.array(dtype=float),
):
y[0] = x[0] ** 2.0