我的算法(并行多前高斯消除)需要在 CUDA 内核中动态分配内存(树构建)。有谁知道 gpuocelot 是否支持这些东西?
根据这个:stackoverflow-link和CUDA编程指南我可以做这样的事情。但是使用 gpuocelot 我会在运行时出错。
错误:
- 当我
malloc()
在内核内部调用时,出现此错误:(2.000239) ExternalFunctionSet.cpp:371:断言消息:从 PTX 调用外部主机函数需要 LLVM。 求解器:ocelot/ir/implementation/ExternalFunctionSet.cpp:371: void ir::ExternalFunctionSet::ExternalFunction::call(void*, const ir::PTXKernel::Prototype&): Assertion false' 失败。
- 当我尝试获取或设置 malloc 堆大小(在主机代码内)时:
求解器:ocelot/cuda/implementation/CudaRuntimeInterface.cpp:811: virtual cudaError_t cuda::CudaRuntimeInterface::cudaDeviceGetLimit(size_t*, cudaLimit): Assertion '0 && "unimplemented"' 失败。
也许我必须(以某种方式)指向我想使用 device 的编译器malloc()
?
有什么建议吗?