"put" 和 "store" 在分区全局地址 Space 语言 (PGAS)(如 UPC)中有什么区别?

What are the differences between "put" and "store" in Partitioned Global Address Space Languages (PGAS) like UPC?

我是并行编程和不同模型领域的新手。 我想知道在遵循 PGAS 模型的语言中,"put" 和 "store" 等操作之间有什么区别。另外,如果您能指导我找到任何合适的资源,那将对我非常有帮助。我一直在审查的那些并没有回答我所有的问题。

在 PGAS 模型中,"put" 操作通常将数据从与调用者具有亲缘关系的内存(也称为本地内存)移动到共享内存(可能与远程对等方具有亲缘关系)。 "get" 操作向相反方向移动数据;从可能的远程共享内存到本地内存。这些操作也统称为远程内存访问 (RMA)。

有多种同步 PGAS RMA 操作完成的机制(即找出操作何时为 "done",对于 "done" 的一些适当定义);这些范围从 "fully blocking"(即 RMA 注入调用停止启动线程直到它是 "done"),到用于同步非阻塞 RMA 操作的各种机制(允许不相关工作的重叠)。假设一个 "one-sided" PGAS 模型,这些通常共享 属性 操作的完成是通过调用者(发起等级)的动作或信号来完成的。

术语 "store" 不是 以规范方式使用 UPC or GASNet (the tagged models). Other PGAS models may have specific meanings for "store". In particular, Split-C 有一个 "signalling store" 数据移动语义的操作"put" 但不同之处在于,完成是通过与目标内存的亲和力向(可能是远程的)等级发出信号的, 而不是 初始等级。