pycuda.driver.mem_alloc()在哪里?在pycuda / driver.py中我只能找到mem_alloc_like()

时间:2018-08-23 07:05:32

标签: python cuda pycuda

我是python和PYCUDA的新手。

在许多PYCUDA示例中,我可以找到如下代码:

import pycuda.driver as cuda

cuda.mem_alloc(a.nbytes) 

但是当我查看pycuda / driver.py时,找不到在哪里定义了mem_alloc。

我只能找到调用mem_alloc()的mem_alloc_like:

def mem_alloc_like(ary):

    return mem_alloc(ary.nbytes)

这告诉我,mem_alloc必须位于库driver.py导入中。

但是,以下是我在driver.py中找到的导入,六个,numpy或sys都没有一个名为“ mem_alloc()”的函数

from __future__ import absolute_import
from __future__ import print_function
import six
try:
    from pycuda._driver import *  # noqa
except ImportError as e:
    if "_v2" in str(e):
    from warnings import warn
    warn("Failed to import the CUDA driver interface, with an error "
            "message indicating that the version of your CUDA header "
            "does not match the version of your CUDA driver.")
    raise
import numpy as np
import sys

1 个答案:

答案 0 :(得分:2)

pyCUDA是CUDA驱动程序API的包装器。 pyCUDA就是这样公开这些API的

  1. 在C / C ++中围绕驱动程序API编写包装器

  2. 使用Boost :: python将这些函数暴露给python,因为python的 解释器是用C(Cpython)

  3. 实现的
  4. 将这些包装器编译为_driver.so

  5. 的共享库
  6. 导入为from pycuda._driver import *的共享库。

  

但是当我查看pycuda / driver.py时,找不到在哪里定义了mem_alloc。

它在pycuda/src/cpp/cuda.hpp

中定义