JP6511937B2 - 並列計算機システム、演算方法、演算プログラム、及び情報処理装置 - Google Patents

並列計算機システム、演算方法、演算プログラム、及び情報処理装置 Download PDF

Info

Publication number
JP6511937B2
JP6511937B2 JP2015089245A JP2015089245A JP6511937B2 JP 6511937 B2 JP6511937 B2 JP 6511937B2 JP 2015089245 A JP2015089245 A JP 2015089245A JP 2015089245 A JP2015089245 A JP 2015089245A JP 6511937 B2 JP6511937 B2 JP 6511937B2
Authority
JP
Japan
Prior art keywords
elements
predetermined number
communication
processing
fft
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2015089245A
Other languages
English (en)
Other versions
JP2016207010A (ja
Inventor
徹三 臼井
徹三 臼井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2015089245A priority Critical patent/JP6511937B2/ja
Priority to US15/096,689 priority patent/US10409761B2/en
Publication of JP2016207010A publication Critical patent/JP2016207010A/ja
Application granted granted Critical
Publication of JP6511937B2 publication Critical patent/JP6511937B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/161Computing infrastructure, e.g. computer clusters, blade chassis or hardware partitioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/141Discrete Fourier transforms
    • G06F17/142Fast Fourier transforms, e.g. using a Cooley-Tukey type algorithm

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Discrete Mathematics (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Multi Processors (AREA)
  • Complex Calculations (AREA)

Description

本発明は、並列分散処理に関する。
高速フーリエ変換(Fast Fourier Transform。以下、FFTと呼ぶ)は離散フーリエ変換を高速で実行する技術であり、3次元FFTは様々な物理的問題の解析に利用される重要な計算技術である。スーパーコンピュータ等の並列計算機システムの高性能化に伴い、3次元FFTを高速で行う技術に注目が集まっている。
近年の並列計算機システムにおいては、性能を向上させるため多数のCPU(Central Processing Unit)が並列で動作しており、各CPU上のプロセスが数値データを他のプロセスと交換しながら処理を進めることで全体的な処理を完成させる。3次元FFTを並列計算機システムに実行させる場合には、計算の対象となる3次元の配列(例えばユーザにより指定されたデータであり、グローバル配列と呼ばれる)を分割し、分割によって生成されたローカル配列を各プロセスに割り当てる。代表的な分割方法として、1軸分散(板状分割とも呼ばれる)、2軸分散(柱状分割とも呼ばれる)、及び3軸分散が知られている。
グローバル配列の分割には制約が存在する。例えば、各軸方向の要素数は、離散フーリエ変換のアルゴリズムの都合上2,3,5,或いは7程度の比較的小さな素因数に分解できることが好ましい。また、各軸方向において要素数をプロセス数で割り切れることが好ましい。そこで従来技術においては、例えば、各軸方向の要素数及びプロセス数が2の冪に設定される。しかし、要素数やプロセス数を2の冪ではない数に設定すべきケースが存在し、またデータ型が複素数型でなく実数型である場合には第1次元の要素数が2の冪にならない。そのため、要素数及びプロセス数が2の冪だけに制限されることは好ましくない。
また、科学技術計算で用いられる離散点の数は多様化しており、並列計算機システムも複雑化しているため、上記のような設定を採用すると一部のCPUが使用されなくなるといった事態が生じることがある。
一方で、分割に関する制約を緩和する(すなわち、多様な要素数及びプロセス数を許容する)と、各プロセスが持つ要素数を等しくすることができないケースがしばしば発生する。特に上述の2軸分散及び3軸分散においては、計算の途中で各プロセスが持つ要素数が変化することが原因で、要素の配置を元に戻すためのデータ通信が発生する。3次元FFTの並列分散処理の場合、プロセス間のデータ通信に要する時間が全体の処理時間に占める割合が大きく、データ通信量の増加は並列分散処理の性能劣化をもたらす。
従来技術においては、このような問題には着目されていない。
特開2000−200261号公報 特開2004−348493号公報
M. Eleftheriou, B.G. Fitch, A. Rayshubskiy, T.J.C. Ward, R.S. Germain,"Scalable framework for 3D FFTs on the Blue Gene/L supercomputer: implementation and early performance measurements", IBM Journal of Research and Development, IBM, 2005, 49, 457-464 M. Eleftheriou, B.G. Fitch, A. Rayshubskiy, T.J.C. Ward, R.S. Germain, "Performance measurements of the 3d FFT on the Blue Gene/L supercomputer", Euro-Par 2005 Parallel Processing, Springer, 2005, 795-803 Roland Schulz, "3D FFT with 2D decomposition", CS project report, 2008, [平成27年3月30日検索], インターネット Ning Li, Sylvain Laizet, "2DECOMP & FFT-A Highly Scalable 2D Decomposition Library and FFT Interface", Cray User Group 2010 conference, 2010, 1-13, [平成27年3月30日検索], インターネット Daisuke Takahashi, "FFTE: A Fast Fourier Transform Package", [平成27年3月30日検索], インターネット T.V.T. Duy, T. Ozaki, "A decomposition method with minimum communication amount for parallelization of multi-dimensional FFTs", CoRR abs/1302.6189, 2013, [平成27年3月30日検索], インターネット "OpenFFT An open Source Parallel Package for 3-D FFTs", [平成27年3月30日検索], インターネット
本発明の目的は、1つの側面では、並列計算機システムが3次元配列に対する3次元FFTを実行する場合において、3次元配列の分割に関する制約の緩和と性能の向上とを両立するための技術を提供することである。
本発明に係る並列計算機システムは、配列の要素に対する演算を並列で実行する複数の処理装置を有する。そして、複数の処理装置の各々が、当該処理装置に配置された要素のうち第1の所定数の要素に対して、第1の軸方向の演算を実行し、演算後の第1の所定数の要素を当該処理装置の記憶装置に保存し、複数の処理装置のうち少なくとも一部の処理装置が、複数の処理装置の各々から、第1の所定数の要素以外の要素を取得し、取得した要素に対して第1の軸方向の演算を実行し、複数の処理装置の各々に、演算後の要素を第2の所定数ずつ配置する処理を実行する。
1つの側面では、並列計算機システムが3次元配列に対する3次元FFTを実行する場合において、3次元配列の分割に関する制約の緩和と性能の向上とを両立できるようになる。
図1は、1軸分散の一例を示す図である。 図2は、各プロセスが持つローカル配列のサイズを示す図である。 図3は、2軸分散の一例を示す図である。 図4は、2軸分散の一例を示す図である。 図5は、2軸分散の一例を示す図である。 図6は、各プロセスが持つローカル配列のサイズを示す図である。 図7は、3軸分散の一例を示す図である。 図8は、配列の割り当ての一例を示す図である。 図9は、配列の割り当ての一例を示す図である。 図10は、直接網とグローバル配列との関係を示す図である。 図11は、全対全通信の通信量とメッセージサイズとの関係を示す図である。 図12は、本実施の形態の概要について説明するための図である。 図13は、本実施の形態の概要について説明するための図である。 図14は、本実施の形態の概要について説明するための図である。 図15は、本実施の形態の概要について説明するための図である。 図16は、本実施の形態における並列計算機システムの一例を示す図である。 図17は、各軸方向におけるプロセスの数を示す図である。 図18は、正変換のFFTの処理フローを示す図である。 図19は、要素の配置の一例を示す図である。 図20は、要素の配置の一例を示す図である。 図21は、正変換のFFTの処理フローを示す図である。 図22は、要素の配置の一例を示す図である。 図23は、要素の配置の一例を示す図である。 図24は、要素の配置の一例を示す図である。 図25は、正変換のFFTの処理フローを示す図である。 図26は、要素の配置の一例を示す図である。 図27は、要素の配置の一例を示す図である。 図28は、要素の配置の一例を示す図である。 図29は、逆変換のFFTの処理フローを示す図である。 図30は、逆変換のFFTの処理フローを示す図である。 図31は、逆変換のFFTの処理フローを示す図である。 図32は、本実施の形態の効果について説明するための図である。
[グローバル配列の分割]
まず、グローバル配列の分割に関する基本的な事項を説明する。以下では、3次元FFTの対象であるグローバル配列のX方向の要素数をN1、Y方向の要素数をN2、Z方向の要素数をN3とする。X方向のプロセス数(すなわち分割数)をND1、Y方向のプロセス数をND2、Z方向のプロセス数をND3とする。グローバル配列を分割することで得られるローカル配列のX方向の要素数をNP1、Y方向の要素数をNP2、Z方向の要素数をNP3とする。また、自然数NをPで割ったときの余りがゼロであることを、mod(N,P)=0と表す。
3次元FFTにおいては、X方向のFFT、Y方向のFFT、及びZ方向のFFTが行われる。通常、各軸方向のFFTを行う場合には、その軸方向のデータをプロセス間の通信によって一旦特定のプロセスに配置し、その特定のプロセスがその軸方向のFFTを実行する。以下では、X方向のFFTを実行するためのデータをX方向データと呼び、Y方向のFFTを実行するためのデータをY方向データと呼び、Z方向のFFTを実行するためのデータをZ方向データと呼ぶ。
第1に、1軸分散について説明する。図1に、1軸分散の一例を示す。図1においては、グローバル配列1001に対して3次元FFTが実行される。グローバル配列内の立方体は要素を表す。グローバル配列1001は、板状のローカル配列1002乃至1005に分割される。プロセス0がローカル配列1002を担当し、プロセス1がローカル配列1003を担当し、プロセス2がローカル配列1004を担当し、プロセス3がローカル配列1005を担当する。ローカル配列1002乃至1005の各々はY方向データ及びZ方向データを持つ。従って、ローカル配列1002乃至1005の各々に対して、1回目の1次元FFTがY方向において行われ、次に2回目の1次元FFTがZ方向において行われる。
グローバル配列1001はX方向に垂直な面によって分割されているので、X方向データが複数のプロセスに分散されている。そこで、全対全通信(all-to-all communication)を実行し、各プロセスがX方向データを持つようにする。そして、3回目の1次元FFTがX方向において行われる。
その後、既に行われた全対全通信とは逆方向の全対全通信を実行すれば、データの配置を元に戻すことができる。Y方向データ及びZ方向データが分散して配置された状態を許容することができる場合には、通信を省略することができる。但し、その場合にはY方向の要素数及びZ方向の要素数がプロセス数で割り切れることを前提とすることが多い。
1次元の分割においては、グローバル配列のサイズがN3である場合にはプロセス数がN以上であってもデータをN以上に分割できないため、プロセス数の増加による性能向上を見込めない。実際には、Nの大きさは数千以下であることが一般的であるが、近年の大規模なスーパーコンピュータは数万プロセスが動作する。さらに、直接網ネットワークとの適合性及びメッセージ長が性能にもたらす影響を考慮すると、1軸分散より多軸分散の方が好ましいと考えられる。
一例として、10×9×8のグローバル配列をZ方向に垂直な面で分割することを考える。まず、Z方向のプロセス数が8よりも多い場合、N3=8であるので分割することができない。例えば、プロセス数が4である場合には分割することできる。しかし、データを再配置してX方向に分割したデータを出力する場合に、N1=10を4で割り切ることができないことが原因で、データの取り扱いが難しくなる。これはY方向についても同様である。図2に、MPI(Message Passing Interface)におけるalltoallvの通信の前後に各プロセスが持つローカル配列のサイズを示す。図2の例においてプロセス数は4である。Z方向分割とは、Z方向に垂直な面での分割であり、X方向分割とはX方向に垂直な面での分割である。Z方向分割の場合、各プロセスが持つローカル配列のサイズは同じである。しかしながら、X方向分割の場合には、各プロセスが持つローカル配列のサイズは同じではない。具体的には、プロセス3が持つローカル配列のサイズが他のプロセスが持つローカル配列のサイズより小さい。
ローカル配列のサイズが不均一になることは、負荷が不均一になり並列化で性能向上を図ることができなくなるという点で好ましくない。また、どれだけ要素数が増える可能性があるかをユーザが事前に見積もったうえで、作業用領域の配列(或いは、出力用の別配列)を用意することになる。これは、汎用的で使いやすいインタフェースのルーチンを設計するという点で好ましくない。なお、FFT関連の機能においては入力配列と出力配列とを兼用する(すなわち、In-place処理が採用される)ことが多い。しかし、ローカル配列のサイズが不均一になる場合にもIn-place処理を実現する場合には、データの配置を元に戻すための通信を行うことになる。
第2に、2軸分散について説明する。2軸分散においては、例えば図3に示すように、グローバル配列が柱状のローカル配列に分割される。図3においては、同じプロセスが持つ要素には同じ色が付けられている。まず、各ローカル配列に対してX方向のFFTが実行される。次に、XY平面上のプロセスの間で全対全通信を実行することで、図4に示すようにデータの割り当てが変更される。そして、各ローカル配列に対してY方向のFFTが実行される。次に、YZ平面上のプロセスの間で全対全通信を実行することで、図5に示すようにデータの割り当てが変更される。そして、各ローカル配列に対してZ方向のFFTが実行される。
この場合、入力されたデータがX方向の柱状に分割されていたのに対し、出力されるデータはZ方向の柱状に分割されることになる。従って、出力されるデータもX方向の柱状に分割されていることが好ましい場合には、データの配置を変更するための通信を行うことになる。
図6に、2軸分散の場合に各プロセスが持つローカル配列のサイズを示す。図6の例は、10×9×8のグローバル配列を3×4のプロセスグリッドで分割する例である。図6においては、X方向の柱については、各プロセスのローカル配列のサイズは同じであるが、Y方向及びZ方向の柱については、各プロセスのローカル配列のサイズは同じではない。このように配列のサイズが異なると、例えば汎用的なソフトウエアを提供しようとする場合に技術的に大きな問題となる。特に、入力データのデータ型が複素数型ではなく実数型である場合、第1次元の出力要素数がN1(実数)からN1/2+1(複素数)に変わるため、分割の数に関する強い制約になる。例えばN1=8192である場合、出力要素数は第1次元の方向において複素数で4097であるので、プロセス数は素因数である17又は241に限定される。以上のような事情から、2軸分散においては以下のような制約を満たすことを前提とする場合がある。
mod(N2,ND2)=0
mod(N3,ND3)=0
mod(N1,ND2)=0
mod(N2,ND3)=0
第3に、3軸分散について説明する。図7に、3軸分散の一例を示す。図7に示すように、3軸分散においてはX方向、Y方向、及びZ軸方向のいずれについても分割が行われる。プロセス0乃至7の各々には、直方体又は立方体の形状のローカル配列が割り当てられる。
各軸方向で行われるFFTは基本的には同じであるため、ここではZ方向を例にして説明する。Z方向プロセスグループのみを考えた場合、3軸分散におけるZ方向のFFTは1軸分散におけるZ方向のFFTに相当する。Z方向プロセスグループとは、Z方向に並んだプロセスのことであり、図7の例では、プロセス0とプロセス4が同じZ方向プロセスグループに属し、プロセス1とプロセス5が同じZ方向プロセスグループに属し、プロセス2とプロセス6が同じZ方向プロセスグループに属し、プロセス3とプロセス7が同じZ方向プロセスグループに属する。
しかし、或るZ方向プロセスグループについてのY方向の要素数N2PをND3で割り切ることができない場合、図2に示したように、ローカル配列のサイズが不均一になる。そこで、例えば、Z方向のFFT多重度(=N1P×N2P=(N1/ND1)×(N2/ND2))をZ方向プロセスグループに属するプロセスに分配するという方式が採用される。その場合にもローカル配列のサイズが不均一になる可能性があるため、mod(Ni,NDi)=0、i=1,2,3の条件に加え、以下の3つの条件が課される。
mod(N1P×N2P,ND3)=0
mod(N2P×N3P,ND1)=0
mod(N3P×N1P,ND2)=0
このような条件が満されてない場合、ローカル配列のサイズが不均一になる。例えば、図8に示すグローバル配列に対してプロセス0乃至9がZ方向のFFTを実行することを考える。グローバル配列のサイズは8×8×10であるとする。Z方向のFFTを実行するため全対全通信を実行しデータを並び替えると、例えば図9のようになる。図9においては、各プロセスがZ方向データを持つようになっているが、Z軸方向のFFT多重度8×8=64を10で割り切ることができないため、プロセス9が持つ要素数が他のプロセスが持つ要素数より少なくなっている。具体的には、プロセス0乃至8が持つ要素数は70であり、プロセス9が持つ要素数は10である。このような配置を元に戻すためには、全対全通信を再度行うことになる。そのため、X方向、Y方向、及びZ方向のいずれについても要素を等分配できない場合には、合計6回の全対全通信を行うことになる。従って、3軸分散の場合は1軸分散及び2軸分散の場合と比較して、通信量が多くなる傾向がある。
なお、3軸分散においてX方向やY方向の分割数を1とみなすことで、上述の方法とは異なる1軸分散及び2軸分散を行うことも可能である。これらの方法は3軸分散の特殊ケースであるので、分割に関する制約及び通信量の特徴は3軸分散で説明した内容と基本的に同じである。上述の1軸分散及び2軸分散と比較すると、要素数の不均一の程度を小さくすることができる一方、配置を元に戻すための通信を省略することが難しい。
なお、ネットワークの形状に合わせてデータを分散することができるため、特に直接網の場合に多軸分散方式にメリットが有る。一例として、図10に、スーパーコンピュータ「京」のネットワーク(以下、このネットワークのトポロジを「6次元メッシュ/トーラス」と呼ぶ)とグローバル配列との関係を示す。図10においては、6次元形状がXYZabcで表される。例えば12×16の2次元形状が指定された場合、Xab=2×2×3を第1次元に割り当て、YZc=2×4×2を第2次元に割り当てることができる。
但し、間接網である場合に必ずしも多軸分散が有効でないわけではない。上で述べたとおり1軸分散の場合には一辺の要素数以上のプロセスを使用することはできない。また、図11に示すように、1軸分散では全対全通信におけるメッセージ長が短くなるため、通信効率が低下する。図11において、縦軸は全対全通信の通信効率(各ノードの単位時間当たりの通信量)を表し、横軸はメッセージのサイズを示す。この例では、8×4×8のTofuインターコネクトの通信量と、8×4×8のInfiniBand QDR(Quad Data Rate)の通信量とが、いずれも、メッセージサイズが小さいほど少なく、メッセージサイズが大きいほど多い。すなわち、メッセージ長が短くなるほど通信効率が低下する。
よって、多軸分散にすることによってプロセス間の通信量が増えたとしても、それを上回る程度に通信効率を改善できる場合には、間接網であっても多軸分散が有効な方法となり得る。
[本実施の形態の概要]
上で述べた1軸分散及び2軸分散については、ローカル配列のサイズが不均一にならないようにすることが難しいため、本実施の形態においては3軸分散を採用する。3軸分散の場合、通常はFFTの後にデータの配置を元に戻す処理を実行するので、各方向のFFT及び通信を作業用配列のサイズに応じて分割して行うことが可能である。これにより、要素数が増加する可能性を考慮して作業用配列を用意しなくてもよくなり、インタフェースが簡素化する。また、本実施の形態においては、FFT後にデータの配置を元に戻す処理を一部の要素についてのみ実行することで通信量を削減し、並列計算機システムの性能を向上させる。
図12乃至図15を用いて、本実施の形態の概要について説明する。X方向のFFTについては、従来技術と同様の処理を行うので説明を省略し、Y方向及びZ方向の3×4プロセスグリッドで10×9×8のグローバル配列を2軸分割する例を示す。各プロセスは10×3×2=60の要素を持つ。すなわち、mod(N2,ND2)=0且つmod(N3,ND3)=0が成立する。
正変換のFFTをX方向、Y方向、Z方向の順に適用してから逆変換のFFTをZ方向、Y方向、X方向の順に適用して元の配置に戻す場合、Z方向の正変換とZ方向の逆変換との間では要素の並びに制約が無い。そこで、まずZ方向プロセスグループの処理について説明する。
Z方向については、1つのZ方向プロセスグループが処理する配列のサイズを10×3×8の直方体であるとみなし、各プロセスが処理する配列のサイズを10×3×2であるとみなすことができる。10×3×8の配列は、グローバル配列の1/3に相当する。Z方向プロセスグループのFFT多重度は10×3=30であり、30を4で割り切ることはできない。従来は30=8+8+8+6として各プロセスに要素を割り当てていたので要素数が不均一であったが、本実施の形態においては、まず28=7+7+7+7として各プロセスに要素(大ブロック)を割り当て、Z方向のFFTを実行させる。各プロセスは、FFT後の要素を自プロセスが管理する出力配列に格納する。次に、残りの2要素(小ブロック)を、Z方向プロセスグループのうち少なくとも一部のプロセス(例えば、2つのプロセス)に割り当て、そのプロセスにZ方向のFFTを実行させる。そして、その2要素の配置を元に戻すための通信を行う。結果として、Z方向プロセスグループにおけるプロセス0乃至3が担当するローカル配列は、図12のようになる。このような配置であれば、プロセス0乃至3の各々が持つ要素の数は同じである。
Y方向については、1つのY方向プロセスグループが処理する配列のサイズを10×9×2の直方体であるとみなし、各プロセスが処理する配列のサイズを10×3×2であるとみなすことができる。10×9×2の配列は、グローバル配列の1/4に相当する。Y方向のFFT多重度は10×2=20であり、20を3で割り切ることはできない。従来は20=7+7+6として各プロセスに要素を割り当てていたので要素数が不均一であったが、本実施の形態においては、まず18=6+6+6として各プロセスに要素(大ブロック)を割り当て、そのプロセスにY方向のFFTを実行させる。各プロセスは、FFT後の要素を自プロセスが管理する出力配列に格納する。次に、残りの2要素(小ブロック)を、Y方向のプロセスグループのうち少なくとも一部のプロセス(例えば、2つのプロセス)に割り当て、そのプロセスにY方向のFFTを実行させる。そして、その2要素の配置を元に戻すための通信を行う。
なお、Y方向のFFTの結果は、Z方向の要素の並びを崩さないという条件が満たされるように各プロセスに配置されなければならない。この条件によれば、元の10×3×2の配列においてZ方向に隣り合っていた要素については、Y方向のFFT結果の格納時にもZ方向に隣り合うようになる。結果として、Y方向プロセスグループにおけるプロセス10乃至12が担当するローカル配列は、図13のようになる。このような配置であれば、プロセス10乃至12の各々が持つ要素の数は同じである。
図14に、Y方向FFT後の配列サイズ及びZ方向FFT後の配列サイズを示す。図14に示すように、Y方向FFT後に一部の要素について戻し通信が行われると、各プロセスが持つ要素の数は同じになる。同様に、Z方向FFT後に一部の要素について戻し通信が行われると、各プロセスが持つ要素の数は同じになる。
なお、通信用の作業領域が小さい場合には、大ブロックについての処理を分割することも可能である。図15に、大ブロックの処理をさらに場合における要素の配置を示す。この例では、18=(4+2)+(4+2)+(4+2)として各プロセスに要素が割り当てられている。通常は、メッセージ長が短くなり通信効率が悪化することを避けるため分割は行われない。しかしながら、メッセージ長が十分な長さであれば通信効率は安定しているため、分割が性能に悪影響を及ぼすことが無い。むしろ、階層的メモリ構造を有するCPUの場合には処理のブロック化により性能が改善されることがあり、また、一括通信方式では困難であった通信と演算のオーバーラップが可能になる。
[本実施の形態の具体的内容]
図16に、本実施の形態における並列計算機システムの一例を示す。ノード100乃至600は、例えば直接網である通信ネットワーク700を介して接続される。通信ネットワーク700の形状は、例えば6次元メッシュ/トーラスであるが、この形状には限られない。また、図16においてはノードの数が6であるが、数に限定は無い。
なお、通信ネットワークの構成は、直接網と間接網とに大別される。多次元の格子状にノードが接続されたネットワークは直接網と呼ばれる。例えばスーパーコンピュータ「京」のTofuネットワークは直接網である。一方、ネットワークスイッチ等のスイッチ機構を介してノードが接続されるネットワークは間接網と呼ばれる。例えば、ファットツリー型のネットワークやクロスバー型のネットワークは間接網である。
ノード100は、CPU110と、CPU120と、CPU110及びCPU120に使用される共有メモリ130とを有する。CPU110は、キャッシュメモリ111と、コア112乃至117とを有する。CPU120は、キャッシュメモリ121と、コア122乃至127とを有する。図16においてはCPU110及びCPU120のコアの数は6であるが、数に限定は無い。
本実施の形態におけるプロセスを実現するためのプログラム(例えばMPIのプログラム)は、別途設けられた記憶装置に格納されており、実行時には共有メモリ130或いは別途設けられたメインメモリ等にロードされる。CPU110及びCPU120は、プログラムの実行によって1又は複数のプロセスを実現する。
なお、ノード200の構成はノード100の構成と同様であるので、説明を省略する。また、ノード300乃至600の構成は、ノード100及びノード200の構成と同様である。
次に、図17乃至図32を用いて、本実施の形態における並列計算機システムの動作について説明する。ここでは、図17に示すように、ND1=3、ND2=4、ND3=3として36個のプロセスに配列を割り当てるものとする。そして、N1P=N1/ND1、N2P=N2/ND2、N3P=N3/ND3が成立する。
まず、正変換のFFTについて説明する。
並列計算機システムにおいて動作するプロセスの各々は、自プロセスが処理を担当するデータ(すなわち、ローカル配列の要素)の入力を受け付け(図18:ステップS1)、自プロセスが管理する記憶領域(ここでは、共有メモリにおける一部の領域)に格納する。データは、例えばユーザによって入力される。
各プロセスは、同じX方向プロセスグループに属するプロセスとの間で、要素の配置を変更するためのデータ通信を実行する(ステップS3)。例えば図17の例であれば、プロセス0乃至2は同じX方向プロセスグループに属し、プロセス3乃至5は同じX方向プロセスグループに属し、プロセス6乃至8は同じX方向プロセスグループに属し、プロセス9乃至11は同じX方向プロセスグループに属し、プロセス12乃至14は同じX方向プロセスグループに属し、プロセス15乃至17は同じX方向プロセスグループに属し、プロセス18乃至20は同じX方向プロセスグループに属し、プロセス21乃至23は同じX方向プロセスグループに属し、プロセス24乃至26は同じX方向プロセスグループに属し、プロセス27乃至29は同じX方向プロセスグループに属し、プロセス30乃至32は同じX方向プロセスグループに属し、プロセス33乃至35は同じX方向プロセスグループに属する。
ステップS3におけるデータ通信は、例えば全対全通信である。図19に、データ通信の実行前における要素配置の一例を示す。図19においては、データ1900がプロセス0に配置され、データ1901がプロセス1に配置され、データ1902がプロセス2に配置されている。図19の例では、X方向データがプロセス0乃至2に分散されているため、この状態ではプロセス0乃至2はX方向のFFTを実行することができない。そこで、ステップS3におけるデータ通信によって配列の要素を交換し、各プロセスがX方向データを持つようにする。図20に、データ通信の実行後における要素配置の一例を示す。図20の例では、各プロセスはデータ1901乃至1902それぞれの一部を持っており、各プロセスにX方向データが配置されている。
図18の説明に戻り、各プロセスは、自プロセスが持つ要素に対してX方向のFFTを実行する(ステップS5)。
但し、このままでは、Y方向のFFT及びZ方向のFFTを実行することができない。そこで、各プロセスは、同じX方向プロセスグループに属するプロセスとの間で、要素の配置を元に戻すためのデータ通信を実行する(ステップS7)。そして、各プロセスは、X方向FFT後の要素を自プロセスが管理する記憶領域(ここでは、出力配列の領域)に格納する。処理は端子Aを介して図21のステップS9の処理に移行する。
ステップS7におけるデータ通信は、例えば全対全通信であり、ステップS3におけるデータ通信の逆方向の通信である。ステップS7におけるデータ通信によって、要素は再び図19に示すように配置される。
図21の説明に移行し、各プロセスは、第1の計算式に従い、自プロセスが持つ要素から、大ブロックに属する要素と小ブロックに属する要素とを特定する(ステップS9)。第1の計算式とは、例えば、N2P×N3P×N1Pblockという計算式である。ここで、N1Pblock=FLOOR(N1P/ND2)とする。FLOOR()は、小数点以下の値を切り捨てる関数である。前者の式によって、大ブロックに属する要素の数を算出できる。自プロセスが持つ要素の中から、算出した数の要素が大ブロックに属する要素として特定される。大ブロックに属する要素以外の要素が小ブロックに属する要素である。なお、上記第1の計算式には、Z方向の要素の並びを崩さないという条件が反映されている。
各プロセスは、同じY方向プロセスグループに属するプロセスとの間で、大ブロックに属する要素の配置を変更するためのデータ通信を実行する(ステップS11)。例えば図17の例であれば、プロセス0、3、6及び9は同じY方向プロセスグループに属し、プロセス1、4、7及び10は同じY方向プロセスグループに属し、プロセス2、5、8及び11は同じY方向プロセスグループに属し、プロセス12、15、18及び21は同じY方向プロセスグループに属し、プロセス13、16、19及び22は同じY方向プロセスグループに属し、プロセス14、17、20及び23は同じY方向プロセスグループに属し、プロセス24、27、30及び33は同じY方向プロセスグループに属し、プロセス25、28、31及び34は同じY方向プロセスグループに属し、プロセス26、29、32及び35は同じY方向プロセスグループに属する。ステップS11におけるデータ通信は、例えば全対全通信である。
各プロセスは、自プロセスが持つ、大ブロックのうち担当する部分に対してY方向のFFTを実行する(ステップS13)。そして、各プロセスは、Y方向FFT後の要素を自プロセスが管理する記憶領域(ここでは、出力配列の領域)に格納する(ステップS15)。
各プロセスは、同じY方向プロセスグループに属するプロセスとの間で、小ブロックに属する要素の配置を変更するためのデータ通信を実行する(ステップS17)。ステップS17におけるデータ通信は、例えばMPIにおけるalltoallvの通信或いは全対全通信である。
図22に、ステップS11におけるデータ通信の実行前におけるデータ配置の一例を示す。図22においては、データ2200がプロセス0に配置され、データ2201がプロセス3に配置され、データ2202がプロセス6に配置され、データ2203がプロセス9に配置されている。図22の例では、Y方向データが4つのプロセスに分散されているため、この状態ではプロセス0、3、6、及び9はY方向のFFTを実行することができない。そこで、ステップS11におけるデータ通信によって大ブロックの要素を交換し、各プロセスがY方向データを持つようにする。また、ステップS17におけるデータ通信によって小ブロックに属する要素の配置を変更し、4つのプロセスの少なくとも一部にY方向データを集める。
図23に、データ通信の実行後におけるデータ配置の一例を示す。図23の例では、各プロセスは大ブロックのY方向データ及び小ブロックのY方向データを持つ。図23の例では、各プロセスが小ブロックのY方向データを持つが、一部のプロセスが持つようにしてもよい。また、図23に示すように、必ずしも各プロセスが同じ数の要素を持つわけではない。
図21の説明に戻り、小ブロックに属する要素を持つプロセスは、自プロセスが持つ、小ブロックのうち担当する部分に対してY方向のFFTを実行する(ステップS19)。
各プロセスは、同じY方向プロセスグループに属するプロセスとの間で、小ブロックに属する要素の配置を元に戻すためのデータ通信を実行する(ステップS21)。そして、各プロセスは、Y方向FFT後の要素を自プロセスが管理する記憶領域(ここでは、出力配列の領域)に格納する。処理は端子Bを介して図25のステップS23の処理に移行する。なお、ステップS21におけるデータ通信は、例えばMPIにおけるalltoallvの通信或いは全対全通信であり、ステップS17におけるデータ通信の逆方向の通信である。ステップS21におけるデータ通信によって、要素は図24に示すように配置される。図24の例においては、各プロセスが持つ要素の数は同じである。
図25の説明に移行し、各プロセスは、第2の計算式に従い、自プロセスが持つ要素から、大ブロックに属する要素と小ブロックに属する要素とを特定する(ステップS23)。第2の計算式とは、例えば、N3P×Mblockという計算式である。ここで、Mblock=FLOOR((N1PN2P)/ND3)とする。前者の式によって、大ブロックに属する要素の数を算出できる。自プロセスが持つ要素の中から、算出した数の要素が大ブロックに属する要素として特定される。大ブロックに属する要素以外の要素が小ブロックに属する要素である。
各プロセスは、同じZ方向プロセスグループに属するプロセスとの間で、大ブロックに属する要素の配置を変更するためのデータ通信を実行する(ステップS25)。例えば図17の例であれば、プロセス0、12、及び24は同じZ方向プロセスグループに属し、プロセス1、13、及び25は同じZ方向プロセスグループに属し、プロセス2、14、及び26は同じZ方向プロセスグループに属し、プロセス3、15、及び27は同じZ方向プロセスグループに属し、プロセス4、16、及び28は同じZ方向プロセスグループに属し、プロセス5、17、及び29は同じZ方向プロセスグループに属し、プロセス6、18、及び30は同じZ方向プロセスグループに属し、プロセス7、19、及び31は同じZ方向プロセスグループに属し、プロセス8、20、及び32は同じZ方向プロセスグループに属し、プロセス9、21、及び33は同じZ方向プロセスグループに属し、プロセス10、22、及び34は同じZ方向プロセスグループに属し、プロセス11、23、及び35は同じZ方向プロセスグループに属する。ステップS25におけるデータ通信は、例えば全対全通信である。
各プロセスは、自プロセスが持つ、大ブロックのうち担当する部分に対してZ方向のFFTを実行する(ステップS27)。そして、各プロセスは、Z方向FFT後の要素を自プロセスが管理する記憶領域(ここでは、出力配列の領域)に格納する(ステップS29)。
各プロセスは、同じZ方向プロセスグループに属するプロセスとの間で、小ブロックに属する要素の配置を変更するためのデータ通信を実行する(ステップS31)。ステップS31におけるデータ通信は、例えばMPIにおけるalltoallvの通信或いは全対全通信である。
図26に、ステップS25におけるデータ通信の実行前におけるデータ配置の一例を示す。図26においては、データ2600がプロセス0に配置され、データ2601がプロセス12に配置され、データ2602がプロセス24に配置されている。図26の例では、Z方向データが3つのプロセスに分散されているため、この状態ではプロセス0、12、及び24はZ方向のFFTを実行することができない。そこで、ステップS25におけるデータ通信によって大ブロックの要素を交換し、各プロセスがZ方向データを持つようにする。また、ステップS31におけるデータ通信によって小ブロックに属する要素の配置を変更し、3つのプロセスの少なくとも一部にZ方向データを集める。
図27に、データ通信の実行後におけるデータ配置の一例を示す。図27の例では、プロセス0は大ブロックのZ方向データ及び小ブロックのZ方向データを持っており、プロセス12及び24は大ブロックのZ方向データを持っている。図27の例では、プロセス0が小ブロックのZ方向データを持っているが、他のプロセスが持つようにしてもよい。また、図27に示すように、必ずしも各プロセスが同じ数の要素を持つわけではない。
図25の説明に戻り、小ブロックに属する要素を持つプロセスは、自プロセスが持つ、小ブロックのうち担当する部分に対してZ方向のFFTを実行する(ステップS33)。
各プロセスは、同じZ方向プロセスグループに属するプロセスとの間で、小ブロックに属する要素の配置を元に戻すためのデータ通信を実行する(ステップS35)。そして、各プロセスは、Z方向FFT後の要素を自プロセスが管理する記憶領域(ここでは、出力配列の領域)に格納する。そして処理を終了する。なお、ステップS35におけるデータ通信は、例えばMPIにおけるalltoallvの通信或いは全対全通信であり、ステップS31におけるデータ通信の逆方向の通信である。ステップS31におけるデータ通信によって、要素は図28に示すように配置される。図28の例においては、各プロセスが持つ要素の数は同じである。
次に、逆変換のFFTについて説明する。逆変換のFFTは、基本的には、正変換のFFTの逆の処理である。
並列計算機システムにおいて動作するプロセスの各々は、正変換後の要素配置でデータ(すなわち、ローカル配列の要素)の入力を受け付け(図29:ステップS41)、自プロセスが管理する記憶領域(ここでは、共有メモリにおける一部の領域)に格納する。
各プロセスは、第2の計算式に従い、自プロセスが持つ要素から、大ブロックに属する要素と小ブロックに属する要素とを特定する(ステップS43)。
各プロセスは、同じZ方向プロセスグループに属するプロセスとの間で、小ブロックに属する要素の配置を変更するためのデータ通信を実行する(ステップS45)。ステップS45におけるデータ通信は、例えばMPIにおけるalltoallvの通信或いは全対全通信である。
小ブロックに属する要素を持つプロセスは、自プロセスが持つ、小ブロックのうち担当する部分に対してZ方向のFFTを実行する(ステップS47)。
各プロセスは、同じZ方向プロセスグループに属するプロセスとの間で、小ブロックに属する要素の配置を元に戻すためのデータ通信を実行する(ステップS49)。そして、各プロセスは、Z方向FFT後の要素を自プロセスが管理する記憶領域(ここでは、出力配列の領域)に格納する。なお、ステップS49におけるデータ通信は、例えばMPIにおけるalltoallvの通信或いは全対全通信であり、ステップS45におけるデータ通信の逆方向の通信である。
各プロセスは、自プロセスが持つ、大ブロックのうち担当する部分に対してZ方向のFFTを実行する(ステップS51)。そして、各プロセスは、Z方向FFT後の要素を自プロセスが管理する記憶領域(ここでは、出力配列の領域)に格納する(ステップS53)。
各プロセスは、同じZ方向プロセスグループに属するプロセスとの間で、大ブロックに属する要素の配置を元に戻すためのデータ通信を実行する(ステップS55)。ステップS55におけるデータ通信は、例えば全対全通信である。処理は端子Cを介して図30のステップS57に移行する。
図30の説明に移行し、各プロセスは、第1の計算式に従い、自プロセスが持つ要素から、大ブロックに属する要素と小ブロックに属する要素とを特定する(ステップS57)。
各プロセスは、同じY方向プロセスグループに属するプロセスとの間で、小ブロックに属する要素の配置を変更するためのデータ通信を実行する(ステップS59)。ステップS59におけるデータ通信は、例えばMPIにおけるalltoallvの通信或いは全対全通信である。
小ブロックに属する要素を持つプロセスは、自プロセスが持つ、小ブロックのうち担当する部分に対してY方向のFFTを実行する(ステップS61)。
各プロセスは、同じY方向プロセスグループに属するプロセスとの間で、小ブロックに属する要素の配置を元に戻すためのデータ通信を実行する(ステップS63)。そして、各プロセスは、Y方向FFT後の要素を自プロセスが管理する記憶領域(ここでは、出力配列の領域)に格納する。なお、ステップS63におけるデータ通信は、例えばMPIにおけるalltoallvの通信或いは全対全通信であり、ステップS59におけるデータ通信の逆方向の通信である。
各プロセスは、自プロセスが持つ、大ブロックのうち担当する部分に対してY方向のFFTを実行する(ステップS65)。そして、各プロセスは、Y方向FFT後の要素を自プロセスが管理する記憶領域(ここでは、出力配列の領域)に格納する(ステップS67)。
各プロセスは、同じY方向プロセスグループに属するプロセスとの間で、大ブロックに属する要素の配置を元に戻すためのデータ通信を実行する(ステップS69)。ステップS69におけるデータ通信は、例えば全対全通信である。処理は端子Dを介して図31のステップS71に移行する。
図31の説明に移行し、各プロセスは、同じX方向プロセスグループに属するプロセスとの間で、要素の配置を変更するためのデータ通信を実行する(ステップS71)。ステップS71におけるデータ通信は、例えば全対全通信である。
各プロセスは、自プロセスが持つ要素に対してX方向のFFTを実行する(ステップS73)。
各プロセスは、同じX方向プロセスグループに属するプロセスとの間で、要素の配置を元に戻すためのデータ通信を実行する(ステップS75)。そして、各プロセスは、X方向FFT後の要素を自プロセスが管理する記憶領域(ここでは、出力配列の領域)に格納する。そして処理を終了する。なお、ステップS75におけるデータ通信は、例えば全対全通信であり、ステップS71におけるデータ通信の逆方向の通信である。
図32を用いて、本実施の形態の効果について説明する。1軸分散或いは2軸分散によってグローバル配列を単純分割する場合と、FFT多重度をプロセス間で分割する場合とが比較されている。比較の項目は、全対全通信の通信量、制約の強さ、及び全プロセス数がNPである場合のメッセージ長である。本実施の形態の方法に該当する部分には網掛けが付されている。NSとは、図15を用いて説明した、大ブロックの処理の分割数である。
図32に示すように、本実施の形態によれば、要素の並びを元に戻す通信を通常どおり実行する方法と比べると、全対全通信の通信量を減らすことができるようになる。また、グローバル配列の分割に関する制限を緩和することができるようになる。さらに、大ブロックの処理を分割すれば、処理のブロック化により性能が改善されることがあり、また、一括通信方式では困難であった通信と演算のオーバーラップが可能になることがある。
以上のように、本実施の形態においては、出力配列の要素数がプロセス間で不均一にならないように要素が配置され、また、そのための通信方法が工夫されている。これにより、各軸方向の要素数及び分割数に課せられる制約を緩和して汎用性を高めることが可能になり、また、通信量を抑えることで高い性能で計算を行うことができるようになる。
以上本発明の一実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、処理フローにおいては、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
また、上で示した分割態様は一例に過ぎない。例えば、小ブロックに属する要素の配置については、上で示した例に限られるわけではない。
以上述べた本発明の実施の形態をまとめると、以下のようになる。
本実施の形態の第1の態様に係る並列計算機システムは、(A)配列の要素に対する演算を並列で実行する複数の処理装置を有する。そして、複数の処理装置の各々が、(a1)当該処理装置に配置された要素のうち第1の所定数の要素に対して、第1の軸方向の演算を実行し、(a2)演算後の第1の所定数の要素を当該処理装置の記憶装置に保存し、複数の処理装置のうち少なくとも一部の処理装置が、(a3)複数の処理装置の各々から、第1の所定数の要素以外の要素を取得し、(a4)取得した要素に対して第1の軸方向の演算を実行し、(a5)複数の処理装置の各々に、演算後の要素を第2の所定数ずつ配置する処理を実行する。
このようにすれば、各処理装置に同じ数の要素を保存することができ配列の分割に関する制約の緩和と並列計算機システムの性能向上とを両立できるようになる。
また、複数の処理装置の各々は、(a6)複数の処理装置の間における全対全通信によって第1の所定数の要素を取得する処理をさらに実行してもよい。このようにすれば、第1の軸方向の演算の対象となる要素を揃えることができるようになる。
また、複数の処理装置の各々は、(a7)第2の軸方向における要素の数を、複数の処理装置の数で除することで商を算出し、(a8)第1の軸方向における要素の数に、第3の軸方向における要素の数と、算出した商とを乗じることで第1の所定数を算出する処理をさらに実行してもよい。このようにすれば、第1の所定数を可能な限り大きくすることができるので、通信量削減の効果が高くなる。
また、複数の処理装置の各々は、(a9)第2の軸方向における要素の数に第3の軸方向における要素の数を乗じることで算出された数を、複数の処理装置の数で除することで商を算出し、(a10)第1の軸方向における要素の数に、算出した商を乗じることで第1の所定数を算出する処理をさらに実行してもよい。このようにすれば、第1の所定数を可能な限り大きくすることができるので、通信量削減の効果が高くなる。
また、第1の所定数は第2の所定数より多くてもよい。このようにすれば、通信量がより少なくなるので、通信量の増加による性能劣化を抑制できるようになる。
また、演算は3次元高速フーリエ変換であってもよい。
また、配列は3次元配列であってもよい。
本実施の形態の第2の態様に係る演算方法は、コンピュータにより実行される。そして、本演算方法は、(B)コンピュータに配置された要素のうち第1の所定数の要素に対して、第1の軸方向の演算を実行し、(C)演算後の第1の所定数の要素をコンピュータの記憶装置に保存し、(D)他の複数のコンピュータから、当該他の複数のコンピュータにおける第1の所定数の要素以外の要素を取得した場合、取得した要素に対して第1の軸方向の演算を実行し、(E)コンピュータ及び他の複数のコンピュータの各々に、演算後の要素を第2の所定数ずつ配置する処理を含む。
なお、上記方法による処理をプロセッサに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、CD−ROM、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
配列の要素に対する演算を並列で実行する複数の処理装置
を有し、
前記複数の処理装置の各々が、
当該処理装置に配置された要素のうち第1の所定数の要素に対して、第1の軸方向の演算を実行し、
演算後の前記第1の所定数の要素を当該処理装置の記憶装置に保存し、
前記複数の処理装置のうち少なくとも一部の処理装置が、
前記複数の処理装置の各々から、前記第1の所定数の要素以外の要素を取得し、
取得した前記要素に対して前記第1の軸方向の演算を実行し、
前記複数の処理装置の各々に、演算後の前記要素を第2の所定数ずつ配置する、
処理を実行する並列計算機システム。
(付記2)
前記複数の処理装置の各々は、
前記複数の処理装置の間における全対全通信によって前記第1の所定数の要素を取得する
処理をさらに実行する付記1記載の並列計算機システム。
(付記3)
前記複数の処理装置の各々は、
第2の軸方向における要素の数を、前記複数の処理装置の数で除することで商を算出し、
前記第1の軸方向における要素の数に、第3の軸方向における要素の数と、算出した前記商とを乗じることで前記第1の所定数を算出する、
処理をさらに実行する付記1又は2記載の並列計算機システム。
(付記4)
前記複数の処理装置の各々は、
第2の軸方向における要素の数に第3の軸方向における要素の数を乗じることで算出された数を、前記複数の処理装置の数で除することで商を算出し、
前記第1の軸方向における要素の数に、算出した前記商を乗じることで前記第1の所定数を算出する、
処理をさらに実行する付記1又は2記載の並列計算機システム。
(付記5)
前記第1の所定数は前記第2の所定数より多い
付記1乃至4のいずれか1つ記載の並列計算機システム。
(付記6)
前記演算は3次元高速フーリエ変換である
付記1乃至5のいずれか1つ記載の並列計算機システム。
(付記7)
前記配列は3次元配列である
付記1乃至6のいずれか1つ記載の並列計算機システム。
(付記8)
配列の要素に対する演算を並列で実行する複数の処理装置を含む並列計算機システムにおいて、
前記複数の処理装置の各々が、
当該処理装置に配置された要素のうち第1の所定数の要素に対して、第1の軸方向の演算を実行し、
演算後の前記第1の所定数の要素を当該処理装置の記憶装置に保存し、
前記複数の処理装置のうち少なくとも一部の処理装置が、
前記複数の処理装置の各々から、前記第1の所定数の要素以外の要素を取得し、
取得した前記要素に対して前記第1の軸方向の演算を実行し、
前記複数の処理装置の各々に、演算後の前記要素を第2の所定数ずつ配置する、
処理を実行する演算方法。
(付記9)
コンピュータに、
前記コンピュータに配置された要素のうち第1の所定数の要素に対して、第1の軸方向の演算を実行し、
演算後の前記第1の所定数の要素を前記コンピュータの記憶装置に保存し、
他の複数のコンピュータから、当該他の複数のコンピュータにおける前記第1の所定数の要素以外の要素を取得した場合、取得した前記要素に対して前記第1の軸方向の演算を実行し、
前記コンピュータ及び前記他の複数のコンピュータの各々に、演算後の前記要素を第2の所定数ずつ配置する、
処理を実行させるための演算プログラム。
(付記10)
情報処理装置であって、
記憶装置と、
前記情報処理装置に配置された要素のうち第1の所定数の要素に対して、第1の軸方向の演算を実行し、演算後の前記第1の所定数の要素を前記記憶装置に保存し、他の複数の情報処理装置から、当該他の複数のコンピュータにおける前記第1の所定数の要素以外の要素を取得した場合、取得した前記要素に対して前記第1の軸方向の演算を実行し、前記情報処理装置及び前記他の複数の情報処理装置の各々に、演算後の前記要素を第2の所定数ずつ配置する配置部と、
を有する情報処理装置。
100,200,300,400,500,600 ノード
700 通信ネットワーク
110,120,210,220 CPU
111,121,211,221 キャッシュメモリ
112,113,114,115,116,117,122,123,124,125,126,127,212,213,214,215,216,217,222,223,224,225,226,227 コア
130,230 共有メモリ

Claims (8)

  1. 配列の要素に対する演算を並列で実行する複数の処理装置
    を有し、
    前記複数の処理装置の各々が、
    当該処理装置に配置された要素のうち第1の所定数の要素に対して、第1の軸方向の演算を実行し、
    演算後の前記第1の所定数の要素を当該処理装置の記憶装置に保存し、
    前記複数の処理装置のうち少なくとも一部の処理装置が、
    前記複数の処理装置の各々から、前記第1の所定数の要素以外の要素を取得し、
    取得した前記要素に対して前記第1の軸方向の演算を実行し、
    前記複数の処理装置の各々に、演算後の前記要素を第2の所定数ずつ配置する、
    処理を実行する並列計算機システム。
  2. 前記複数の処理装置の各々は、
    前記複数の処理装置の間における全対全通信によって前記第1の所定数の要素を取得する
    処理をさらに実行する請求項1記載の並列計算機システム。
  3. 前記複数の処理装置の各々は、
    第2の軸方向における要素の数を、前記複数の処理装置の数で除することで商を算出し、
    前記第1の軸方向における要素の数に、第3の軸方向における要素の数と、算出した前記商とを乗じることで前記第1の所定数を算出する、
    処理をさらに実行する請求項1又は2記載の並列計算機システム。
  4. 前記複数の処理装置の各々は、
    第2の軸方向における要素の数に第3の軸方向における要素の数を乗じることで算出された数を、前記複数の処理装置の数で除することで商を算出し、
    前記第1の軸方向における要素の数に、算出した前記商を乗じることで前記第1の所定数を算出する、
    処理をさらに実行する請求項1又は2記載の並列計算機システム。
  5. 前記第1の所定数は前記第2の所定数より多い
    請求項1乃至4のいずれか1つ記載の並列計算機システム。
  6. 配列の要素に対する演算を並列で実行する複数の処理装置を含む並列計算機システムにおいて、
    前記複数の処理装置の各々が、
    当該処理装置に配置された要素のうち第1の所定数の要素に対して、第1の軸方向の演算を実行し、
    演算後の前記第1の所定数の要素を当該処理装置の記憶装置に保存し、
    前記複数の処理装置のうち少なくとも一部の処理装置が、
    前記複数の処理装置の各々から、前記第1の所定数の要素以外の要素を取得し、
    取得した前記要素に対して前記第1の軸方向の演算を実行し、
    前記複数の処理装置の各々に、演算後の前記要素を第2の所定数ずつ配置する、
    処理を実行する演算方法。
  7. コンピュータに、
    前記コンピュータに配置された要素のうち第1の所定数の要素に対して、第1の軸方向の演算を実行し、
    演算後の前記第1の所定数の要素を前記コンピュータの記憶装置に保存し、
    他の複数のコンピュータから、当該他の複数のコンピュータにおける前記第1の所定数の要素以外の要素を取得した場合、取得した前記要素に対して前記第1の軸方向の演算を実行し、
    前記コンピュータ及び前記他の複数のコンピュータの各々に、演算後の前記要素を第2の所定数ずつ配置する、
    処理を実行させるための演算プログラム。
  8. 情報処理装置であって、
    記憶装置と、
    前記情報処理装置に配置された要素のうち第1の所定数の要素に対して、第1の軸方向の演算を実行し、演算後の前記第1の所定数の要素を前記記憶装置に保存し、他の複数の情報処理装置から、当該他の複数の情報処理装置における前記第1の所定数の要素以外の要素を取得した場合、取得した前記要素に対して前記第1の軸方向の演算を実行し、前記情報処理装置及び前記他の複数の情報処理装置の各々に、演算後の前記要素を第2の所定数ずつ配置する配置部と、
    を有する情報処理装置。
JP2015089245A 2015-04-24 2015-04-24 並列計算機システム、演算方法、演算プログラム、及び情報処理装置 Active JP6511937B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015089245A JP6511937B2 (ja) 2015-04-24 2015-04-24 並列計算機システム、演算方法、演算プログラム、及び情報処理装置
US15/096,689 US10409761B2 (en) 2015-04-24 2016-04-12 Parallel computer system, arithmetic method, and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015089245A JP6511937B2 (ja) 2015-04-24 2015-04-24 並列計算機システム、演算方法、演算プログラム、及び情報処理装置

Publications (2)

Publication Number Publication Date
JP2016207010A JP2016207010A (ja) 2016-12-08
JP6511937B2 true JP6511937B2 (ja) 2019-05-15

Family

ID=57147810

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015089245A Active JP6511937B2 (ja) 2015-04-24 2015-04-24 並列計算機システム、演算方法、演算プログラム、及び情報処理装置

Country Status (2)

Country Link
US (1) US10409761B2 (ja)
JP (1) JP6511937B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7167687B2 (ja) 2018-12-18 2022-11-09 富士通株式会社 情報処理装置、情報処理方法および情報処理プログラム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4314349A (en) * 1979-12-31 1982-02-02 Goodyear Aerospace Corporation Processing element for parallel array processors
JP4057729B2 (ja) 1998-12-29 2008-03-05 株式会社日立製作所 フーリエ変換方法およびプログラム記録媒体
JP4052181B2 (ja) * 2003-05-23 2008-02-27 株式会社日立製作所 通信隠蔽型の並列高速フーリエ変換方法
US7937567B1 (en) * 2006-11-01 2011-05-03 Nvidia Corporation Methods for scalably exploiting parallelism in a parallel processing system

Also Published As

Publication number Publication date
US20160314093A1 (en) 2016-10-27
US10409761B2 (en) 2019-09-10
JP2016207010A (ja) 2016-12-08

Similar Documents

Publication Publication Date Title
Fjällström Algorithms for graph partitioning: A survey
Deveci et al. Exploiting geometric partitioning in task mapping for parallel computers
US8117288B2 (en) Optimizing layout of an application on a massively parallel supercomputer
CN110516316B (zh) 一种间断伽辽金法求解欧拉方程的gpu加速方法
Li et al. P-cloth: interactive complex cloth simulation on multi-GPU systems using dynamic matrix assembly and pipelined implicit integrators
Hong et al. MultiGraph: Efficient graph processing on GPUs
Deveci et al. Multi-jagged: A scalable parallel spatial partitioning algorithm
JP4778558B2 (ja) 有限要素法と境界要素法による結合方程式の高速演算処理方法
Alexandru et al. Efficient implementation of the overlap operator on multi-GPUs
Zakirov et al. Streaming techniques: revealing the natural concurrency of the lattice Boltzmann method
JP2012073681A (ja) ordering生成方法、プログラム及び共有メモリ型スカラ並列計算機
Orenes-Vera et al. Wafer-scale fast fourier transforms
Acer et al. SPHYNX: Spectral Partitioning for HYbrid aNd aXelerator-enabled systems
Li On parallel solution of sparse triangular linear systems in CUDA
JP6511937B2 (ja) 並列計算機システム、演算方法、演算プログラム、及び情報処理装置
Yang et al. GPU acceleration of subgraph isomorphism search in large scale graph
Heinlein et al. Parallel scalability of three-level FROSch preconditioners to 220000 cores using the Theta supercomputer
US10013393B2 (en) Parallel computer system, parallel computing method, and program storage medium
Grigori et al. Brief announcement: Lower bounds on communication for sparse Cholesky factorization of a model problem
Shivashankar et al. Efficient software for programmable visual analysis using Morse-Smale complexes
Li et al. Efficient data redistribution algorithms from irregular to block cyclic data distribution
Langr et al. Block iterators for sparse matrices
Sudarsan et al. Efficient multidimensional data redistribution for resizable parallel computations
López-Torres et al. GPU-based cellular automata simulations of laser dynamics
Tekic et al. Performance Comparison of Different OpenCL Implementations of LBM Simulation on Commodity Computer Hardware

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180206

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190108

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190122

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190312

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190325

R150 Certificate of patent or registration of utility model

Ref document number: 6511937

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150