【问题标题】:Cuda cuLaunchHostFunc equivalent in python libspython库中的Cuda cuLaunchHostFunc等价物
【发布时间】:2020-08-30 21:49:51
【问题描述】:

使用 Python 来驱动 CUDA,我想在一个流中异步调度 Python 主机函数,该流在发生内核和内存复制之后运行。

在 Python 库之一(PyCudaNumba、...)中是否有与 CUDA C++ 函数 CUresult cuLaunchHostFunc(CUstream hStream, CUhostFn fn, void* userData) 等效的函数?

驱动API函数在CUDA docs

【问题讨论】:

  • 这里的“主机功能”是什么意思?
  • CUDA上下文中的Host函数是在CPU(主机)而不是GPU(设备)上运行的函数。
  • 显然,但是您是在 Python 的上下文中问的,那么您的意思是 Python 函数还是编译的 C++ 函数? (关于 cudaLaunchHostFunc 的答案是 99% 肯定不是)
  • 我想回调一个 Python 函数。
  • 你显然不能这样做。这意味着 CUDA 驱动程序可以运行 python 代码,显然不是这样

标签: callback cuda numba pycuda


【解决方案1】:

在 Python 库之一(PyCuda、Numba、...)中是否有与 CUDA C++ 函数 CUresult cuLaunchHostFunc(CUstream hStream, CUhostFn fn, void* userData) 等效的函数?

这两个都没有。我所知道的基于驱动程序 API 的 CUDA 框架都没有公开 cuLaunchHostFunc(PyCUDA、Numba、JCUDA)。

我想在内核和内存复制完成后运行的流中异步调度 Python 主机函数

本机 CUDA 驱动程序 API 中没有任何东西可以支持这一点。 Tensorflow 和 Pytorch 都在 Python 级别具有精心设计的执行流水线和回调机制,可能为您提供与您设想的功能相似的东西。但它不会在 CUDA 级别完成,而是在更高的抽象级别。

【讨论】:

    猜你喜欢
    • 2020-06-25
    • 2018-09-06
    • 2013-02-06
    • 2012-03-22
    • 2016-12-27
    • 2013-12-13
    • 2021-06-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多