Есть гарантии, что Torch не испортит уже выделенный массив CUDA? - PullRequest
1 голос
/ 09 марта 2020

Предположим, что мы выделили некоторый массив на нашем графическом процессоре с помощью других средств, кроме PyTorch , например, создав массив GPU с помощью numba.cuda.device_array. Будет ли PyTorch при выделении более поздней памяти GPU для некоторых тензоров случайно перезаписывать пространство памяти, которое используется для нашего первого массива CUDA? В общем, поскольку PyTorch и Numba используют одну и ту же среду выполнения CUDA, и, таким образом, я предполагаю один и тот же механизм управления памятью, они автоматически распознают области памяти, используемые другими программами CUDA, или каждая из них видит всю память GPU как свою собственную? Если это последнее, есть ли способ сообщить им о распределении другими программами CUDA?

РЕДАКТИРОВАТЬ: полагал, что это было бы важным предположением: предположим, что все выделения выполняются одним и тем же процессом.

1 Ответ

3 голосов
/ 09 марта 2020

Будет ли PyTorch при выделении более поздней памяти GPU для некоторых тензоров случайно перезаписывать пространство памяти, используемое для нашего первого массива CUDA?

Нет.

они автоматически осведомлены об областях памяти, используемых другими программами CUDA ...

Они не "осведомлены", но каждый процесс получает свой собственный отдельный контекст ...

... или каждый из них видит всю память GPU как свою собственную?

.... и контексты имеют свои собственные адресные пространства и изоляцию. Так что нет, но нет риска повреждения памяти.

Если это последнее, есть ли способ сообщить им о распределении другими программами CUDA?

Если под «осознанным» вы подразумеваете «безопасный», то это происходит автоматически. Если под «осознанием» подразумевается какая-то функциональная совместимость, то это возможно на некоторых платформах, но это не является автоматическим c.

... предполагается, что все распределения выполняются одним и тем же процесс.

Это другая ситуация. В общем, один и тот же процесс подразумевает общий контекст, а общие контексты совместно используют пространство памяти, но применяются все обычные правила и средства защиты адресного пространства, поэтому нет риска потери безопасности.

...