cudamalloc会引发任何内核调用吗?

时间:2013-11-29 07:48:16

标签: cuda linux-kernel linux-device-driver

我正在阅读HSA规范,它说用户模式应用程序可以直接将其作业提交到GPU队列,而无需任何操作系统交互。我认为这必须是因为应用程序可以直接与GPU驱动程序通信,因此不需要招致任何操作系统内核调用。

所以我的问题是,对于一个非常简单的例子,在CUDA应用程序中,当我们创建一个cudaMalloc()时,是否会引发任何OS内核调用?

1 个答案:

答案 0 :(得分:1)

这个问题的整个前提是有缺陷的。 “提交工作”和分配内存不是一回事。即使在调用malloc的主机CPU上运行的用户空间进程(大多数情况下)也会导致内核调用,因为标准库通常会通过sbrk或{{1 }}

所以是的,mmap导致操作系统内核调用 - 如果你运行strace,你会看到GPU驱动程序调用{​​{1}}向GPU MMU / TLB发出命令。但在主机代码中运行cudaMalloc也是如此,因此,毫无疑问,它也会在理论上的HSA平台上运行malloc。