Co-array Fortran
提供: miniwiki
2013/3/20/ (水) 13:35時点におけるja>EmausBotによる版 (ボット: 言語間リンク 2 件をウィキデータ上の (d:Q1104016 に転記))
Coarray Fortran | |
---|---|
パラダイム | 並列・メッセージパッシング・手続き型・構造化・命令型・オブジェクト指向 |
設計者 | Robert Numrich and John Reid |
開発者 | PL22.3 Fortran Committee |
最新リリース | Fortran 2008 (ISO/IEC 1539-1:2010) |
型付け | 強い静的型付け |
主な処理系 | Cray, GFortran, G95 |
影響を受けた言語 | Fortran |
プラットフォーム | クロスプラットフォーム |
ウェブサイト | Co-array Fortran web site |
Co-array FortranはFortran 95/2003を並列化を目的として拡張した言語である。以前はF--としても知られ、Robert NumrichとJohn Reidによって開発された。
Co-array Fortranで記述されたプログラムではすべてのスレッドが非同期的に実行されるように扱われる。それぞれのスレッドはイメージと呼ばれる自身のデータオブジェクトを持つ。また、Fortran 95での配列の構文が角括弧と添字を用いてイメージを指定できるように拡張されている。
ISOは2005年5月に次のFortranの標準規格(Fortran 2008)に対してCo-array Fortranを採用することを決定した。
最初にLinuxアーキテクチャにおいてFortran 2008のCo-array Fortranに対応したオープンソースコンパイラはG95である。他にもCrayなどいくつかの商用コンパイラは以前からCo-array Fortranをサポートしている。
例
program Hello_World
implicit none
integer :: i ! Local variable
character(len=20) :: name[*] ! scalar coarray
! 注意: "name[<index>]" はリモートのイメージ上の変数への
! アクセスであるのに対し "name" はローカル変数である
! イメージ1上のユーザーから名前の入力を受ける
if (this_image() == 1) then
write(*,'(a)',advance='no') 'Enter your name: '
read(*,'(a)') name
! 他のイメージに名前の内容を分配する。
do i = 2, num_images()
name[i] = name
end do
end if
sync all ! 確実に同期をとるために[[バリア]]を設ける
! すべてノードで名前を表示する
write(*,'(3a,i0)') 'Hello ',trim(name),' from image ', this_image()
end program Hello_world
関連項目
- Unified Parallel C — C言語を拡張した並列プログラミング言語
- 並列コンピューティング
- 区分化大域アドレス空間