gpt4 book ai didi

python - 将 ctypes 与 cuda 结合使用,在脚本末尾出现段错误(核心转储)错误

转载 作者:太空宇宙 更新时间:2023-11-03 18:40:13 25 4
gpt4 key购买 nike

我在 python 中使用 ctypes 来调用一些 cuda 函数并跟踪指针,但遇到了段错误,所以我将问题归结为以下问题。

Python 调用一个 cuda 函数,该函数在 GPU 上分配然后释放内存。如果这就是我所做的一切,那么效果很好。但是,如果我还定义了一个 numpy 数组并尝试取其平方范数 (np.dot(a, a)),那么,如果 a 足够大,我得到段错误(核心转储)

这是基本代码

cuda代码debug.cu:

#include <stdio.h>
#include <stdlib.h>

extern "C" {
void all_together( size_t N)
{
void*d;
int size = N *sizeof(float);
int err;

err = cudaMalloc(&d, size);
if (err != 0) printf("cuda malloc error: %d\n", err);

err = cudaFree(d);
if (err != 0) printf("cuda free error: %d\n", err);
}}

python代码master.py:

import numpy as np
import ctypes
from ctypes import *

dll = ctypes.CDLL('./cuda_lib.so', mode=ctypes.RTLD_GLOBAL)

def build_all_together_f(dll):
func = dll.all_together
func.argtypes = [c_size_t]
return func

__pycu_all_together = build_all_together_f(dll)


if __name__ == '__main__':
N = 5001 # if this is less, the error doesn't show up

a = np.random.randn(N).astype('float32')

da = __pycu_all_together(N)

# toggle this line on/off to get error
#np.dot(a, a)

print 'end of python'

编译:nvcc -Xcompiler -fPIC -shared -o cuda_lib.so debug.cu

运行:python master.py

注意:这是以前的另一个问题,但我删除了它并重写了它,使其更加紧凑和切题。

最佳答案

将 CUDA 更新到版本 5.5,问题消失了!

关于python - 将 ctypes 与 cuda 结合使用,在脚本末尾出现段错误(核心转储)错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20668726/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com