我是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
答案 0 :(得分:2)
pyCUDA是CUDA驱动程序API的包装器。 pyCUDA就是这样公开这些API的
在C / C ++中围绕驱动程序API编写包装器
使用Boost :: python将这些函数暴露给python,因为python的 解释器是用C(Cpython)
将这些包装器编译为_driver.so
导入为from pycuda._driver import *
的共享库。
但是当我查看pycuda / driver.py时,找不到在哪里定义了mem_alloc。
它在pycuda/src/cpp/cuda.hpp