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

Where is pycuda.driver.mem_alloc() ? In pycuda/driver.py I can only find mem_alloc_like()

我是 python 和 PYCUDA 的新手。

在许多 PYCUDA 示例中,我可以找到这样的代码:

import pycuda.driver as cuda

cuda.mem_alloc(a.nbytes) 

但是当我查看 pycuda/driver.py 时,我找不到 mem_alloc 的定义位置。

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

def mem_alloc_like(ary):

    return mem_alloc(ary.nbytes)

这告诉我 mem_alloc 必须在库 driver.py 导入的某处。

然而,以下是我在 driver.py 中找到的导入,并且 none of six, numpy, or 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

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

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

  2. 使用 Boost::python 将这些函数公开给 python 因为 python 解释器在 C(Cpython)

  3. 中实现
  4. 将这些包装器编译成一个共享库,即 _driver.so

  5. 导入 from pycuda._driver import *.

  6. 的共享库

But when I take a look into pycuda/driver.py, I can't find where mem_alloc is defined.

定义在pycuda/src/cpp/cuda.hpp