微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PyCUDA 中的随机数生成

如何解决PyCUDA 中的随机数生成

我正在尝试使用 pycuda 生成随机数,没有随机生成代码代码工作正常。任何帮助将不胜感激。

from pycuda.compiler import SourceModule

code="""
#include <stdio.h>
#include <curand.h>
#include <curand_kernel.h>


__global__ void testrand2(unsigned long seed,float *a){
    int idx = threadIdx.x + blockIdx.x * blockDim.x;
    curandState state;
    curand_init(seed,idx,&state);
    a[idx] = curand_uniform(&state);
}
__global__ void test(float *arr)
{
  dim3 threadsPerBlock(256,1,1);
  dim3 numBlocks(1,1);
  
  testrand2<<<threadsPerBlock,numBlocks>>>(1,arr);
}
"""

mod = SourceModule(code)
test = mod.get_function("test")

d = np.zeros(256,dtype=np.float32)

test (drv.InOut(d),block=(1,1),grid=(1,1))
print(d)

错误

----------------------------------------------- ---------------------------- CompileError Traceback(最近一次调用 最后) 在 () 22""" 23 ---> 24 mod = SourceModule(代码) 25 test = mod.get_function("test") 26 print("main_Correlation Called")

2 帧 /usr/local/lib/python3.7/dist-packages/pycuda/compiler.py 中 compile_plain(源,选项,保留,nvcc,cache_dir,目标) 153 命令行, 第 154 章 --> 155 stderr=stderr.decode("utf-8","replace"),156) 157

CompileError: nvcc 编译 /tmp/tmprygdeq52/kernel.cu 失败 [命令:nvcc --cubin -arch sm_75 -I/usr/local/lib/python3.7/dist-packages/pycuda/cuda kernel.cu] [stderr: /usr/local/cuda/bin/../targets/x86_64-linux/include/curand_kernel.h(507): 错误:此声明可能没有 extern "C" 链接

/usr/local/cuda/bin/../targets/x86_64-linux/include/curand_kernel.h(527): 错误:此声明可能没有 extern "C" 链接

/usr/local/cuda/bin/../targets/x86_64-linux/include/curand_kernel.h(583): 错误:此声明可能没有 extern "C" 链接

………… ……

/usr/local/cuda/bin/../targets/x86_64-linux/include/curand_discrete2.h(86): 错误:此声明可能没有 extern "C" 链接

kernel.cu(19):错误:从设备全局启动内核 函数需要单独的编译模式

在编译“kernel.cu”时检测到 31 个错误。 ]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。