Каковы различия между «положением» и «хранением» в многораздельных языках глобального адресного пространства (PGAS), таких как UPC? - PullRequest
0 голосов
/ 08 января 2019

Я новичок в области параллельного программирования и разных моделей. Мне было интересно, в чем разница между операциями типа «положить» и «сохранить» в языках, которые следуют модели PGAS. Кроме того, было бы очень полезно для меня, если бы вы могли направить меня к любым соответствующим ресурсам. Те, которые я просматривал, не отвечают на все мои вопросы.

1 Ответ

0 голосов
/ 10 января 2019

В модели PGAS операция «put» обычно перемещает данные из памяти с привязкой к вызывающей стороне (или локальной памятью) в общую память (возможно, с привязкой к удаленному узлу). Операция «get» перемещает данные в противоположном направлении; возможно от удаленной общей памяти до локальной памяти. Вместе эти операции также упоминаются под зонтиком удаленного доступа к памяти (RMA).

Существует множество механизмов для синхронизации завершения операций PGAS RMA (т. Е. Выяснение, когда операция «выполнена», для некоторого соответствующего определения «выполнено»); они варьируются от «полной блокировки» (т. е. вызов внедрения RMA останавливает инициирующий поток до тех пор, пока он «не завершится»), до различных механизмов для синхронизации неблокирующих операций RMA (которые позволяют перекрывать несвязанную работу). Предполагая «одностороннюю» модель PGAS, они обычно имеют свойство, заключающееся в том, что завершение операции выполняется действием или сигналом вызывающей стороне (начальный ранг).

Термин «хранилище» - это , а не , используемый нормативным образом либо UPC , либо GASNet (помеченные модели). Другие модели PGAS могут иметь определенные значения для «магазина». В частности, Split-C имел операцию «хранилище сигналов» с семантикой перемещения данных «положено», но отличается тем, что завершение сигнализируется рангу (возможно, удаленному) со сродством к целевой памяти вместо начального ранга.

...