Моя группа (проект Isis2) экспериментирует с RDMA. Мы озадачены отсутствием документации по гарантиям на атомарность односторонних считываний RDMA. Я потратил полтора часа на охоту за какой-либо информацией вообще на этом безрезультатно. Это включает в себя тесное чтение блога на rdmamojo.com, известное тем, что у вас есть ответы на каждый вопрос RDMA ...Являются ли односторонние RDMA атомами для одиночных строк кеша?
В случае, когда мы сосредоточены, мы хотим, чтобы авторы делали атомарную запись для объектов, которые всегда будут вписываться в одна строка кеша. Скажем, это происходит на машине A. Тогда мы планируем иметь односторонний атомный RDMA-ридер на машине B, который мог бы считывать фрагменты памяти из A, охватывая многие из этих объектов (но опять же, ни один объект никогда не был бы написан неатомно , и все будет вписываться в одну строку кеша). Таким образом, B считывает X, Y и Z, и каждый из этих объектов живет в одной строке кэша на A и записывается с помощью атомной записи.
Таким образом, атомные записи будут локальными, но считываемые RDMA будут поступать с удаленных компьютеров и выполняться без участия локального ЦП.
Наши односторонние читают «семантически эквивалентные» атомные локальные чтения, несмотря на то, что они инициируются на удаленной машине? (Я подозреваю, что: в противном случае односторонние чтения RDMA будут бесполезны для данных, которые когда-либо были изменены ...). И где зафиксированы «правила»?
В лучшем случае, похоже, это реализация [специфическая] (http://stackoverflow.com/a/28804076/3288910). – Jason