Например, я могу использовать атомарные операции CUDA atomicAdd(ptr, val)
, atomicCAS(ptr, old, new)
, ... в своей глобальной памяти (GPU-RAM). С CUDA 6.5.Могу ли я использовать в атомных операциях CUDA на удаленном GPU-RAM через GPUDirect 2.0 P2P?
Но могу ли я использовать эти atomic-operations для удаленной глобальной памяти более GPUDirect 2.0 P2P?
Если GPU, который выполняет атомную операцию, является единственным процессором, который обращается к памяти, то атомарные операции на удаленном месте могут быть * видны * правильно графическим процессором. Если другие процессоры обращаются к местоположению, нет. Не было бы никакой гарантии согласованности значений между несколькими процессорами. – Farzad
@Farzad Спасибо! Это связано с тем, что P2P работает по не кеш-когерентной шине PCI Express? – Alex
Главной проблемой здесь является то, что AFAIK, GPU сохраняет атомарность в кэше L2, поэтому любые транзакции из потоков GPU во внешний мир (глобальная память GPU, память хоста, память однорангового узла ...) воспринимаются атомами GPU. Если положение атома управляется по любой другой причине, как и другой графический процессор, кэш L2 не знает об этом, поэтому атомная операция прерывается. – Farzad