CUDA Python框架--Warp
文章平均质量分 94
扫地的小何尚
这个作者很懒,什么都没留下…
展开
-
NVIDIA CUDA Python编程框架--Warp开发文档第七章: 调试
内核缓存有 gen 和 bin 文件夹,分别包含生成的 C++/CUDA 代码和编译的二进制文件。对于复杂的应用程序,可能很难理解导致错误的操作顺序。如果遇到错误,它将引发异常,这通常有助于缩小有问题的内核范围。通常,最好的调试方法之一是简单地打印内核中的值。此设置可确保正确生成行号和调试符号。启动 Python 进程后,应附加调试器,并将断点插入到生成的代码中。Warp 将在调试构建配置中执行边界检查,以确保所有数组访问都位于定义的形状内。,了解如何调试在 CPU 上运行的 Warp 内核代码的示例。原创 2024-04-04 08:30:17 · 318 阅读 · 0 评论 -
NVIDIA CUDA Python编程框架--Warp开发文档第六章: 互操作
Warp 可以通过标准接口协议与其他基于 Python 的框架(例如 NumPy)进行互操作。原创 2024-04-04 08:24:27 · 579 阅读 · 0 评论 -
NVIDIA CUDA Python编程框架--Warp开发文档第五章: 通用函数
Warp 支持编写通用内核和函数,它们充当可以使用不同具体类型实例化的模板。这使您可以编写一次代码并以多种数据类型重用它。原创 2024-04-03 10:29:06 · 333 阅读 · 1 评论 -
NVIDIA CUDA Python编程框架--Warp开发文档第四章: 并发
在使用多个流的程序中,这比 wp.synchronize_device() 提供了对同步行为更细粒度的控制,wp.synchronize_device() 会同步设备上的所有流。问题是内核是在流 s 上启动的,这与用于创建数组 a 的流不同。该数组是在设备 cuda:0 的当前流上分配和初始化的,这意味着当流 s 开始执行使用该数组的内核时,该数组可能尚未准备好。事件可用于同步同一设备甚至不同 CUDA 设备上的流,因此您可以编排完全在可用 GPU 上执行的非常复杂的多流和多设备工作负载。原创 2024-04-03 10:19:01 · 360 阅读 · 0 评论 -
NVIDIA CUDA Python编程框架--Warp开发文档第三章: Allocators
Warp 0.14.0 添加了对 CUDA 数组的流排序内存池分配器的支持。从 Warp 0.15.0 开始,这些分配器在所有支持它们的 CUDA 设备上默认启用。“流顺序内存池分配器”很拗口,所以让我们一次一点地解开它。上面的每个调用都会分配一块足够大的设备内存来容纳数组,并可以选择使用指定的值初始化内容。wp.empty() 是唯一一个不以任何方式初始化内容的函数,它只是分配内存。内存池分配器从更大的保留内存池中获取一块内存,这通常比向操作系统请求全新的存储块要快。原创 2024-04-02 16:46:50 · 293 阅读 · 0 评论 -
NVIDIA CUDA Python编程框架--Warp开发文档第二章: 设备
Warp 旨在与任意 CUDA 上下文配合使用,因此它可以轻松集成到不同的工作流程中。基于 CUDA Runtime API 构建的应用程序针对每个设备的主要上下文。运行时 API 在幕后隐藏了 CUDA 上下文管理。在 Warp 中,设备“cuda:i”代表设备 i 的主要上下文,它与 CUDA 运行时 API 一致。基于 CUDA 驱动程序 API 构建的应用程序直接使用 CUDA 上下文,并且可以在任何设备上创建自定义 CUDA 上下文。原创 2024-04-02 10:44:58 · 631 阅读 · 0 评论 -
NVIDIA CUDA Python编程框架--Warp开发文档第一章: Basics
由于 Warp 内核被编译为本机 C++/CUDA 代码,因此所有函数输入参数都必须是静态类型的。这将自动与 GPU 同步,以确保所有未完成的工作已完成,并将数组复制回 CPU 内存,并在其中传递给 NumPy。默认情况下,从外部数据(例如:NumPy、列表、元组)初始化的 Warp 数组将为指定设备创建数据副本到新内存。属于 Python 模块的所有内核都会在运行时编译为动态库和 PTX,然后在应用程序重新启动之间缓存结果,以实现快速启动。用户函数可以在同一模块内的内核中自由调用,并接受数组作为输入。原创 2024-04-01 16:21:23 · 915 阅读 · 1 评论 -
NVIDIA CUDA Python编程框架--Warp开发文档
Warp 是一个用于编写高性能模拟和图形代码的 Python 框架。Warp 采用常规 Python 函数,JIT 将它们编译为可以在 CPU 或 GPU 上运行的高效内核代码。Warp 专为空间计算而设计,并附带一组丰富的原语,可以轻松编写物理模拟、感知、机器人和几何处理程序。此外,Warp 内核是可微分的,可以用作 PyTorch 和 JAX 等框架的机器学习管道的一部分。原创 2024-04-01 16:10:41 · 1147 阅读 · 0 评论