问题1)
当我调用CUDA驱动程序API时,通常我需要先将上下文(代表GPU运行时)推送到当前线程。对于普通cuMalloc
,内存将在上下文指定的GPU上分配。但是,如果我尝试调用cuMallocManaged
来创建统一内存,我还需要推送GPU上下文吗?
问题2)
假设我有2个GPU,每个GPU有1 GB DRAM。那么我可以分配2 GB的统一内存吗?每个GPU拥有一半吗?
答案 0 :(得分:3)
遵循既定的驱动程序API编程方法。明确建立CUDA背景。
不,这不是托管内存的工作原理。托管分配完全可见于系统中的所有GPU。无论我们是在讨论pre-pascal UM制度还是纯粹的pascal UM制度,这都是正确的,尽管具体的可见性方法各不相同。请参阅UM with multi-GPU上的编程指南部分。