python - 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, 0, &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,1), grid=(1,1))
print(d)
错误:
-------------------------------------------------- ------------------------- CompileError Traceback (最近一次调用最后一次) in () 22 """ 23 ---> 24 mod = SourceModule(代码) 25 test = mod.get_function("test") 26 print("main_Correlation Called")
compile_plain 中的 2 帧 /usr/local/lib/python3.7/dist-packages/pycuda/compiler.py(源,选项,保持,nvcc,cache_dir,目标)153 cmdline,154 stdout=stdout.decode(“utf- 8", "替换"), --> 155 标准错误=stderr.decode("utf-8", "替换"), 156) 157
CompileError:/tmp/tmprygdeq52/kernel.cu 的 nvcc 编译失败 [命令: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):错误:此声明可能没有外部“C”链接
/usr/local/cuda/bin/../targets/x86_64-linux/include/curand_kernel.h(527):错误:此声明可能没有外部“C”链接
/usr/local/cuda/bin/../targets/x86_64-linux/include/curand_kernel.h(583):错误:此声明可能没有外部“C”链接
……………………
/usr/local/cuda/bin/../targets/x86_64-linux/include/curand_discrete2.h(86):错误:此声明可能没有外部“C”链接
kernel.cu(19):错误:从设备或全局 函数启动内核需要单独的编译模式
在“kernel.cu”的编译中检测到 31 个错误。]
解决方案
推荐阅读
- rest - 尝试使用 REST API 在 Jira Cloud 中创建用户组
- rest - 使用令牌 api_key:access_token 标头测试 API 的正确方法是什么?
- laravel - Laravel HTTP 测试和请求属性
- java - 在java中使用PythonInterpreter导入python包
- c# - 由于无效的 Web URL,Twitter 创建应用程序失败
- postgresql - 遍历postgresql触发器中的表
- abap - 从 itab 中获取其他字段中每个不同值的最高值
- android - Android模拟器上的白屏,但屏幕截图显示它可以正常工作
- python - 用于过滤 Pandas DataFrame 行的 excel 嵌套 if 条件的 Python 等效项
- python - Python方法之间的区别是否可以创建新变量