XcalableMP / Specification

Specification of XcalableMP
0 stars 0 forks source link

XMP/CにおけるAtomic subroutinesについて #41

Open mnakao opened 8 years ago

mnakao commented 8 years ago

Fortran 2008における下記の2つのサブルーチンをXMP/Cに適用させる。 このサブルーチンを使ったサンプルは下記の通り。

call atomic_define(atom, value) defines atom atomically with the value of value.
call atomic_ref(value, atom)       defines value atomically with the value of atom.

atomic

#include <xmp.h>
void xmp_atomic_define(int atom, int value);
void xmp_atomic_ref(int *value, int atom);
mnakao commented 8 years ago

XMP/Cでは指示文にする。次回までに要検討。例えば、下記のような感じ?

int locked[*] = true;
int p, q, val;
  :
if(xmp_node_num() == p){
  xmp_sync_memory();
#pragma xmp atomic
  locked:[q] = false;  // call atomic_define()に相当
}
else if(xmp_node_num() == q){
  val = true;
  while(val){
#pragma xmp atomic
  val = locked;  // call atomic_ref()に相当
  }
  xmp_sync_memory();
}