gpuocelot是否支持CUDA设备中的动态内存分配?

gpuocelot是否支持CUDA设备中的动态内存分配?,cuda,nvidia,dynamic-memory-allocation,gpu,Cuda,Nvidia,Dynamic Memory Allocation,Gpu,我的算法(并行多前沿高斯消除)需要在CUDA内核中动态分配内存(树构建)。有人知道gpuocelot是否支持这些东西吗 根据这个:和CUDA编程指南我可以做这样的事情。但是使用gpuocelot,我会在运行时出错 错误: 当我在内核内部调用malloc()时,我得到以下错误:(2.000239)ExternalFunctionSet.cpp:371:断言消息:需要LLVM才能从PTX调用外部主机函数。 (2.000239) ExternalFunctionSet.cpp:371: Assert

我的算法(并行多前沿高斯消除)需要在CUDA内核中动态分配内存(树构建)。有人知道gpuocelot是否支持这些东西吗

根据这个:和CUDA编程指南我可以做这样的事情。但是使用gpuocelot,我会在运行时出错

错误:

  • 当我在内核内部调用
    malloc()
    时,我得到以下错误:
    (2.000239)ExternalFunctionSet.cpp:371:断言消息:需要LLVM才能从PTX调用外部主机函数。 (2.000239) ExternalFunctionSet.cpp:371: Assertion message: LLVM required to call external host functions from PTX. solver: ocelot/ir/implementation/ExternalFunctionSet.cpp:371: void ir::ExternalFunctionSet::ExternalFunction::call(void*, const ir::PTXKernel::Prototype&): Assertion false' failed. 解算器:ocelot/ir/implementation/ExternalFunctionSet.cpp:371:void ir::ExternalFunctionSet::ExternalFunction::call(void*,const ir::PTXKernel::Prototype&):断言false“失败”
  • 当我尝试获取或设置malloc堆大小(主机代码内部)时:
    解算器:ocelot/cuda/implementation/CudaRuntimeInterface.cpp:811:virtual-cudaError\u t cuda::CudaRuntimeInterface::cudaDeviceGetLimit(size\u t*,cudaLimit):断言“0&&unimplemented”失败
  • 也许我必须(以某种方式)指向编译器,我想使用device
    malloc()


    有什么建议吗?

    您可以在gpu ocelot邮件列表中找到答案:


    我确信emulator已经加入了
    malloc
    free
    printf
    支持,但我对LLVM后端不是很确定。你真的应该在Ocelot邮件列表上问这个问题。这根本不是CUDA的问题,我很想去掉CUDA标签。 solver: ocelot/cuda/implementation/CudaRuntimeInterface.cpp:811: virtual cudaError_t cuda::CudaRuntimeInterface::cudaDeviceGetLimit(size_t*, cudaLimit): Assertion `0 && "unimplemented"' failed.