Cudamaloc是如何在Ubuntu Linux下内部实现的?

Cudamaloc是如何在Ubuntu Linux下内部实现的?,cuda,Cuda,我想知道CUDA内存空间的分配是如何在Ubuntu Linux下实现的。换句话说,在Ubuntu Linux下,cudamaloc()如何在内部工作?此函数使用的系统调用是什么?CUDA是专有的。CUDA驱动程序实现可能与OpenCL相同或相似。 但是,虽然OpenCL规范是开放的,但实现是不必要的,NVIDIA OpenCL驱动程序也不是开放的 实现可能很简单,只要驱动程序提交一个完全在硬件端处理的malloc命令,内核驱动程序与系统通信,以实现统一的虚拟寻址,并确定VRAM中驻留的内存。软件

我想知道CUDA内存空间的分配是如何在Ubuntu Linux下实现的。换句话说,在Ubuntu Linux下,
cudamaloc()
如何在内部工作?此函数使用的系统调用是什么?

CUDA是专有的。CUDA驱动程序实现可能与OpenCL相同或相似。 但是,虽然OpenCL规范是开放的,但实现是不必要的,NVIDIA OpenCL驱动程序也不是开放的

实现可能很简单,只要驱动程序提交一个完全在硬件端处理的malloc命令,内核驱动程序与系统通信,以实现统一的虚拟寻址,并确定VRAM中驻留的内存。软件方面的技术部分可能是避免分配或推迟分配


调查可以让你了解事情的发展情况。NVIDIA的实现可能会有很大的不同。

据我所知,实现
cudamaloc
的代码尚未发布。我一点也不知道,但我不知道为什么人们会因为你的要求而投票反对你。这是一个真正的黑客(从本质上讲是一个程序员)问题:)我相信CUDA是封闭源代码的,所以不会知道它的实现。也许可以看看OpenCL?它是CUDA的开源替代品,看看它的malloc实现可能会给你一些好信息。@Nathan:OpenCL开源如何?请告诉我OpenCL的供应商驱动程序源代码?@Nathan:这里有一个提示-OpenCL不是开源的。它由一个“开放的”多供应商支持的标准定义,由维护一组标准头文件的Khronos管理。但我知道的每个实现都是私有的。可能有一些开源的东西在使用,比如LLVM,但API的驱动程序和硬件级实现是完全封闭的。