2015-01-18 10 views
2

Например, я могу использовать атомарные операции 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?

+4

Если GPU, который выполняет атомную операцию, является единственным процессором, который обращается к памяти, то атомарные операции на удаленном месте могут быть * видны * правильно графическим процессором. Если другие процессоры обращаются к местоположению, нет. Не было бы никакой гарантии согласованности значений между несколькими процессорами. – Farzad

+0

@Farzad Спасибо! Это связано с тем, что P2P работает по не кеш-когерентной шине PCI Express? – Alex

+1

Главной проблемой здесь является то, что AFAIK, GPU сохраняет атомарность в кэше L2, поэтому любые транзакции из потоков GPU во внешний мир (глобальная память GPU, память хоста, память однорангового узла ...) воспринимаются атомами GPU. Если положение атома управляется по любой другой причине, как и другой графический процессор, кэш L2 не знает об этом, поэтому атомная операция прерывается. – Farzad

ответ

2

№ п. Атомные устройства GPU являются только атомарными через GPU, выполняющие операцию. Они не работают с памятью хоста или нелокальной памятью устройства.

Я уверен, что это ключевой элемент для NVIDIA для решения этих ограничений на будущих платформах, особенно. с NVLink.

+0

Существует также дополнительная поддержка некоторых атомных операций на шине PCIe 3, они могут быть устройствами для устройств с современными мостами. http://www.csit-sun.pub.ro/~cpop/Documentatie_SMP/Standarde_magistrale/PCIexpress/PCIe3_Accelerator-Features_WP.pdf - «Атомные операции чтения-изменения-записи: ... IO-> IO" – osgx