是否保证Torch不会弄乱已经分配的CUDA数组?

问题描述 投票:0回答:1

假设我们在GPU上分配了一些数组通过PyTorch以外的其他方式,例如,使用numba.cuda.device_array创建一个GPU数组。当为某些张量分配更高的GPU内存时,PyTorch是否会意外覆盖用于我们的第一个CUDA阵列的内存空间?通常,由于PyTorch和Numba使用相同的CUDA运行时,因此我假设使用相同的内存管理机制,它们是否自动知道其他CUDA程序使用的内存区域,或者它们中的每一个都将整个GPU内存视为自己的?如果是后者,是否有办法让他们知道其他CUDA程序的分配?

编辑:认为这将是一个重要的假设:假定所有分配均由同一过程完成。

cuda pytorch torch numba
1个回答
0
投票

PyTorch将为某些张量分配更高的GPU内存时,会意外覆盖用于我们的第一个CUDA数组的内存空间吗?

编号

他们是否自动知道其他CUDA程序使用的内存区域...

它们不是“感知”的,但是每个进程都有自己独立的上下文...

...还是每个人都将整个GPU内存视为自己的?

....和上下文具有它们自己的地址空间和隔离。因此没有,但是没有内存损坏的风险。

如果是后者,是否有办法让他们知道其他CUDA程序的分配?

如果用“意识”来表示“安全”,那将自动发生。如果通过“意识到”暗示某种互操作性,那么在某些平台上是可能的,但这不是自动的。

...假定所有分配均由同一过程完成。

这是另一种情况。通常,相同的过程意味着共享的上下文,并且共享的上下文共享一个内存空间,但是所有常规地址空间保护规则和功能都适用,因此不存在失去安全性的风险。

© www.soinside.com 2019 - 2024. All rights reserved.