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