JP2000200261A - フ―リエ変換方法、シミュレ―ション方法およびプログラム記録媒体 - Google Patents

フ―リエ変換方法、シミュレ―ション方法およびプログラム記録媒体

Info

Publication number
JP2000200261A
JP2000200261A JP37768498A JP37768498A JP2000200261A JP 2000200261 A JP2000200261 A JP 2000200261A JP 37768498 A JP37768498 A JP 37768498A JP 37768498 A JP37768498 A JP 37768498A JP 2000200261 A JP2000200261 A JP 2000200261A
Authority
JP
Japan
Prior art keywords
data
coordinate
dimensional
processor
space
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.)
Granted
Application number
JP37768498A
Other languages
English (en)
Other versions
JP2000200261A5 (ja
JP4057729B2 (ja
Inventor
Yusaku Yamamoto
有作 山本
Takeshi Naono
健 直野
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP37768498A priority Critical patent/JP4057729B2/ja
Publication of JP2000200261A publication Critical patent/JP2000200261A/ja
Publication of JP2000200261A5 publication Critical patent/JP2000200261A5/ja
Application granted granted Critical
Publication of JP4057729B2 publication Critical patent/JP4057729B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Multi Processors (AREA)
  • Complex Calculations (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

(57)【要約】 【課題】並列計算機上でフーリエ変換を、変換対象デー
タと変換結果データがデータ分割形式が同じに保ち、か
つ、高速に実行する。 【解決手段】変換対象一次元データを直方体状に並べて
3次元の変換対象データに写像し、この直方体をZ方向
に垂直な面で分割して各面のデータを一つのプロセッサ
に割り当て、各プロセッサで、この割り当てにしたがっ
て3次元の変換対象データに対してY方向のフーリエ変
換を実行して第1変換結果データを得る(56)。各プロセ
ッサで、第1変換結果データに対してX方向のフーリエ
変換に類似の変換を実行して第2変換結果データを得る
(57)。第2変換結果データをY軸に垂直な面で分割し直
し、その分割に従いそのデータをプロセッサ間で並び替
え(58)、その後に、各プロセッサで、Z方向のフーリエ
変換に類似の変換を行い最終的な三次元フーリエ変換結
果データを得る(59)。

Description

【発明の詳細な説明】
【発明の属する技術分野】本発明は、複数のプロセッサ
を有する計算機で実行するのに適したフーリエ変換方法
に係り、とくに、ベクトル演算器を内蔵する複数のプロ
セッサからなるベクトル並列計算機で実行するのに適し
たフーリエ変換方法に関する。
【従来の技術】科学技術計算において頻繁に利用される
処理の一つに、フーリエ変換がある。フーリエ変換は、
物理現象のシミュレーションその他に使用される。フー
リエ変換は、ある実数区間で定義された複素数値をとる
関数f(x)を複素指数関数exp(ikx)の重ね合
わせとして表す処理であり、計算機上で実現する場合に
は、扱いうる点の数が有限であることから、複素数の点
列f0,f1,...,fN-1をN個の複素指数関数ex
p(2πikj/N)(ただし、k=0,1,...,
N−1で、iは虚数単位、πは円周率)の重ね合わせと
して表す処理となる。すなわち、f0,f1,...,f
N-1が与えられたときに、式1aにより重ね合わせの係
数c0,c1,...,cN-1を求めるのがフーリエ変換
である。各点fjの値は、これらの係数を用いると、式
1bによりあらわされる。
【数1】 ck=(1/N)Σj=0 N-1 fj exp(-2πikj/N) (ただし、k=0,1,...,N-1) (1a) fj=Σk=0 N-1 ck exp(2πikj/N) (ただしj=0,1,...,N-1) (1b) しかし、この定義に基づいて計算を行うと、式の数がN
本あり、各式がN個の項から成るため、複素指数関数e
xp(−2πikj/N)の計算に加えて、複素数の加
算と乗算が約N2回必要である。そこで実際には、アル
ゴリズム上の工夫により計算量を約NlogNのオーダ
ーに減少させた高速フーリエ変換という手法が広く使わ
れている。高速フーリエ変換を並列計算機上で効率的に
行うための手法として、従来、転置アルゴリズムとバイ
ナリ・エクスチェンジと呼ばれる2つの手法が提案され
ている(たとえばV. Kumar, A. Grama, A. Gupta and
G. Karypis: "Introductionto Parallel Computing, Th
e Benjamin/Cummings Publishing Company, 1994参
照)。前者はプロセッサ間の通信を計算途中の一箇所に
まとめて行う方式、後者はプロセッサ間で通信を行いな
がら計算を進める方式であり、プロセッサの台数をpと
すると、通信の回数は前者がp−1、後者がlog2
で、通信1回あたりに送るデータ量は、前者がN/
2、後者がN/2pである。後者は前者に比べて通信
の回数が少なくて済むため、通信のセットアップ時間が
支配的となる小規模問題では通信時間が少なくて済むと
いう利点があるが、通信すべきデータの総量は多くなる
ため、大規模データの場合には前者が有利となる。半導
体デバイスの特性計算、電子状態計算、気象予測のため
の計算などの科学技術計算では、数万から数百万に上る
変数を扱う大規模シミュレーションが必要である。この
ような大規模問題を扱う手段としては、並列計算機が有
力である。並列計算機は数十個から数万個に上る多数の
高速プロセッサをネットワークで結んだシステムであ
り、従来の逐次型計算機に比べ、プロセッサ台数を増や
すことでピーク性能をいくらでも高めることができると
いう利点を持つ。さらに、最近の並列計算機では、各プ
ロセッサで、一連のデータに対して同じ演算を高速に実
行するできるように演算器が構成されていることも多
い。とくに、各プロセッサに、そのような演算器として
同じ演算を複数のデータに対してパイプライン的に実行
するベクトル演算器を有するベクトル並列計算機も開発
されている。ベクトル並列計算機の中には、このベクト
ル演算器による演算を指定するベクトル命令を実行でき
るものもある。さらに、メモリとベクトル演算器の間に
複数のベクトルレジスタが設けられている並列計算機も
ある。これらのベクトルレジスタはメモリと演算器のデ
ータの転送時間が処理時間に及ぼす時間を軽減してい
る。より高速にシミュレーションを実行可能になってい
る。また、厳密にはベクトル並列計算機ではないが、ベ
クトル並列計算機に類似の並列計算機として、ある演算
を実行する演算器がベクトル演算器でなくても、一連の
データに対してその演算を高速に実行できるように構成
されている演算器を使用する並列計算機も多い。フーリ
エ変換は科学技術計算でもっともよく使われる処理の一
つであり、最近では並列計算機用のライブラリとして提
供されることも多い。たとえば日立製作所編「プログラ
ムプロダクトHI−UX/MPP行列計算副プログラム
ライブラリMATRIX/MPP」参照。並列計算機で
実行する大規模のシミュレーションがフーリエ変換を実
行する場合には前述の転置アルゴリズムが使用されるこ
とが多い。上に記載したように、ベクトル型並列計算機
あるいはそれらに類似の並列計算機で転置アルゴリズム
を実行する場合には、変換すべき一次元空間の点列デー
タを3次元空間に直方体状に並べ、これに対してたとえ
ばY方向の変換、X方向の変換、Z方向の変換を順次行
うことによって、全データ点列に対して高速フーリエ変
換を行ったのと同一の結果を得る。より具体的には、フ
ーリエ変換の対象となる一次元のデータf0
1,...,fN-1を入力し、各辺の長さがNX,N
Y,NZの直方体状に並べる。ここで、NX,NY,N
ZはNX*NY*NZ=Nを満たす整数である。データ
を直方体状に並べるに当たっては、原点からたとえばZ
方向にデータを並べていき、NZ個のデータを並べ終わ
ったら次はX座標を1だけ増やしてデータを並べ、これ
を繰り返してNX*NZ個のデータを並べ終わったら次
はY座標を1だけ増やしてデータを並べる、という操作
を行う。このようにデータを並べた後、直方体をZ軸に
垂直にスライスし、こうしてできる各面を並列計算機の
一つのプロセッサに割り当てる。次に、Y方向の変換を
行う。プロセッサへの入力データfjの割り当て方式よ
り、各XY平面は1台のプロセッサに担当されているか
ら、この変換処理は通信なしに各プロセッサで独立に行
える。次に、同様にして各プロセッサで独立にY方向の
変換の結果データに対してX方向の変換を行う。X方向
の変換の終了後、プロセッサ間でのX方向の変換の結果
データの入れ替えを行い、今度はその結果データが構成
する直方体をX軸に垂直にスライスし、こうしてできる
各面を一つのプロセッサに割り当てる。この処理を転置
と呼び、各プロセッサが自分以外の全プロセッサとデー
タの交換を行う必要がある。転置の終了後、今度は各プ
ロセッサで独立にZ方向の変換を行う。以上で、直方体
状に並べられた一次元入力データfjのフーリエ変換が
終了し、直方体状に並べられた、重ね合わせの係数を表
す出力データckが求まる。出力データckの並び方は、
原点からまずY方向に、Y方向にNY個行ったら次はX
座標が1だけ増え、XY平面上にNX*NY個のデータ
が並んだら次はZ座標が1だけ増えるという順で並ぶ。
上記の転置アルゴリズムでは、入力データfjの分割
は、fjを第MOD(j,p)番のプロセッサが担当する
という形でデータがプロセッサ間で分割されている。こ
のデータ分割形式はサイクリック分割と呼ばれる。デー
タ分割形式はデータのプロセッサへの割り当ての順序を
表すものでもあり、本明細書ではデータ分割形式のこと
を割り当て順序あるいは割り当て態様とも呼ぶことがあ
る。一方、出力データckの分割は、NY個の連続する
データを1台のプロセッサが担当するブロックサイクリ
ック分割となり、入力データfjとはプロセッサ間のデ
ータ分割形式が異なる。上記の転置アルゴリズムでは、
入力データfjの並べ方およびそのデータのプロセッサ
への分割の仕方より分かるように、入力データの分割形
式は、fjを第MOD(j,p)番のプロセッサが担当す
るというサイクリック分割となる。一方、転置後のデー
タのプロセッサへの分割の仕方、および変換で得られた
出力データckの並び方より分かるように、出力データ
の分割形式は、NY個の連続するデータを1台のプロセ
ッサが担当するというブロックサイクリック分割とな
る。しかし多くの応用では、フーリエ変換と逆フーリエ
変換とを対にして用い、しかも逆フーリエ変換はフーリ
エ変換プログラムを流用して行うため、フーリエ変換の
入力データと出力データが同じデータ分割形式(データ
割り当て順序)になっている方が都合がよい。そのた
め、従来の高速フーリエ変換方法では、以上の処理に従
ってブロックサイクリック分割の出力データckを得た
後、再びプロセッサ間でデータの転送を行い、データc
kをサイクリック分割に直して出力する必要がある。
【発明が解決しようとする課題】本発明者の検討の結
果、以上の従来のフーリエ変換方法では、フーリエ変換
係数の計算後に行うデータ分割形式(データ割り当て順
序)の変更のためのプロセッサ間でのデータ転送が、フ
ーリエ変換時間の短縮を妨げていることが分かった。し
たがって、本発明の目的は、フーリエ変換係数の計算後
にデータ分割形式の変更のためにデータ転送を行わなく
ても、フーリエ変換結果データがフーリエ変換対象デー
タと同一のデータ分割形式(データ割り当て順序)を持
ち得るフーリエ変換方法を提供することである。
【課題を解決するための手段】上記目的を達成するた
め、本発明によるフーリエ変換方法は、各プロセッサに
より、第1の変換処理、第2の変換処理、第3の変換処
理を順次実行し、上記複数のプロセッサの各々による、
上記第1、第2の変換処理のいずれか一方の変換処理の
実行後に、上記複数のプロセッサでのその一方の変換処
理を実行した結果得られた一群の結果データを構成する
複数の結果データ部分群が異なるプロセッサに割り当て
られるように、上記一群の結果データを上記複数のプロ
セッサの間で交換するステップを有する。上記第1から
第3の変換処理は、一群の順序づけられた変換対象デー
タに対する一群の順序づけられたフーリエ変換係数デー
タを構成する複数のフーリエ変換係数データ部分群をそ
れぞれ異なるプロセッサにより生成するように定めら
れ、各プロセッサには、上記一群の変換対象データを構
成する複数の変換対象データ部分群の一つの変換対象デ
ータ部分群がそのプロセッサに対して予め割り当てら
れ、上記一群のフーリエ変換係数データのそれぞれを生
成したプロセッサの順序が、上記一群の変換対象データ
のそれぞれが割り当てられたプロセッサの順序と同一と
なるように、上記交換するステップで各プロセッサに割
り当てられる結果データ部分群が定められているもの。
より具体的には、上記第1、第2、第3の変換処理は、
それぞれ3次元データ空間の第1、第2、第3の座標軸
に関する変換処理であり、上記変換対象データ群の各々
は、上記3次元データ空間の直方体形状に位置する格子
点群の一つの座標をそれぞれ有し、上記複数の変換対象
データ部分群は、上記3次元データ空間の第3の座標軸
の座標値が同じであり、上記3次元データ空間の第1、
第2の座標軸の座標値が異なる全ての変換対象データが
同一の変換対象データ部分群に含まれるように定めら
れ、上記フーリエ変換係数データ群の各々は、3次元係
数空間の直方体形状に位置する格子点群の一つの座標を
それぞれ有し、上記複数のフーリエ変換係数データ部分
群は、上記3次元係数空間の第1の座標軸の座標値が同
じであり、上記3次元波数空間の第2、第3の座標軸の
座標値が異なる全てのフーリエ変換係数データが同一の
フーリエ変換係数データ部分群に含まれるように定めら
れている。本発明の具体的な態様によるフーリエ変換方
法では、上記変換対象データ群の各々は、上記3次元デ
ータ空間の直方体形状に位置する格子点群の一つの座標
をそれぞれ有し、上記複数の変換対象データ部分群は、
上記3次元データ空間の第3の座標軸の座標値が同じで
あり、上記3次元データ空間の第1、第2の座標軸の座
標値が異なる全ての変換対象データが同一の変換対象デ
ータ部分群に含まれるように定められ、上記フーリエ変
換係数データ群の各々は、3次元係数空間の直方体形状
に位置する格子点群の一つの座標をそれぞれ有し、上記
複数のフーリエ変換係数データ部分群は、上記3次元係
数空間の第1の座標軸の座標値が同じであり、上記3次
元波数空間の第2、第3の座標軸の座標値が異なる全て
のフーリエ変換係数データが同一のフーリエ変換係数デ
ータ部分群に含まれるように定められる。更に具体的に
は、上記変換対象データ群が上記3次元データ空間に直
方体形状に位置する格子点群に上記3次元空間に第3の
座標軸、第2の座標軸、第1の座標軸の順に順次割り当
てられ、上記第1から第3の変換処理は、上記複数のフ
ーリエ変換係数データが、3次元係数空間に直方体形状
に位置する格子点群に、当該3次元係数空間の第1、第
2、第3の座標軸の順序で割り当てられるように定めら
れている。更に具体的な態様では、各プロセッサが上記
第1の変換処理により生成する上記一つの第1の結果デ
ータ部分群は、上記3次元データ空間の第3の座標軸の
座標値が所定の同じ値であり、上記3次元データ空間の
第2の座標軸の座標値と上記3次元係数空間の第1の座
標軸の座標値が異なる値を有する全ての複数の第1の結
果データを含み、上記交換ステップが上記第1の変換処
理が上記複数のプロセッサにより実行された後に実行さ
れ、上記複数のプロセッサは、この交換ステップで、上
記3次元係数空間の第1の座標軸の座標値が所定の同じ
値であり、上記3次元データ空間の第2、第3の座標軸
の座標値が異なる値を有する全ての複数の第1の結果デ
ータを含む第1の結果データ部分群が同一のプロセッサ
に割り当てられるように、上記複数のプロセッサが生成
した一群の第1の結果データを上記複数のプロセッサの
間で交換し、各プロセッサが上記第2の変換処理により
生成する上記一つの第2の結果データ部分群は、上記3
次元係数空間の第1の座標軸の座標値が所定の同じ値で
あり、上記3次元波数空間の第2の座標軸の座標値と上
記3次元データ空間の第3の座標軸の座標値が異なる値
を有する全ての複数の第2の結果データを含み、各プロ
セッサが上記第3の変換処理により生成する上記一つの
フーリエ変換係数部分群は、上記3次元係数空間の第1
の座標軸の座標値が所定の値であり、上記3次元波数空
間の第2、第3の座標軸の座標値が異なる値を有する全
ての複数のフーリエ変換係数を含む。更に具体的な他の
態様では、各プロセッサが上記第1の変換処理により生
成する上記一つの第1の結果データ部分群は、上記3次
元データ空間の第3の座標軸の座標値が所定の同じ値で
あり、上記3次元データ空間の第2の座標軸の座標値と
上記3次元係数空間の第1の座標軸の座標値が異なる値
を有する全ての複数の第1の結果データを含み、上記交
換ステップが上記第2の変換処理が上記複数のプロセッ
サにより実行された後に実行され、各プロセッサが上記
第2の変換処理により生成する上記一つの第2の結果デ
ータ部分群は、上記3次元データ空間の第3の座標軸の
座標値が所定の同じ値であり、上記3次元係数空間の第
1、第2の座標軸の座標値が異なる値を有する全ての複
数の第2の結果データを含み、上記複数のプロセッサ
は、上記交換ステップにより、上記3次元係数空間の第
1の座標軸の座標値が所定の同じ値であり、上記3次元
係数空間の第1の座標軸の座標値と上記3次元データ空
間の第3の座標軸の座標値が異なる値を有する全ての複
数の第1の結果データを含む第1の結果データ部分群が
同一のプロセッサに割り当てられるように、上記複数の
プロセッサが生成した一群の第1の結果データを上記複
数のプロセッサの間で交換し、各プロセッサが上記第3
の変換処理により生成する上記一つのフーリエ変換係数
部分群は、上記3次元係数空間の第1の座標軸の座標値
が所定の値であり、上記3次元係数空間の第2、第3の
座標軸の座標値が異なる値を有する全ての複数のフーリ
エ変換係数を含む。本発明のより具体的な態様では、各
プロセッサにより、3次元空間の第1、第2、第3の座
標軸の座標にそれぞれ関する第1、第2、第3の変換処
理を順次かつ他のプロセッサと並行して実行し、各プロ
セッサが上記第1、第2の変換処理のいずれか一方を実
行した後に、その一方の変換処理の結果それぞれのプロ
セッサで得られた複数の結果データを上記複数のプロセ
ッサの間で交換するステップを有する。ここで、一群の
順序づけられた変換対象データが上記3次元空間に直方
体の形に並べられ、上記第1から第3の変換処理は、上
記一群の変換対象データに対する一群の順序づけられた
3次元空間の座標を有する複数のフーリエ変換係数デー
タを生成するように定められ、上記複数の変換対象デー
タが構成する上記直方体を分割する上記3次元空間の上
記第1の座標軸に垂直な複数の面の各々に含まれる複数
の変換対象データが同一のプロセッサに割り当てられ、
上記交換ステップは、上記一方の変換処理の結果得られ
た上記複数の結果データが構成する3次元空間の直方体
を、その3次元空間の第1の座標軸に垂直な複数の面で
分割し直して、各面に属する複数の結果データを同一の
プロセッサに割り当てるように、上記一方の変換処理の
結果得られた上記複数の結果データを上記複数のプロセ
ッサ間で交換するステップを有する。とくに、望ましく
は、上記一群の順序づけられた変換対象データを上記3
次元空間に直方体の形に並べられる順序は、第3の座標
軸、第2の座標軸、第1の座標軸の順であり、上記第1
から第3の変換処理は、上記複数のフーリエ変換係数デ
ータが3次元空間に第1、第2、第3の座標軸の順序で
並べられるように定められている。さらに望ましくは、
本発明によるフーリエ変換方法は、各プロセッサがパイ
プライン演算器を含み、その演算器での演算の対象とす
るループ長がLのときのその各プロセッサの演算性能を
求めるための性能データを上記複数のプロセッサに共通
に記憶し、その性能データを用いて、上記直方体の上記
第1、第2、第3の座標軸方向の長さを決定し、その決
定された上記第1、第2、第3の座標軸方向の長さを有
する直方体に、上記順序づけられた複数の変換対象デー
タを並べるステップをさらに有する。本発明によるプロ
グラム記憶媒体は、上記いろいろのフーリエ変換方法の
いずれかを実行するようにプログラムされたプログラム
が記憶する。さらに、本発明によるシミュレーション方
法は、上記いろいろのフーリエ変換方法のいずれかを使
用してシミュレーションを実行する。本発明による他の
プログラム記憶媒体は、上記シミュレーション方法を実
行するようにプログラムされたプログラムを記憶する。
【発明の実施の形態】以下、本発明に係るフーリエ変換
方法、それを用いるシミュレーション方法およびプログ
ラムを図面に示したいくつかの実施の形態を参照してさ
らに詳細に説明する。なお、以下においては、同じ参照
番号は同じものもしくは類似のものを表わすものとす
る。また、第2の実施の形態以降では、第1の実施の形
態との相違点を主に説明するに止める。 <発明の実施の形態1> (1)装置の概略構成 本発明によるフーリエ変換方法を実行するための並列計
算機システムの一例を図1に示す。並列計算機28は、
それぞれがメモリ26を備えた複数のプロセッサ27
と、プログラムおよびデータを格納するための複数の外
部記憶装置31から構成され、これらの装置は、内部デ
ータ転送ネットワーク29を介して相互にデータを交換
可能なように構成されている。外部記憶装置31には、
たとえば、多くのユーザの利用に供するために並列計算
機28に予め準備された複数のプログラムライブラリ4
4とそれらが使用するデータ30等が記憶される。各プ
ロセッサのメモリ26は、いわゆるローカルメモリであ
り、このメモリに記憶されたデータに割り当てられるア
ドレスは、そのプロセッサで定められたローカルなアド
レス空間に属するアドレスであり、この種のメモリは一
般に分散メモリと呼ばれ、この種のメモリを有する計算
機は分散メモリ型の並列計算機と呼ばれる。並列計算機
28は、各プロセッサ29が、一連のデータ要素からな
るベクトルデータに対して同じ演算をパイプライン的に
連続して実行できるベクトル演算器(図示せず)を備え
るベクトル並列計算機であると仮定する。これらのプロ
セッサ27内の特定の一つのプロセッサには、ユーザが
操作可能な計算機、たとえばワークステーション1がL
AN等のネットワーク2を介して接続されている。この
計算機は他の計算機たとえばパーソナルコンピュータで
もよい。このワークステーション1には、並列計算機2
8に対する指示あるいはデータを入力するための入力装
置3(典型的には、キーボードとマウス)と、並列計算
機28からの計算結果を出力するための出力装置29
(典型的には、表示装置と印刷装置)が接続されてい
る。なお、ワークステーション1内には、並列計算機2
8に送るべきプログラムおよびそのプログラムで使用す
るデータを記憶する記憶装置(図示せず)も設けられて
いる。上記特定のプロセッサは、並列計算機28内で計
算を司るプロセッサの役目とユーザ用のワークステーシ
ョン1との通信の役目とを兼ねる。すなわち、このプロ
セッサは、ワークステーション1から送付されるプログ
ラムとデータを受信し、それらを外部記憶装置31の一
つに記憶し、その後、並列計算機28の内部に記憶され
た適当なプログラムにより、ユーザ指定のプログラムを
複数のプロセッサ(具体的には全プロセッサ)にロード
し、ユーザ指定のデータの異なる部分を、それぞれそれ
らのプロセッサの異なるものに割り当て、そのユーザ指
定のプログラムを起動する。しかしながら、本発明によ
るフーリエ変換方法を実施するためには、並列計算機2
8は、複数のプロセッサを有することが必要であるが、
それ以外の点では特に限定した構造を有しなくてもよい
ことは言うまでもない。並列計算機28は、ベクトル並
列計算機であると仮定したが、このベクトル演算器はご
く一部の演算のみを実行でき、他の演算はベクトル演算
器ではないスカラ演算器で実行されてもよい。さらに、
並列計算機28は、対してこのような演算器を有しなく
てもよい。もちろん、一連のデータに対する同じ演算を
高速に実行できるように構成されている演算器を有する
ことが望ましい。また、並列計算機28は、メモリ29
と演算器(図示せず)の間に複数のベクトルレジスタを
有しないと仮定するが、これらのレジスタが使用するこ
とはより望ましいことである。さらに、それらのプロセ
ッサの具体的な構造あるいはそれらの間のデータ転送ネ
ットワークの構造、あるいはそれらのプロセッサと入力
装置あるいは出力装置との接続形態がいろいろであって
も、本発明はそれらの並列計算機に適用可能である。た
とえば、ワークステーションと通信可能な複数のプロセ
ッサが設けられていてもよく、また、ワークステーショ
ンと通信可能な少なくとも一つのプロセッサが計算用の
プロセッサとは別に設けられていてもよい。また、実行
すべきプログラムとデータを並列計算機28に送付する
方法は他の方法に依ってもよいことは明らかである。ユ
ーザは上記複数のプロセッサ27を使用して種々の計算
を実行できる。最も典型的な計算は、物理現象などのシ
ミュレーションであり、たとえば、地球の気象の予測も
シミュレーションにより行われる。半導体デバイスの設
計も、半導体デバイスの物理的な動作をシミュレーショ
ンして行われている。このようなシミュレーションを並
列計算機を使用して実行する場合、シミュレーション対
象の物理領域を複数の部分領域に区分し、各部分領域を
一つのプロセッサに割り当て、そのプロセッサにおい
て、その部分領域についてのシミュレーションを、たと
えば一つまたは複数の物理量に関する偏微分方程式を解
いて実行することが多い。この場合、シミュレーション
に使用される複数のプロセッサは、同じシミュレーショ
ンプログラムを互いに並列に実行する。したがって、こ
のようなプログラムは並列プログラムとも呼ばれる。各
プロセッサが実行するシミュレーションプログラムが使
用するデータは異なる。たとえばシミュレーション領域
の位置と形状を表すデータ、シミュレーションすべき物
理量の初期値、シミュレーション領域の物質に関する物
質定数、あるいは各部分領域に関する境界条件など異な
る。各プロセッサは、計算の途中で得られた結果データ
を他の適当なプロセッサに転送し、あるいは他のプロセ
ッサから計算結果データを受け取り、さらにシミュレー
ションを続けていく。このシミュレーションプログラム
の中にはフーリエ変換を使用するものもある。本実施の
形態では、いろいろのシミュレーションの利用に供する
ために、本発明によるフーリエ変換方法にしたがってフ
ーリエ変換を実行するようにプログラムされたフーリエ
変換ライブラリがいずれかの外部記憶装置31に記憶さ
れる。さらにプロセッサ間の通信を実行するための通信
ライブラリも外部記憶装置31に記憶される。シミュレ
ーションプログラムは、上記フーリエ変換ライブラリあ
るいは通信ライブラリを必要な時点でコールするように
プログラムされる。並列計算機28は、ワークステーシ
ョン1から送信されたユーザ指定のシミュレーションプ
ログラムと、そのシミュレーションプログラムが使用す
るライブラリ(今の場合には上記フーリエ変換ライブラ
リと上記通信ライブラリ)を各プロセッサにロードす
る。さらに、並列計算機28は、それぞれのプロセッサ
でシミュレーションプログラムが使用する、ワークステ
ーション1から送信されたユーザ指定のデータをそれぞ
れのプロセッサにロードする。なお、シミュレーション
プログラムは全プロセッサにロードされてもよく、一部
のプロセッサにロードされてもよいが、以下では簡単化
のために、シミュレーションプログラムは、全てのプロ
セッサにロードされると仮定する。上記ライブラリある
いは上記シミュレーションプログラムは、並列計算機2
8の命令セットあるいはハード構造の特徴、ソフトウエ
ア上の制約等を反映するコンパイラによりコンパイルさ
れたものである。本発明によりフーリエ変換方法を実行
する上記ライブラリあるいは上記シミュレーションプロ
グラムに上記ライブラリに含まれたフーリエ変換のため
のプログラム部分を組み込んだプログラムを磁気記憶装
置のようなプログラム記録媒体に記憶して販売できる。 (2)並列高速フーリエ変換の原理 すでに述べたごとく、フーリエ変換は、N個の入力デー
タf0,f1,...,fN-1からN個の出力データc0
1,...,cN-1を、式1aを用いて計算する処理で
ある。入力データfj、出力データckは、実数データで
あっても複素データであってもよい。入力データfj
出力データckはそれぞれ実空間のデータ、波数空間の
データと呼ばれることがある。すなわち、入力データf
jの添え字jは、一次元の実空間の格子点の座標を表し、
出力データckの添え字kは、一次元の波数空間の格子
点の座標を表すと考えることができる。言い換えると、
上記の式によるフーリエ変換は、一次元の実空間のデー
タを一次元の波数空間のデータに変換する処理である。
したがって、本明細書では、入力データfjの添え字jを
一次元実空間の格子点座標あるいは単に座標と呼び、出
力データckの添え字kを一次元波数空間の格子点の座
標あるいは単に座標と呼ぶことがある。あるいは、それ
らのデータはその座標を有すると呼ぶことがある。しか
し、入力データfj、出力データckが実際にはそのよう
な実空間、波数空間に属するデータでなくてもよい。一
般に、並列計算機を使用して演算を行う場合、できるだ
け多くのプロセッサが互いに並列に動作する時間を増大
するとともに、プロセッサ間のデータ通信の総回数を少
なくすることが望ましいことが知られている。データ通
信は、プロセッサ内部の計算時間に比べて時間が掛かる
上に、通信はあるプロセッサからのデータの送信と他の
プロセッサでの受信となからなり、受信側のプロセッサ
では、ある処理を実行する前に他のプロセッサからそこ
での演算結果データを受信するようにプログラムされた
場合、そのプロセッサは、受信すべき演算結果データが
受信されるまで、その処理を開始することができない。
したがって、各プロセッサでは、通信の発生に伴い、受
信待ち時間が増大し、他のプロセッサと並列に動作する
時間が減少する。したがって、並列計算機で演算を高速
に行うには、プロセッサ間の通信の総回数を減らすこと
が望ましいことが知られている。このことは演算として
フーリエ変換を並列計算機で実行する場合も同じであ
る。このためには、演算で使用するデータをどのプロセ
ッサに割り当てるか、いつプロセッサ間で演算結果デー
タを交換するかが重要な問題である。並列計算機でフー
リエ変換を行うには、従来の転置アルゴリズムでは、変
換対象データfjを以下のようにして3次元の実空間の
データに写像し、それを用いて変換対象データを割り当
てるプロセッサを決定することになる。いま、NX,N
Y,NZをNX*NY*NZ=Nを満たす正の整数と
し、1次元の添字j,kを3次元の添字(jx,jy,j
z)、(kx,ky,kz)に次の式2、3によって置換す
る。
【数2】 j=jy*NX*NZ+jx*NZ+jz (ただし、jx=0,1,...,NX-1, jy=0,1,...,NY-1, jz=0,1,...,NZ-1) ...(2)
【数3】 k=kz*NX*NY+kx*NY+ky (ただし、kx=0,1,...,NX-1, ky=0,1,...,NY-1, kz=0,1,...,NZ-1) ...(3) ここで、記号*は乗算を表す。この置換は、1次元実空
間の格子点座標j、1次元の波数空間の格子点座標k
を、それぞれ3次元の実空間の格子点座標(jx,jy
z)、3次元の波数空間の格子点座標(kx,ky
z)に写像することであるとも言える。3次元の実空
間の座標(jx,jy,jz)は、1次元の実空間の座標
jから次式により計算される。 jz=MOD(j/NZ,NX) jy=(j/(NX*NZ))↓ jz=MOD(j,NZ) ここで、( )↓は、括弧内の数値の整数部分のみを
表し、小数点以下を切り捨てることを表す。したがっ
て、jが0,1,2,3,,,(N−1)と変化したと
きに、(jx,jy,jz)は、(0,0,0),(0,
0,1),(0,0,2),(0,0,3),,,
(0,0,NZ−1)と変化し、さらに、(1,0,
0),(1,0,1),(1,0,2),(1,0,
3),,,(1,0,NZ−1)と変化し、この変化を
(NX−1,0,NZ−1)まで変化した後に、jy
1に変えて上記変化を座標(NX−1,NY−1,NZ
−1)に達するまで繰り返す。すなわち、一次元の順次
異なる座標点jに対応する3次元の座標点(jx,jy
z)は、Z方向、X方向、Y方向の順に変化する。本
明細書では、このようにフーリエ変換の対象となる一次
元実空間のデータf0,f1,.,fN-1を3次元実空間
のデータに写像することを、簡単化のために各辺の長さ
がNX,NY,NZの直方体状に並べるともいう。以上
の置換は、言い換えると、図2に示すように、原点から
まずZ方向にデータを並べていき、NZ個のデータを並
べ終わったら次はX座標を1だけ増やしてデータを並
べ、これを繰り返してNX*NZ個のデータを並べ終わ
ったら次はY座標を1だけ増やしてデータを並べるとい
う操作を行うことと等価である。但し、図2では、Nは
512であり、NX,NY,NZはともに8に等しいと
仮定した。3次元の波数空間の座標(kx,ky,kz
は、1次元の波数空間の座標kから次式により計算され
る。 kx=MOD(k/NY,NX) ky=MOD(k,NY) kz=(k/(NX*NY))↓ したがって、kが0,1,2,3,,,(NX*NY*
NZ−1)と変化したときに、(kx,ky,kz)は、
(0,0,0),(0,1,0),(0,2,0),
(0,3,0),,,(0,NY−1,0)と変化し、
さらに、(1,0,0),(1,1,0),(1,2,
0),(1,3,0),,,(1,NY−1,0)と変
化し、この変化を(NX−1,NY−1,0)まで変化
した後に、kzを1に変えて上記変化を座標(NX−
1,NY−1,NZ−1)に達するまで繰り返す。すな
わち、一次元の順次異なる座標点kに対応する3次元の
座標点(kx,ky,kz)は、Y方向、X方向、Z方向
の順に変化する。したがって、求めるべきフーリエ変換
係数ckとそれに対応する3次元の波数空間の座標
(kx,ky,kz)との関係は図3に示すとおりにな
る。但し、図3では、Nは512であり、NX,NY,
NZはともに8に等しいと仮定した。なお,転置アルゴ
リズム自体は、1次元空間のデータ列fj、それに対す
るフーリエ変換結果データckを2次元空間のデータf
jx,jy,ckx,kyに変換して行うこともできる。この場合に
は、1次元のフーリエ変換を2次元のフーリエ変換に置
き直すことになる。しかし、ここで記載するように、1
次元空間のデータ列fj、それに対するフーリエ変換結
果データckを3次元空間のデータfjx,jy,jzとc
kx,ky,kzに変換してフーリエ変換を行うのは,並列計算
機の個々のプロセッサがベクトル演算器を持つ場合に、
そのベクトル演算器をうまく利用するためである。この
場合には、1次元のフーリエ変換を3次元のフーリエ変
換に置き直すことになる。すなわち,以下の実施の形態
でも述べるように,変換の各ステップでは,X方向、Y
方向、Z方向のうちのどれかの方向について変換を行
い,残りの2方向のうちの1方向を用いて並列化を行
い,更に残りの1方向を用いてベクトル化を行う。この
ため,データを3つの方向を持つ直方体状に並べる必要
がある。原理的には,式2,3と同様の変換を行って,
データを2次元空間あるいは4次元以上の空間に並べ直
すこともできるが,2次元では並列化とベクトル化の両
方を行うには次元が足りず,また,4次元以上では不要
な次元ができ,その分だけベクトル化対象のループ長が
短くなってしまうので性能的に不利である。そのため,
ベクトル演算器を持つ並列計算機上で高速フーリエ変換
を行うには,データを式2,3のように3次元に並べ直
すことがことが望ましい。このようなデータの変換は、
各プロセッサがベクトル演算器を持たない場合にも演算
の高速化に有効な場合が多い。置換式2,3を使用する
と、式1aは次のように書き換えられる。
【数4】 ck =ckx,ky,kz =(1/N)Σjz=0 Nz-1Σjx=0 Nx-1Σjy=0 Ny-1jx,jy,jz *exp(-2πi(kz*NX*NY+kx*NY+ky) (jy*NX*NZ+jx*NZ+jz)/(NX*NY*NZ)) =(1/N)Σjz=0 Nz-1exp(-2πi((kz*NX*NY+kx*NY+ky)jz) /(NX*NY*NZ)) *(Σjx=0 Nx-1exp(-2πi((kx*NY+ky)jx)/(NX*NY)) *(Σjy=0 Ny-1jx,jy,jz*exp(-2πikyy/NY))) (ただし、kx=0,1,...,NX-1, ky=0,1,...,NY-1, kz=0,1,...,NZ-1) ...(4) さらに、この変換式は次の3式で表される3ステップの
変換をそれらの式の順に順次実行することにより実現さ
れる変換であることが分かる。
【数5】 c'jx,ky,jz=Σjy=0 Ny-1jx,jy,jz*exp(-2πikyy/NY) (5)
【数6】 c''kx,ky,jz=Σjx=0 Nx-1c'jx,ky,jz *exp(-2πi(kx+ky/NY)jx/NX) ...(6)
【数7】 ckx,ky,kz=Σjz=0 Nz-1c''kx,ky,jz *exp(-2πi(kz+kx/NY+ky/(NX*NY))jz/NZ) ..(7) 式5は、jx、jzが特定の値であり、jyの値が異なる
NY個の入力データfjx,jy,jzに対するフーリエ変換
を、jx、jzが採りうる値の組合わせの数(NX*NZ
組)だけ行い、それにより上記二つの実空間座標
(jx、jz)の組のひとつにそれぞれ対応する複数(N
X*NZ)組の、3次元の波数空間の一つの座標
(ky)に関する一次変換結果データ(c'jx,ky,jz
(ky=0〜NY−1、jx=0〜NX−1、jz=0〜
NZ−1)を得る処理を表す。式6も、複素指数関数の
中にky/NYという余分な項が入る以外はフーリエ変
換と同じ変換を表し、具体的には、この式は、jz、ky
が特定の値であり、jxの値が異なるNX個の一次変換
結果データc'jx,ky,jzに対してフーリエ変換と類似の
変換を、jz、kyが採りうる値の組合わせの数(NY*
NZ組)だけ行い、それにより、座標jzの異なる値に
対する、3次元の波数空間の二つの座標(kx、ky)に
関する2次変換結果データ(c''kx,ky,jz)(kx=0
〜NX−1、ky=0〜NY−1、jz=0〜NZ−1)
を得る処理を表す。式7も、複素指数関数の中にkx
NY+ky/(NX*NY)という余分な項が入る以外
はフーリエ変換と同じ変換を表し、具体的には、この式
は、kx、kyが特定の値であり、jzの値が異なるNZ
個のデータc''kx,ky,jzに対してフーリエ変換と類似の
変換を、kx、kyが採りうる値の組合わせの数(NX*
NY組)だけ行い、それにより3次元の波数空間の3つ
の座標(kx,y,z)に関する最終的なフーリエ変換
結果データ(ckx,ky,kz)(kx=0〜NX−1、ky
0〜NY−1、kz=0〜NZ−1)を得る処理を表
す。したがって、これらの3つの変換は、すべて高速フ
ーリエ変換のアルゴリズムを用いて実行することができ
る。以下では、これらの変換をそれぞれY方向の変換、
X方向の変換、Z方向の変換と呼ぶ。本明細書では、こ
れらの変換を簡単化のためにそれぞれY方向のフーリエ
変換、X方向のフーリエ変換、Z方向のフーリエ変換と
呼ぶこともある。ここで、X方向等は、式2、3で定め
た座標変換できまる方向である。すなわち、一次元の順
次異なる座標点jに対応して最初に順次変化する座標が
Z座標であり、その後に変化する座標がX座標であり、
最後に変化する座標がY座標である。座標変換式を式
2、3から変更すれば、X方向等の変換の内容が変わる
のは言うまでもない。したがって、本明細書では、より
一般的には、これらの変換は以下の変換を指す。Y方向
の変換とは、式5により例示されたように、実空間の第
1、第3の座標軸の座標(jx,jz)が特定の値であ
り、第2の座標軸の座標(jy)の値が異なる複数(N
Y)個の入力データfjx,jy,jzに対してフーリエ変換を
行い、3次元実空間の第1、第3の座標軸の座標
(jx,jz)の組のひとつにそれぞれ対応する複数(N
X*NZ)組の、3次元波数空間の第2の座標軸の座標
(ky)に関連する一次変換結果データ(c'jx,ky,jz
(jx=0〜NX−1、ky=0〜NY−1、jz=0〜
NZ−1)を得る処理を指す。あるいは、言い換える
と、Y方向の変換は、入力データfjx,jy,jzに対して、
実空間の第2の座標軸に関してフーリエ変換を行い、3
次元波数空間の第2の座標軸の座標と、3次元実空間の
第1の座標軸の座標と、第3の座標軸の座標との関数で
ある一次変換結果データを得る処理を指すとも言える。
さらに、X方向の変換とは、式6により例示されたよう
に、上記第3の実空間座標系の第1の座標系の座標(j
z)と3次元波数空間の第2の座標系の座標(ky)とが
特定の値であり、上記第1の実空間座標系の座標
(jx)の値が異なる複数(NX)個の一次変換結果デ
ータ(c'jx,ky,jz)に対してフーリエ変換に類似の変
換を行い、上記第3の実空間座標軸の座標(jz)の異
なる値の一つにそれぞれ対応する複数(Nz)個の、上
記3次元の波数空間の第1、第2の座標軸の座標
(kx、ky)に関連する2次変換結果データ(c''
kx,ky,jz)(kx=0〜NX−1、ky=0〜NY−1、
z=0〜NZ−1)を得る処理を指す。あるいは、言
い換えると、X方向の変換は、一次変換結果データに対
して、3次元実空間の第1の座標軸に関してフーリエ変
換に類似の変換を行い、3次元実空間の第3の座標軸の
座標と、3次元波数空間の第1、第2の座標軸の座標と
の関数である2次変換結果データを得る処理を指すとも
言える。さらに、Z方向の変換とは、式7により例示さ
れたように、3次元波数空間の第1、第2の座標系の座
標(kx,ky)とが特定の値であり、3次元実空間の第
3の座標系の座標(jz)の値が異なる複数(NZ)個
の2次変換結果データ(c''kx,ky,jz)に対してフーリ
エ変換に類似な変換を行い、3次元波数空間の第1、第
2、第3の座標軸の座標(kx,ky,kZ)に関連す
る、入力データに対する最終的なフーリエ変換結果デー
タ(ckx,ky,kz)(kx=0〜NX−1、ky=0〜NY
−1、kz=0〜NZ−1)を得る処理を指すとも言え
る。あるいは、言い換えると、Z方向の変換は、2次変
換結果データに対して、3次元実空間の第3の座標軸に
関してフーリエ変換に類似の変換を行い、3次元波数空
間の第1、第2、第3の座標軸の座標の関数である最終
的なフーリエ変換結果データを得る処理を指すとも言え
る。Y方向の変換は、式5にて示されるように、NX*
NZ組のデータに対する互いに独立な変換からなる。同
様に、X方向の変換は、式6にて示されるように、NY
*NZ組のデータに対する互いに独立な変換からなる。
同様に、Z方向の変換は、式7にて示されるように、N
X*NY組のデータに対する互いに独立な変換からな
る。従来の転置アルゴリズムによるフーリエ変換方法で
は、この特徴を利用してプロセッサ間の通信を少なくす
るように、変換対象データを並列計算機の異なるプロセ
ッサに割り当てている。すなわち、式2に従って、ま
た、図2に例示されるように、変換対象データfj(j=
0〜N)を直方体状に並べ、3次元実空間のZ軸に並行
な平面でこのデータを分割し、図5に例示するように、
jz=0,1,,,7をそれぞれ有する複数のデータはプ
ロセッサ0,1,,7に割り当てられている。すなわ
ち、特定の値のZ座標jzを有する全ての変換対象データ
は、それらのX座標jx、Y座標jyの値に依らないで同一
のプロセッサに割り当てる。図2では、N=512,N
X=NY=NZ=8と仮定し、図4ではプロセッサの総
数NPU=8と仮定したが、これらの数値がここに仮定
の数値と異なる場合でも、特定の値のZ座標jzを有する
全ての変換対象データは、それらのX座標、Y座標の値
に依らないで同一のプロセッサに割り当てればよい。た
とえば、プロセッサの総数NPU=NX=NZとし、N
Y=(N/(NX*NZ))↑とすればよい。ここで、
( )↑は、括弧内の数値の小数点以下を切り上げた後
の整数を示す。たとえば、N=512、NPU=4のと
きには、NX=NZ=4、NY=32であればよい。こ
のようなデータの割り当てを行った後、フーリエ変換を
以下のように実行する。この方法では式5によるY方向
の変換と式6によるX方向の変換とは、プロセッサ間の
通信を使用しないで行うことができる。 (ステップ1)Y方向の変換 まず、Y方向の変換を実行する。式5から分かるよう
に、Y方向の変換では、X座標jxとZ座標jzが特定の値
であり、Y座標jyが異なる複数の変換対象データに対し
てフーリエ変換が実行される。しかし、これらの複数の
データは同じプロセッサに割り当てられている。こうし
て、各プロセッサでは、式5にしたがって、プロセッサ
間の通信を使用しないで、 X座標jxとZ座標jzが特定
の値であり、波数空間のY座標kyがいろいろの値を有
する複数の一次変換結果データが得られる。 (ステップ2)X方向の変換 次に、X方向の変換を実行する。式6から分かるよう
に、X方向の変換では、Z座標jzと波数空間のY座標k
yが特定の値であり、X座標jxが異なる複数の一次変換
結果データに対してフーリエ変換に類似の変換が実行さ
れる。しかし、これらの複数のデータは同じプロセッサ
でのY方向の変換によりすでに得られている。こうし
て、各プロセッサは、式6にしたがって、他のプロセッ
サとの通信をしないで、そのプロセッサに割り当てられ
た、3次元実空間のZ座標jzの特定の値に対する、3次
元波数空間の座標(kx,ky)に関連するNX*NY個
の2次変換結果データ(c''kx,ky,jz)(kx=0〜N
X−1、ky=0〜NY−1)を得る。 (ステップ3)データの転置 式7によるZ方向の変換を行うには、3次元波数空間の
座標(kx,ky)の特定の値と、3次元実空間のZ座標
jzの全ての値に対して得られた2次変換結果データ
(c''kx,ky,jz)が必要である。そこで、各プロセッサ
に、3次元波数空間の座標kxの特定の値を割り当て
て、Z方向の変換を実行するに必要なデータをプロセッ
サ間で転送する処理が実行される。すなわち、各プロセ
ッサへの座標kxの値の割り当てでは、プロセッサ0,
1,2,,,7には、kx=0,1,2,3,,,を順
次割り当てる。このことは、図5に示すように、3次元
波数空間を、そのkx軸に垂直な平面で分割して、分割
後の部分空間の各々を一つのプロセッサに割り当てるこ
とを意味する。各プロセッサが、そのプロセッサに割り
当てられた3次元波数空間の座標kxの特定の値と、3
次元波数空間の座標kyの全ての値と、3次元実空間の
Z座標j zの全ての値とに対して得られた全ての2次変換
結果データ(c''kx,ky,jz)を使用してZ方向の変換を
実行できるように、全プロセッサ間で2次変換結果デー
タの転送が行われる。このデータ転送は、データの転置
あるいはデータの並び替えとも言われる。すなわち、各
プロセッサは、3次元実空間のZ座標jzの全ての値と、
3次元波数空間の座標(kx,ky)の全ての値との組に
対して得られた2次変換結果データ(c''kx,ky,jz
(但し、kx=特定値、ky=0〜NY―1、kz=0〜
(NZ―1))の内、自プロセッサが生成しなかったデ
ータを他のプロセッサから受信するように、全プロセッ
サの間で2次変換結果データを転送する。 (ステップ4)Z方向の変換 各プロセッサは、そのプロセッサに割り当てられた3次
元波数空間の座標kxの特定の値と、3次元波数空間の
他の二つの座標ky,kzの全ての値を有する最終的なフ
ーリエ変換結果データckx,ky,kz(但し、kx=特定
値、ky=0〜NY―1、kz=0〜NZ―1)を計算
する。各プロセッサはこの計算を互いに並列に実行でき
る。 (ステップ5)データの転置 しかし以上の処理だけでは、変換対象データfjと変換
結果データckのデータ分割形式が異なり、実用上不便
であるという問題がある。すなわち、変換対象データf
jは、図2に示すように、3次元実空間のデータに写像
され、後者のデータは、図4にしたがって分割されて複
数のプロセッサに割り当てられた。したがって、図6に
示すように、変換対象データfjの分割は、fjを第MO
D(j,p)番のプロセッサが担当するサイクリック分
割となる。一方、変換結果データckは、図3に示すよ
うに、3次元波数空間のデータに写像され、3次元波数
空間は図5にしたがって分割されて複数のプロセッサに
割り当てられた。したがって、図7に示すように、変換
結果データckのデータ分割は、NY個の連続するデー
タを1台のプロセッサが担当するブロックサイクリック
分割となる。多くの応用では、変換対象データをフーリ
エ変換して得られる変換結果データに対してある処理を
施し、その処理結果に対して再び逆フーリエ変換を行
う。逆フーリエ変換はフーリエ変換のプログラムを流用
して行われることが多い。すなわち、次の逆フーリエ変
換の式
【数8】fjk=0 N-1kexp(2πikj/N) (ただし、j=0,1,...,N-1) ...(8) を変形すると次式が得られる。
【数9】fj=(Σk=0 N-1k *exp(-2πikj/N))* (ただし、j=0,1,...,N-1) ...(9) ここで、*印は複素共役を示す。したがって、式1aと
9の比較より明らかなように、逆フーリエ変換は、フー
リエ変換結果データの複素共役をフーリエ変換し、得ら
れた結果データの複素共役を取ることに等価である。し
たがって、原理的には、逆フーリエ変換はフーリエ変換
のプログラムを流用して実行できることが分かる。しか
し、並列計算機でフーリエ変換を実行するときには、変
換対象データと変換結果データとのデータ分割形式が異
なると、いずれかのプロセッサに割り当てられた変換対
象データに対する変換結果データがそのプロセッサに割
り当てられていないことになり、そのプロセッサは、そ
の変換結果データを他のプロセッサから受信しないとフ
ーリエ変換のプログラムを流用して逆フーリエ変換を行
うことができなくなる。このような不便を避けるため、
従来の転置アルゴリズムを使ったフーリエ変換プログラ
ムでは、上記Z方向の変換を実行した後に、3次元フー
リエ変換結果データckx,ky,kzのプロセッサへの割り当
てを変更し、再びプロセッサ間でフーリエ変換結果デー
タckx,ky,kzの転置(入れ替え)を行い、フーリエ変換
結果データckx,ky,kzのデータ分割をサイクリック分割
に直すのが一般的であった。すなわち、図8に示すよう
に、3次元波数空間を、Y座標軸に垂直な平面で切断
し、同じY座標値kyを有するフーリエ変換結果データ
kx,ky,kzを同一のプロセッサに割り当てる。具体的に
は、ky=0,1,2,,,を有するフーリエ変換結果
データckx,ky,kzを順次プロセッサ0,1,2,,,に
割り当てる。各プロセッサが、この割り当てにしたがっ
てそのプロセッサに割り当てられたフーリエ変換結果デ
ータckx,ky,kzの内、自プロセッサが生成しなかったデ
ータを他のプロセッサから受信するように、全プロセッ
サの間でフーリエ変換結果データckx,ky,kzを転送す
る。こうして、サイクリック分割された3次元フーリエ
変換結果データが得られる。こうして、得られた最終的
3次元フーリエ変換結果データckx,ky,kzから目的とす
る1次元フーリエ変換結果データckは式3より得るこ
とができる。データckとその三次元座標kx,ky,kz
との関係は図3に示されたとおりである。しかし、本発
明者による検討によれば、従来のデータのデータ入れ替
えのためのプロセッサ間での余分な通信は、並列化効率
を低下し、フーリエ変換に必要な処理時間を増大する原
因であることが判明した。そこで本発明では、従来の転
置アルゴリズムにおけるデータの分割方式を見直し、プ
ロセッサ間のデータ転送量の削減の側面から最適なデー
タ分割方式を以下のようにして決定した。従来の転置ア
ルゴリズムは、Y方向、X方向、Z方向の各変換と、プ
ロセッサ間でのデータの入れ替えを行う転置操作から構
成される。そのアルゴリズムでは、Y方向の変換を行う
際に、変換対象データの空間をZ軸に垂直な複数の平面
で切り、各面を一つのプロセッサに割り当てて、次にX
方向の変換を行う際には、その割り当てをそのまま使用
し、さらにZ方向の変換を行う際には、X軸に垂直な複
数の平面で変換対象データの空間を切り、各面を一つの
プロセッサに割り当てていた。これにより、その変換そ
のものは、プロセッサ間のデータ転送なしに実行でき
た。しかし、たとえば最初のY方向の変換を行う際に
は、変換の対象となる同一のX座標とZ座標を持つNY
個のデータが1台のプロセッサ上にありさえすれば、そ
の変換そのものは、プロセッサ間のデータ転送なしに実
行できる。したがって、この変換対象データの分割は、
Z軸に垂直な平面によってではなく、X軸に垂直な平面
によって行ってもよい。このことは、X方向、Z方向の
変換についても言える。したがって、望ましいデータ分
割方式が満たすべき第一の条件は、「ある方向の変換を
行うときには、その変換の変換対象データをその方向以
外の方向に垂直な複数の平面で分割してプロセッサへの
データ割り当てをする」というデータ分割形式が、Y方
向、X方向、Z方向のすべてに採用されていることであ
る。今ひとつ考慮すべきことは転置のためのデータ転送
回数である。たとえば、Y方向、X方向、Z方向の変換
を行うとき、変換対象データをそれぞれZ軸、Y軸、X
軸に垂直な複数の平面で切って分割するというデータ分
割方式は、上記の第1の条件を満たすが、このデータ分
割方式では、データ分割形式がX方向、Z方向の変換を
行うときという2回にわたって変更され、その変更の度
に転置のためのデータ転送が必要になる。したがって、
望ましいデータ分割方式が満たすべき条件として、上記
の第1の条件に加えて、「データ分割形式の変更のため
の転置処理は一回に限る」という第二の条件を付加す
る。これら2つの条件を満たすデータ分割方式を数え上
げた結果を図9に示す。上記第1、第2の条件を満たす
データ分割方式は4通りあり、これらの内で、フーリエ
変換対象データのデータ分割形式とフーリエ変換結果デ
ータのデータ分割形式が同一のデータ分割方式が求める
ものである。方式1が従来の転置アルゴリズムで採用さ
れているものである。方式4は入力データがX方向に分
割、出力データがY方向に分割だから、図3および図6
と照らし合わせてみると、フーリエ変換対象データがブ
ロックサイクリック分割、フーリエ変換結果データがサ
イクリック分割であり、方式1とはデータ分割形式がち
ょうど逆になってはいるものの、これらの二つの種類の
データの間でデータ分割形式が異なるという方式1と同
様の欠点を抱えていることがわかる。一方、方式2で
は、従来の転置アルゴリズムと同じく、フーリエ変換対
象データがZ方向に沿って分割され、Y方向の変換、X
方向の変換も従来の転置アルゴリズムと同じように実行
されるが、Z方向の変換は、従来の転置アルゴリズムと
異なり、X方向の変換の結果データがY方向に沿って分
割された後に実行される。X方向の変換とZ方向の変換
の間では、データ転置が必要である。図2および図3と
照らし合わせてみると、フーリエ変換対象データもフー
リエ変換結果データもサイクリック分割になることが分
かる。したがって、方式2のデータ分割方式を採用する
と、フーリエ変換係数の計算後にプロセッサ間でデータ
転送を行わなくても、フーリエ変換対象データとフーリ
エ変換結果データとが同じデータ分割形式を保つ。この
方式2では、フーリエ変換は具体的には以下のようにし
て実行される。以下に記載するY方向、X方向、Z方向
の変換はFFTのアルゴリズムにより計算される。 (ステップa)Y方向の変換 Y方向の変換は、従来の転置アルゴリズムについて既に
述べたステップ1の要領で実行される。既に述べたごと
く、フーリエ変換対象データのデータ分割は、サイクリ
ック分割である。 (ステップb)X方向の変換 さらに、X方向の変換は、Y方向の変換の結果データに
対して、従来の転置アルゴリズムについて既に述べたス
テップ2の要領でなされる。 (ステップc)データ転置 式7によるZ方向の変換を行うには、3次元波数空間の
座標(kx,ky)の特定の値と、3次元実空間のZ座標
jzの全ての値に対して得られた2次変換結果データ
(c''kx,ky,jz)が必要である。方式2では、従来の転
置アルゴリズムと異なり、X方向の変換で得られた2次
変換結果データ(c''kx,ky,jz)は、Y軸に垂直な複数
の平面で分割される。このことは、図8に示すように、
3次元波数空間を、そのky軸に垂直な複数の平面で分
割して、分割後の部分空間(上記複数の平面)の各々を
一つのプロセッサに割り当てることを意味する。すなわ
ち、各プロセッサへ座標kyの特定の値を割り当てる。
具体的には、kx=0,1,2,3,,,の2次変換結
果データ(c''kx,ky,jz)を順次プロセッサ0,1,
2,,,7に割り当てる。この割り当てに従い、Z方向
の変換を実行するに必要なデータをプロセッサ間で転送
する処理が実行される。各プロセッサが、そのプロセッ
サに割り当てられた3次元波数空間の座標kyの特定の
値と、3次元波数空間の座標kxの全ての値と、3次元
実空間のZ座標jzの全ての値とに対して得られた全ての
2次変換結果データ(c''kx,ky,jz)を使用してZ方向
の変換を実行できるように、全プロセッサ間で2次変換
結果データの転送が行われる。すなわち、各プロセッサ
は、3次元実空間のZ座標jzの全ての値と、3次元波数
空間の座標kxの全ての値と、座標kyの特定の値との組
に対して得られた2次変換結果データ(c''kx,ky,jz
(但し、kx=0〜(NX―1)、ky=特定値、kz
0〜(NZ―1))の内、自プロセッサが生成しなかっ
たデータを他のプロセッサから受信するように、全プロ
セッサの間で2次変換結果データを転送する。 (ステップd)Z方向の変換 各プロセッサは、そのプロセッサに割り当てられた3次
元波数空間の座標kyの特定の値と、3次元波数空間の
他の二つの座標kx、kzの全ての値を有する最終的なフ
ーリエ変換結果データckx,ky,kz(但し、kx=0〜N
X―1、ky=特定値、kz=0〜NZ―1)を計算す
る。各プロセッサはこの計算を互いに並列に実行でき
る。この結果、座標ky=0,1,2,3,,,に対応
するフーリエ変換係数c0,c1,c2,,,が、順次プ
ロセッサ0,1,2,,,で生成され、全フーリエ変換
結果データckx,ky,kzは、プロセッサ間でサイクリック
に分割されていることが分かる。本実施の形態では、上
記データ分割方式2を使用する。なお、データ分割方式
3も後に詳細に説明するように、フーリエ変換対象デー
タもフーリエ変換結果データもサイクリック分割になっ
ている。したがって、この方式3も使用することができ
る。後に述べるように、実際にフーリエ変換ライブラリ
を構成する場合に、方式3は、方式2に比べて、ライブ
ラリが生成する複素指数関数の値のテーブルのサイズが
小さくてよいという利点を有する。なお、計算機により
入力データfjに対して以上の変換を実施するときに
は、一般に配列データが使用される。すなわち、同じプ
ロセッサでY方向の変換を施すべき一群のデータは、3
次元配列に格納され、その配列に対してY方向の変換が
実行される。その結果得られた1次変換結果データは、
同じ配列あるいは他の3次元配列に格納されてもよい。
他の方向の変換も先に実行された変換の結果データを格
納する配列に対してなされる。また、プロセッサ間での
データの転置も各プロセッサが生成した配列の内容を交
換するようになされる。したがって、このようにそれら
の変換において同じ3次元配列を使用するときには、そ
の3次元配列の各次元のインデックスは、あるときには
3次元実空間の各座標軸に対応し、他の時にはある方向
の変換後の結果データが属する3次元空間の各座標軸に
対応し、最終的にはフーリエ変換係数が属する3次元波
数空間の各座標軸に対応することになる。しかし、この
ように同じ配列を異なる種類の一群のデータの格納に使
用された場合でも、ある時点でその配列に格納されてい
る一群のデータは、その一群のデータが属する3次元空
間に属し、その配列の各インデックスは、その一群のデ
ータが属する3次元空間のいずれかの座標軸を表すこと
には変わりはない。したがって、本発明を実施するにあ
たって一群のデータを格納するのに使用する配列の具体
的な構造は特定のもの限定されない。さらに、以上の原
理で説明したいくつかの3次元空間のいずれか一つに属
する一群のデータを格納する配列の構造が、その3次元
空間に直接対応しないものであっても、その配列に含ま
れた各データは、その3次元空間の座標を有すると見な
すことができ、以上の原理説明がその配列に対してもあ
てはまるのは言うまでもない。 (3) 多次元フーリエ変換への応用 以上、1次元フーリエ変換のためのアルゴリズムを説明
したが、本方式は多次元フーリエ変換の場合へも簡単に
拡張できる。次式の2次元フーリエ変換を例に採って説
明する。
【数10】 ck1,k2=(1/N1N2j1=0 N1-1Σj2=0 N2-1j1,j2 *exp(-2πi(k11/N1+k22/N2)) (ただし、k1=0,1,... ,N1-1,k2=0,1,...,N2-1) ...(10) この式は、次式11に変形できる。この式11は、更に
次の2ステップからなる変換式11a、11bとして書
くことができる。
【数11】 ck1,k2=(1/N2j2=0 N2-1exp(-2πik22/N2) *(1/N1j1=0 N1-1j1,j2 *exp(-2πik11/N1) ...(11) c'k1,j2=(1/N1j1=0 N1-1j1,j2 *exp(-2πik11/N1) ..(11a) ck1,k2=(1/N2j2=0 N2-1c'k1,j2 *exp(-2πik22/N2) ...(11b) したがって、2次元フーリエ変換は、まず式11aのよ
うにN1個のデータに対する1次元フーリエ変換をN2
行い、次に式11bのようにN2個のデータに対する1
次元フーリエ変換をN1組行うことに帰着する。したが
って、これらの1次元フーリエ変換において、本発明の
方式を適用できる。本発明の方式を用いて並列計算機上
で2次元フーリエ変換を行うには、2次元データf
j1,j2に対し、添え字j1の方向(以下、これを第1方向
と呼ぶ)にサイクリック分割を行う。すなわち、第i番
目のプロセッサにfm*NPU+i,j2(但し、m=0,1,...,((N1
/NPU)-1)、j2=0,1,...,N2)番目の要素を割り当てる。こ
こで、NPUはプロセッサの台数である。すると、式1
1aのステップは、j2が同じN1個の要素の間での1次
元フーリエ変換をN2組行うことであり、このN1個の要
素はプロセッサ間にサイクリック分割されているから、
このステップは本発明の方式による1次元フーリエ変換
をN2組行うことに帰着する。変換後のデータc'k1,j2
は、第1方向にサイクリック分割されている。次に式1
1bのステップでは、j1が同じN2個の要素の間での1
次元フーリエ変換をN1組行うが、これらN2個の要素は
同一プロセッサ上にあるため、この変換は通信なしに各
プロセッサごとに独立に行える。以上により2次元フー
リエ変換が完了し、変換後のデータck1,k2は第1方向
にサイクリック分割される。なお、以上では2次元の場
合を示したが、より次元の大きい場合も、第1方向にサ
イクリック分割を行い、第1方向の変換のみを本発明の
方式を用いて行い、以下の変換はプロセッサごとに独立
に行うことにより、本発明のフーリエ変換方式を適用可
能である。 (4)並列高速フーリエ変換ライブラリ 図1に戻り、並列計算機28上で使用される高速フーリ
エ変換ライブラリは、具体的には、たとえば以下のよう
に構成される。但し、本発明を適用したフーリエ変換ラ
イブラリは、これに限定されないことは言うまでもな
い。本ライブラリは、全てのプロセッサにロードされ、
そのプロセッサ内のシミュレーションプログラムから必
要に応じてサブルーチンとしてコールされる。サブルー
チン名称をFFT1Dとし、これを実行するには CALL FFT1D (NX, NY, NZ, NPU, F, TB, IOPT, IER) のように所定の引数を指定して、いずれかのプロセッサ
にロードされたすべてのシミュレーションプログラムか
ら同時にコールする必要がある。ここで、N=NX*N
Y*NZはフーリエ変換対象データfjの個数、NPU
はプロセッサ台数、Fはライブラリのコール時はフーリ
エ変換対象データfj、ライブラリからのリターン時は
フーリエ変換結果データckを格納する配列、TBは複
素指数関数の値を格納するテーブル、IOPTはサブル
ーチンの機能を指定する入力、IERは実行時エラーが
生じたか否かを示す出力である。ここで、配列Fは各プ
ロセッサがそれぞれ持つ部分配列である。フーリエ変換
の原理説明で説明したように、全入力データ(フーリエ
変換対象データ)fjは、図2のように3次元実空間に
直方体状に配置され、各プロセッサには、この直方体の
内、一つまたは複数の特定のZ座標を有するZ軸に垂直
な平面に属する入力データが割り当てられる。この割り
当てられた入力データが、上記引数Fで指定される部分
配列に格納されている。すなわち、フーリエ変換対象デ
ータとフーリエ変換結果データは、ともにサイクリック
分割されるので、第i番目のプロセッサは、m*NPU
+i(m=0,1,...,N/NPU−1)番目の要
素のみを持つ。すなわち、第i番目のプロセッサの配列
Fには、N個の入力データ列fj(j=0〜N−1)の
内、次式で示されるように、一群の入力データf
m*NPU+iを格納する。 F(m)=fm*NPU+i(m=0,1,...,N/NPU- 1) したがって各プロセッサの持つ配列Fの大きさはN/N
PUである。また、TBは、第1回目のコールで計算し
た複素指数関数の値を格納しておくテーブルであり、2
回目のコールからはここに格納した値を再利用すること
により、新たな計算が不要となる。また、第1回目のコ
ールではIOPT=1を指定し、このときは複素指数関
数のテーブルを作成する。IOPT=2は2回目以降の
コールを意味し、このときは既にTBに格納されている
値を用いる。本ライブラリのフローチャートを図10に
示す。本ライブラリは、コールされると (ステップ4
5) 、まず引数をチェックする(ステップ46)。す
なわち、N=NX*NY*NZとNPUとが1以上の整
数であるかどうか、IOPTが1または2の値であるか
どうかなど、引数の有効性を調べる。入力データに無効
な値が入っていた場合は、IER=1000と設定して
(処理47)リターンする。次に、他のプロセッサに本
ライブラリがコールされたことを通知する(ステップ4
8)。この通知は、実際には、そのライブラリがロード
されている通信ライブラリに、他の全てのプロセッサに
当該プロセッサでのライブラリコールの発生を通知する
ことを要求し、その通信ライブラリが、その発生を他の
全てのプロセッサに通知するメッセージを送信し、それ
ぞれの他のプロセッサでは、そこにロードされた通信ラ
イブラリが、このメッセージを受信して、そのプロセッ
サでロードされた本ライブラリに、送信元のプロセッサ
での本ライブラリのコールを通知する。次に、ライブラ
リが引数で指定した通りにNPU台のプロセッサでコー
ルされているかどうかをチェックする(ステップ4
9)。このチェックは、上に述べた他の全てのプロセッ
サから本ライブラリに対するライブラリコールが発生し
たとの通知を受信したか否かに基づいて行われる。この
条件が満たされていない場合は、IER=2000と設
定して(ステップ50)リターンする。次にIOPTの
値をチェックし(ステップ51)、IOPT=1の場合
は、現在のコールが、最初のコールである。したがっ
て、そのコール元のプロセッサでのフーリエ変換を実行
するための準備を行う。具体的には、X、Y、Zの方向
の変換のために、そのプロセッサで式5,6,7で使用
する複素指数関数の値を前もって計算し、複素指数関数
のテーブルを生成し、配列TBとして格納する(ステッ
プ55)。計算すべき複素指数関数の値は、そのプロセ
ッサに対するデータの割り当てにより定まる。すなわ
ち、X、Y、Zの方向の変換の各々においてそのプロセ
ッサが処理すべきデータの3次元実空間の座標jx
y,jzと3次元実空間の座標kx,ky,kzとを決定
し、この結果により、式5から7の複素指数の偏角が採
りうるいろいろの値を決定し、それぞれの偏角に対する
余弦関数の値と正弦関数の値を計算し、配列TBに格納
する。上記決定では、各方向での変換に使用されるデー
タ分割形式とそのコール元のプロセッサに予め割り当て
られたプロセッサ番号と、式2、3が使用される。この
プロセッサ番号は、シミュレーションプログラムのロー
ド時に予め各プロセッサに並列計算機28により指定さ
れるものである。各方向での変換に使用されるデータ分
割形式は、使用されるデータ分割方式、本実施の形態で
は前述の方式2、により定まる。なお、IOPT=1で
ない場合は、現在のコールが、2回目以降のコールであ
る。このようなコールは、ライブラリのコール元のシミ
ュレーションプログラムが、異なる物理量に対するフー
リエ変換を行うようにプログラムされている場合におい
て生じる。たとえば、シミュレーションプログラムが、
第1の物理量に対するフーリエ変換のために本ライブラ
リをコールした後に、第2の物理量に対するフーリエ変
換のために本ライブラリを再度コールした場合である。
この場合、第2の物理量を表すフーリエ変換対象データ
も第1の物理量を表すフーリエ変換対象データと同じ添
え字を有することが多い。この場合には、第2の物理量
に対するフーリエ変換の実行時に、先に配列BTに格納
した複素指数の値が使用できる。したがって、IOPT
=1でない場合は、ステップ55を実行しない。次に、
Y方向の変換を行う(ステップ56)。本実施の形態で
は、全プロセッサが持つフーリエ変換対象データを仮想
的に図2のような各辺の長さが引数NX,NY,NZの
直方体状に並べ、図4に示すように、特定の座標を有す
るフーリエ変換対象データを同一のプロセッサに割り当
てられる。このY方向の変換では、既にステップ1ある
いはステップaとして述べたように、各プロセッサは、
同じX座標とZ座標とを持つNY個のデータについて、
高速フーリエ変換が式5に従い行う。このようなデータ
の組は全部でNX*NZ組あるため、結局、NX*NZ
個の独立なNY次の高速フーリエ変換を行うことにな
る。プロセッサへのデータの割り当て方式より、各XY
平面は1台のプロセッサに担当されているから、この変
換処理は通信なしに各プロセッサで独立に行える。本ラ
イブラリの場合、本ライブラリにより各プロセッサが処
理すべき変換対象データは、そのプロセッサで実行され
るシミュレーションプログラムにより、引数Fで指定さ
れる配列として、そのプロセッサのメモリ(26(図
1))にコール前に格納されている。その配列Fの添え
字と3次元実空間の座標jx,jy,jzとの関係は、デ
ータ分割形式により定まる。したがって、このY方向の
変換では、この関係を使用して配列F内の変換対象デー
タに対して式5で指定される変換を実行する。変換で得
られた一次変換結果データはそのプロセッサのメモリに
記憶される。具体的には、各プロセッサでは、本ライブ
ラリがコールされると、適当なタイミングで(たとえ
ば、ステップ46で入力データに無効な値が入っていな
いと判定された時)、各プロセッサは、データ格納用の
3次元配列及び第1、第2、第3の3次元の作業配列を
メモリ上に確保する。ここでは、データ格納用の3次元
配列は、3次元のインデックスの長さが引数NX、N
Y、NZに等しい。以下ではこれらの3次元の作業配列
もデータ格納用の3次元配列と同じ大きさを有すると仮
定する。しかし、これらの3次元の作業配列は、以下に
説明するデータを格納できる大きさを有すればよく、し
たがって、これらの作業配列の大きさは適宜変更可能で
ある。さらに、これらの3次元の作業配列の構造も、そ
の使用目的に合致する限り、変更することができる。デ
ータ格納用の3次元配列には、上記引数が指定する配列
Fに含まれるデータ点列を以下のようにして格納でき
る。そのプロセッサに、図2のZ軸に垂直な一つの平面
が割り当てられているときには、その一つの平面に属す
るNX*NY個の入力データが、それぞれのデータの
X、Y、Z座標に対応する、上記データ用3次元配列の
インデックスを有する位置に格納される。そのプロセッ
サにZ軸に垂直な複数の平面が割り当てられたときに
は、各面のデータは同様にして、上記データ用3次元配
列の対応するインデックスの位置に格納される。各プロ
セッサでは、Y方向の変換はこのデータ格納用の配列を
使用して、Z座標が特定の値を有し、Y座標とX座標が
いろいろの値を有する一群の入力データに対して、式5
により行なわれる。このとき、Z座標が特定の値を有
し、X座標が異なる一群の入力データに対してY方向の
変換が高速フーリエ変換アルゴリズム(FFT)を用い
て実行される。この変換の実行にあっては、X座標が異
なる一群のデータに対して、プロセッサ内のベクトル演
算器(図示せず)が使用され、パイプライン的に計算が
実行される。その結果得られる1次変換結果データc’
jx,ky,jz(但し、jx=0〜NX−1,ky=0〜NY−
1,jz=特定値)は、第1の3次元の作業配列の、こ
れらの座標値jx,ky,jzに対応するインデックスの
ところに格納される。したがって、図2の場合、各プロ
セッサでは、図2の一つの平面上の一群の入力データに
対する1次変換結果データc’jx,ky,jzが、第1の3次
元作業配列の、特定の座標jzを有する平面上に格納さ
れる。もし、図2において、Z軸に垂直な複数の平面に
属する入力データがそのプロセッサに割り当てられてい
るときには、それぞれのZ面に対応する、上記第1の3
次元作業配列内の、Z軸に垂直な複数の平面のそれぞれ
に対応する1次変換結果データc'jx,ky,jzが格納され
る。Y方向の変換の終了後、同様にしてX方向の変換を
行う(ステップ57)。すなわち、各プロセッサは、す
でにステップ2あるいはステップbとして述べたよう
に、各プロセッサは、Y方向の変換で得られた一次変換
結果データに対して式6で指定される変換を実行する。
変換で得られた2次変換結果データはそのプロセッサの
メモリに記憶される。この変換処理も通信なしに各プロ
セッサで独立に行える。具体的には、各プロセッサで
は、X方向の変換は、Z座標が特定の値を有し、X座標
とky座標とがいろいろの値を有する一群の1次変換結
果データc’jx,ky,jzに対して、式6により行なわれ
る。このとき、Z座標が特定の値を有し、ky座標が異
なる一群の入力データに対してX方向の変換が高速フー
リエ変換アルゴリズム(FFT)を用いて実行される。
この変換は、上記第1の3次元作業配列を使用して実行
される。この変換の実行にあっては、ky座標が異なる
一群のデータに対して、プロセッサ内のベクトル演算器
が使用され、計算がパイプライン的に実行される。その
結果得られる2次変換結果データc''kx,ky,jz(但し、
kx=0〜NX−1,ky=0〜NY−1,jz=特定値)
は、第2の3次元作業配列の、これらの座標値kx
y,jzに対応するインデックスのところに格納され
る。したがって、図2の場合、各プロセッサでは、2次
変換結果データc''kx,ky,jzは、第2の3次元作業配列
の、特定の座標jzを有する一つの平面に格納される。
もし、図2において、Z軸に垂直な複数の平面に属する
入力データがそのプロセッサに割り当てられているとき
には、それぞれのZ面に対応する、上記第2の3次元作
業配列内の、Z軸に垂直な複数の平面のそれぞれに対応
する2次変換結果データc''kx,ky,jzが格納される。X
方向の変換の終了後、プロセッサ間でのデータの転置
(入れ替え)を行う。すなわち、今度は既にステップc
で述べたように、2次変換結果データの直方体を図8の
ようにY軸に垂直にスライスし、こうしてできる各面を
一つのプロセッサに割り当てる(ステップ58)。既に
ステップcで述べたように、この割り当てに従い、各プ
ロセッサが自分以外の全プロセッサとの間でそれぞれの
プロセッサが生成した2次変換結果データの交換を行
う。具体的には、この転置時には、各プロセッサは、上
記第2の作業配列に、そのプロセッサに割り当てられた
座標kyの値を有するY軸に垂直な平面に属すべき、ky
が特定値で、kx,jzが種々の値を持つ2次変換結果デ
ータc''kx,ky,jz(但し、kx=0〜NX−1,ky=特
定値,jz=0〜NZ−1)を受信するように、プロセ
ッサ間で2次変換結果データc''kx,ky,jzを交換する。
転置の終了後、Z方向の変換を行う(ステップ59)。
すなわち、各プロセッサは、既にステップdで記載した
ように、そのプロセッサに新たに割り当てられた2次変
換結果データに対して、式7により指定される変換を実
行し、最終的な3次元のフーリエ変換結果データを生成
する。転置により各XZ平面は1台のプロセッサに担当
されているから、この変換処理も通信なしに各プロセッ
サで独立に行える。具体的には、各プロセッサでは、Z
方向の変換は、ky座標が特定の値を有し、kx座標とZ
座標とがいろいろの値を有する一群の2次変換結果デー
タc''kx,ky,jzに対して、式7により行なわれる。この
とき、ky座標が特定の値を有し、kx座標が異なる一群
の入力データに対してZ方向の変換が高速フーリエ変換
アルゴリズム(FFT)を用いて実行される。この変換
は、上記第2の3次元作業配列を使用して実行される。
この変換の実行にあっては、kz座標が異なる一群のデ
ータに対して、プロセッサ内のベクトル演算器が使用さ
れ、計算がパイプライン的に実行される。その結果得ら
れる最終フーリエ変換結果データckx,ky,kz(但し、kx
=0〜NX−1,ky=特定値,kz=0〜NZ−1)
は、第3の3次元作業配列の、これらの座標値kx
y,kzに対応するインデックスのところに格納され
る。したがって、図8のように、一つのプロセッサに一
つの座標kyを有す一つの平面が割り当てられた場合、
各プロセッサでは、最終フーリエ変換結果データc
kx,ky,kzは、上記第3の3次元作業配列の、特定の座標
yを有する一つの平面に格納される。もし、図8にお
いて、ky軸に垂直な複数の平面がそのプロセッサに割
り当てられているときには、それぞれの平面に対応す
る、上記第3の3次元作業配列内の、ky軸に垂直な複
数の平面のそれぞれに対応する最終フーリエ変換結果デ
ータckx,ky,kzが格納される。Z方向の変換が終了する
と、一次元の変換対象データfjのフーリエ変換が終了
し、重ね合わせの係数ckが求まる。ckの並び方は、原
点からまずY方向に、Y方向にNY個行ったら次はX座
標が1だけ増え、XY平面上にNX*NY個のデータが
並んだら次はZ座標が1だけ増える、という順で並ぶ
(図3)。このデータの並び方と図8のデータの分割形
式とを照らし合わせることにより、本実施の形態では、
出力データckもサイクリック分割になっていることが
わかる。上記第3の3次元作業配列内でも、最終フーリ
エ変換結果データckx,ky,kzはこの並びに対応する並び
を有する。ライブラリはこのデータckx,ky,kzを一次元
座標kの順に並び替えて一次元配列Fに格納し(ステッ
プ61)、リターンする(ステップ62)。本ライブラ
リでは、従来法で必要であった変換後のデータ分割形式
の変更が不要となり、通信の削減により従来法を上回る
並列化効率を得ることが可能となり、フーリエ変換時間
を低減できる。なお、NX,NY,NZの決め方として
は、プロセッサ台数をpとすると、Y方向、X方向の変
換でZ方向に垂直な面でデータを分割することから、N
Z≧pが成り立つ必要がある。また、Z方向の変換では
Y方向に垂直な面でデータを分割することから、NY≧
pも成り立つ必要がある。また、並列計算機28の各プ
ロセッサ29がベクトル演算器(図示せず)を備えると
仮定した。このような並列計算機では、このベクトル演
算器を効率的に使うためには、ベクトル化の対象となる
ループの長さ(すなわち、同じ演算を受けるデータ群
(ベクトルデータ)の要素数であり、ベクトル長とも言
われる)をできるだけ長く取る必要があることが知られ
ている。本アルゴリズムで式5から7を計算するときに
は、このベクトル演算器が使用される。ベクトル化の対
象となるループは、フーリエ変換にも並列化にも使わな
い座標軸の方向で複数のデータに対して同じ演算を実行
する計算であり、Y方向、X方向、Z方向の変換におい
て、それぞれX方向、Y方向、X方向での演算となる。
したがって、ベクトル演算器の性能を引き出すには、N
Y≧p,NZ≧pの2つの条件を満たしつつNXとNY
をできるだけ大きく取るようにNX,NY,NZを決め
ることが望ましい。なお、並列計算機28は、ベクトル
演算器を有すると仮定したいが、この演算器がフーリエ
変換において必要な全ての演算の一部の演算をパイプラ
イン的に実行できるものでもよい。さらに、並列計算機
28がベクトル演算器を有しない並列計算機であって
も、ループ長を大きくすることが高速化に有効である場
合が多い。また、以上の動作の説明では、並列計算機2
8がメモリ29と演算器(図示せず)の間に複数のベク
トルレジスタを有しないと仮定し、各方向の変換で利用
される配列はメモリ29から直接演算器に読み出され、
あるいはその変換で生成される配列はメモリ29に直接
演算器から書き込まれるかのように説明した。しかし、
複数のベクトルレジスタを有する並列計算機では、メモ
リ29上の配列に対する演算あるいはその演算の結果得
られた配列のメモリ29への格納は、これらのレジスタ
を介して実行させればよいことは当業者に明らかであ
る。本実施の形態では本ライブラリは逆フーリエ変換を
実行するためのプログラムを有しない。後で説明するよ
うに、シミュレーションプログラムが逆フーリエ変換を
必要とするときには、シミュレーションプログラムの方
で、逆フーリエ変換の対象のデータの複素共役データを
生成し、そのデータに対してフーリエ変換を本ライブラ
リに要求する。この複素共役データに対して得られたフ
ーリエ変換データの複素共役をシミュレーションプログ
ラムが生成する。しかし、本ライブラリにフーリエ変換
の機能を持たせることもできる。すなわち、本ライブラ
リの引数としてフーリエ変換か逆フーリエ変換かを指定
する引数を追加し、シミュレーションプログラムが逆フ
ーリエ変換を要求したときには、本ライブラリで、変換
対象データの複素共役を求め、これにフーリエ変換を上
記のようにして実行し、得られた結果データの複素共役
を求め、それを逆フーリエ変換結果データとしてシミュ
レーションプログラムに戻せばよい。 (5)シミュレーションプログラム 本実施の形態において使用するシミュレーションプログ
ラムの例として気象計算のための並列プログラムを図1
1に示す。気象計算は本来3次元の計算であるが、現在
は計算機能力の制約から2次元で行うことも多い。そこ
で本実施の形態では、2次元の気象予測対象とする領域
(これが計算対象領域となる)の場合を例にとってシミ
ュレーションプログラムを説明する。ユーザは、予め全
計算対象領域を複数の部分計算領域に区分し、それぞれ
をいずれか一つのプロセッサに割り当てる。さらに、各
部分計算領域のサイズN1,N2、フーリエ変換で用い
るNX,NY,NZなどのパラメータを指定する。ユー
ザが本プログラムを並列計算機28で使用するときに
は、まず、ワークステーション1が、並列計算機28内
の特定のプロセッサ(たとえばプロセッサ0)と交信し
て、このプログラムと上記ユーザ指定の情報と、空気の
熱伝導率などの計算に使用する物質定数と、全計算対象
領域に内の観測によって得られた温度・風速・圧力など
の初期値データとを、その特定のプロセッサ0を介して
外部記憶装置31に記憶する。その後、その特定のプロ
セッサ0が、各プロセッサに本プログラムをロードし、
全プロセッサで本プログラムを起動する。本プログラム
は、並列計算機28内の全プロセッサで全く同じように
して並行して実行される。本プログラムでは、起動され
ると、まず計算領域のサイズN1,N2、フーリエ変換
で用いるNX,NY,NZ、空気の熱伝導率などの物質
定数などのパラメータと、観測によって得られた温度・
風速・圧力などの初期値データとを外部記憶装置31か
ら入力する(ステップ32)。本プログラムは、それが
ロードされたプロセッサがどの部分計算領域に関する計
算を実行するかを判断するようにプログラムされている
と仮定する。このステップでは、各プロセッサは、プロ
セッサに依らないで使用される上記パラメータを入力す
るとともに、外部記憶装置31に記憶された全計算対象
領域に対する初期値データの内、そのプロセッサに割り
当てられた部分計算領域に関する初期値データを選択し
て外部記憶装置31から入力する。なお、上記(3)の
「多次元フーリエ変換への応用」の項で述べたように、
本発明の方式による2次元高速フーリエ変換では、入力
データが第1の座標方向にサイクリック分割されている
必要がある。すなわち、サイズN1×N2のメッシュ上
で定義されたある物理量Aj1,j2(ただしj1=0, 1,
... ,N1−1,j2=0, 1, ... ,N2−1)の
うち,要素Am*NPU+i,j2(m=0,1,...,N1/NPU
−1,i=0,1,...,NPU−1, j2=0, 1,
... ,N2−1)は第i番目のプロセッサに割り当てら
れている必要がある。そこで,本実施の形態のシミュレ
ーションプログラムでも,2次元高速フーリエ変換での
入力形式に合わせて,このように第1の座標方向をサイ
クリック分割することによって得られる部分計算領域を
用いる。その後計算に必要な前処理を行う(ステップ3
3)。ここで前処理とは、観測によって得られた温度・
風速・圧力などのデータに対して補間を行い、計算に必
要なメッシュポイントでの温度・風速・圧力などのデー
タを得ることである。これらの処理が終わった後、以下
に説明する繰り返しループにより各時間ステップでの温
度・風速・圧力などの量を順々に求めていく。基礎とな
る方程式は、以下に示す風速に対する運動方程式、質量
保存の式、温度変化を表す式の3本である。
【数12】 du/dt=−2Ω×u−(1/ρ)∇p+Fu ,...(12)
【数13】 dρ/dt=−ρ∇・u ...(13)
【数14】 dT/dt=−κ∇2T+u・∇T ...(14) ここで、uは風速、pは圧力、Tは温度を表し、Ωはコ
リオリ力と呼ばれる地球の自転による力、Fuはそれ以
外の外力、ρは空気の密度、κは空気の熱伝導率を表
す。これらの式から次の時刻でのデータの値を求めるに
は、まずフーリエ変換により格子点上の温度T、圧力p
および風速uをそれぞれ波数空間でのデータに変換す
る。そのために、それぞれの物理量についてのデータに
ついて2次元高速フーリエ変換ライブラリFFT2Dを
順次コールする(ステップ34)。ライブラリFFT2
Dのコール時には、既に述べた引数を指定する。波数空
間でそれぞれの物理量のデータを微分する(ステップ3
5)。すなわち、ライブラリFFT2Dから与えられ
る、各物理量に関するフーリエ変換係数データを波数空
間で微分し、その物理量についての、波数空間の格子点
上での温度勾配∇T、2次微分∇2T、圧力勾配∇p、
風速の発散∇・u等の微分に関連するデータを求める。
各物理量についての上記微分に関連するデータを逆フー
リエ変換して、実空間の格子点上での温度勾配∇T、2
次微分∇2T、圧力勾配∇p、風速の発散∇・u等の微
分に関連するデータを求める(ステップ36)。逆フー
リエ変換するには、すでに述べた式8、9を使用する。
すなわち、各物理量についての上記微分後のデータの複
素共役なデータを生成し、ライブラリFFT2Dをコー
ルしてこの複素共役なデータに対するフーリエ変換を要
求する。さらに、得られたフーリエ変換結果データの複
素共役なデータを生成し、この生成された複素共役なフ
ーリエ変換結果データを逆フーリエ変換結果データとし
て使用する。この後、上記逆フーリエ変換で得られた微
分に関連するデータを、式12−14の右辺に代入し、
風速u、空気密度ρ、温度Tのそれぞれに関する時間微
分を決定し、得られたそれらの時間微分を用いて、次の
時間ステップでの温度・風速・圧力を求める(ステップ
37)。なお、ステップ34,35,36で、フーリエ
変換により実空間上の格子点のデータを波数空間上のデ
ータに変換してそこで微分関連データを求め、得られた
微分関連データを逆フーリエ変換して実空間に関する微
分関連データを得るのは、その方が微分が精度良く計算
できるからであり、本シミュレーションプログラムで
は、この計算部分で2次元フーリエ変換ライブラリFF
T2Dを用いる。上記のループでは、各時間ステップ毎
に、求める時刻までの計算が終了したかどうかを判定し
(ステップ38)、終了したら、後処理を行い(ステッ
プ39)、予測結果データとして出力する(ステップ4
0)。後処理では、主に計算を行うメッシュポイントと
予測結果データが必要な点とがずれている場合に、計算
結果データを補間して必要な点での予測値を計算するな
どの処理を行う。出力処理40では、各プロセッサは、
生成したデータを外部記憶装置31に書き戻し、上記特
定のプロセッサはシミュレーションプログラムの実行終
了時に、このデータをワークステーション1に一つの結
果データとして転送する。なお、以上ではシミュレーシ
ョンプログラムは、並列計算機28内の全プロセッサで
全く同じようにして並行して実行されると仮定した。さ
らに、それがロードされたプロセッサがどの部分計算領
域に関する計算を実行するかを判断するようにプログラ
ムされていると仮定する。しかし、本発明に依るフーリ
エ変換を利用するプログラムはこのようなプログラムに
限定されないことはいうまでもない。上記フーリエ変換
ライブラリFFT2Dを使用するには、それぞれのライ
ブラリが要求する上記複数の引数を指定することが必要
であり、それらの引数の生成あるいは獲得は他の方法で
も良い。たとえば、本プログラムは、並列計算機28内
の特定の一つのプロセッサで実行される単独処理部分と
全プロセッサで並行して実行される並列処理部分とから
構成されてもよい。たとえば、本プログラムがいずれか
のプロセッサで起動されたときに、そのプロセッサが上
記特定の一つのプロセッサであるときにその単独処理部
分が実行され、そうでないときには上記並列処理部分の
みが実行される。上記単独処理部分では、各プロセッサ
が担当する部分計算領域を判断し、その結果を他のプロ
セッサに通知するように構成できる。上記の例では気象
予測計算を行う場合を例にとって説明したが、本発明の
手法は、これ以外の応用例についても、並列計算機上で
高速フーリエ変換を用いてシミュレーションを行う場合
に適用できることは明らかである。一次元フーリエ変換
ライブラリFFT1Dについても全く同様である。 <発明の実施の形態2>上記の実施の形態1では、フー
リエ変換ライブラリは、図9の方式2を採用した。しか
し、本実施の形態では、フーリエ変換ライブラリは、図
9の方式3を採用する。この方式3では、Y方向の変換
を行った後で転置を行い、その後X方向とZ方向の変換
を行う。この方式2では、フーリエ変換は具体的には以
下のようにして実行される。 (ステップa’)Y方向の変換 Y方向の変換は、従来の転置アルゴリズムについて既に
述べたステップ1あるいはa’の要領で実行される。既
に述べたごとく、フーリエ変換対象データのデータ分割
は、サイクリック分割である。 (ステップb’)データ転置 式6によるX方向の変換を行うには、3次元波数空間の
座標kyの特定の値と、3次元実空間の座標(jx,jz
の全ての値に対して得られた1次変換結果データc'
jx,ky,jzが必要である。方式3では、方式2と異なり、
Y方向の変換で得られた1次変換結果データc'
jx,ky,jzは、Y軸に垂直な複数の平面で分割される。こ
のことは、図8に示すように、3次元波数空間を、その
y軸に垂直な複数の平面で分割して、分割後の部分空
間(上記複数の平面)の各々を一つのプロセッサに割り
当てることを意味する。すなわち、各プロセッサへの座
標kyの特定の値を割り当てる。具体的には、ky=0,
1,2,3,,,の1変換結果データc'jx,ky,jzを順
次プロセッサ0,1,2,,,7に割り当てる。この割
り当てに従い、後にX方向の変換を実行するに必要なデ
ータをプロセッサ間で転送する処理がここのステップ
b’で実行される。各プロセッサが、そのプロセッサに
割り当てられた3次元波数空間の座標kyの特定の値
と、3次元実空間の座標(jx,jz)の全ての値とに対し
て得られた全ての1次変換結果データc'jx,ky,jzを使
用してX方向の変換を実行できるように、全プロセッサ
間で1次変換結果データの転送が行われる。すなわち、
各プロセッサは、3次元実空間の座標(jx,jz)の全て
値と、3次元波数空間の座標kyの特定の値との組に対
して得られた1次変換結果データc'jx,ky,jz(但し、
x=0〜(NX―1)、jz=0〜(NZ―1)、ky
=特定値)の内、自プロセッサが生成しなかったデータ
を他のプロセッサから受信するように、全プロセッサの
間で2次変換結果データを転送する。 (ステップc’)X方向の変換 次に、X方向の変換を実行する。各プロセッサは、式6
により、他のプロセッサとの通信をしないで、そのプロ
セッサに割り当てられた3次元波数空間の座標kyの特
定の値と、3次元波数空間の座標kxの全ての値と、3
次元実空間の座標jzの全ての値に関連するNX*NZ
個の2次変換結果データ(c''kx,ky,jz)(kx=0〜
NX−1、jz=0〜NZ−1)を得る。 (ステップd’)Z方向の変換 各プロセッサは、そのプロセッサに割り当てられた3次
元波数空間の座標kyの特定の値と、3次元波数空間の
他の二つの座標kx、kzの全ての値を有する最終的なフ
ーリエ変換結果データckx,ky,kz(但し、kx=0〜N
X―1、ky=特定値、kz=0〜NZ―1)を計算す
る。各プロセッサはこの計算を互いに並列に実行でき
る。この結果、座標ky=0,1,2,3,,,に対応
するフーリエ変換係数c0,c1,c2,,,が、順次プ
ロセッサ0,1,2,,,で生成され、全フーリエ変換
結果データckx,ky,kzは、プロセッサ間でサイクリック
に分割されていることが分かる。本方式は、実施の形態
1で使用した方式2に比べ、複素指数関数テーブルを格
納する配列BTの容量の点で有利となる。実際、式6に
より、X方向の変換における複素指数関数の値はX方
向、Y方向のインデックスのみに依存し、Z方向のイン
デックスには依存しない。したがって、実施の形態1の
ようにX方向の変換においてZ軸に垂直な分割を採用し
た場合には、各プロセッサが同じテーブルを重複して持
つことになる。それに対して本方式では、分割をY軸に
垂直な面で行うので、各プロセッサが自分の計算に必要
なテーブルの一部分のみを持つことになり、重複はな
い。これにより、本方式ではX方向の変換に必要なテー
ブルの大きさが1/(プロセッサ台数)に削減できる。
本実施の形態では、ベクトル化の対象となるループはY
方向、X方向、Z方向の変換において、それぞれX方
向、Z方向、X方向となるので、ベクトル並列計算機の
性能を引き出すには、NY≧p,NZ≧pの2つの条件
を満たしつつNXとNZをできるだけ大きく取るのがよ
い。 <発明の実施の形態3>本実施の形態において対象とな
る並列計算機は、実施の形態1で説明した図1の並列計
算機システムとほぼ同様であるが、各プロセッサは同一
のベクトル演算器を内蔵し、かつ、外部記憶装置中32
に、そのベクトル演算器の性能に関するデータベースを
持つ。ベクトル演算器の演算性能とはたとえば単位時間
あたりに実行可能な演算回数である。ベクトル演算器性
能データベース中には、ベクトル演算器の性能データが
ループ長Lの関数(g(L))の形で格納されている。
実施の形態1では、フーリエ変換のためのパラメータN
X,NY,NZはプログラムへの入力として決定してい
たが、これを並列計算機28の各々のプロセッサを構成
するベクトル演算器の特性に応じて最適化することによ
り、さらに効率的な計算が可能となる。一般に、ベクト
ル演算器の演算性能は、ループ長Lの関数g(L)であ
る。g(L)は通常、Lに対して単調に増加する関数で
ある。いま、実施の形態1のフーリエ変換方式でY方向
の変換を計算するステップの演算量を考えると、NY次
のフーリエ変換を一回行うための演算量はNYlogN
Yであり、これをNX*NZ組計算するから、全体での
演算量はNX*NY*NZlogNY=NlogNYで
ある。同様にして、NX方向、NZ方向での演算量は、
それぞれNlogNX、NlogNZである。一方、そ
れぞれの演算におけるベクトル化のループ長は、実施の
形態1で述べたようにNX,NY,NXであるから、ベ
クトル演算器の演算性能はそれぞれg(NX),g(N
Y),g(NX)となる。演算時間tは演算量を演算性
能で割ることによって得られ、合計で t=NlogNY/g(NX)+NlogNX/g(NY)+NlogNZ/g(NX) となる。したがって、プロセッサ台数をpとするとき、
NX≧p,NZ≧pという条件の下でtを最小化するよ
うにNX,NY,NZを決めることにより、ベクトル演
算器の性能を最大限に発揮できる高速フーリエ変換が実
現できる。本実施の形態でのライブラリのフローチャー
トを図12に示す。処理は、NX,NY,NZの決定部
分(ステップ43)を除いては、実施の形態1(図1
0)と同様である。ステップ43では、上記ベクトル演
算器性能データベースを用いて、NX≧p,NZ≧pと
いう条件の下で上記演算時間tを最小化するようにN
X,NY,NZを決める。その後の処理は、実施の形態
1と同様である。このライブラリへのコール文ではシミ
ュレーションプログラムはこれらのパラメータNX,N
Y,NZを指定する必要はない。本実施の形態の方式に
よれば、ユーザは自分でNX,NY,NZを計算するこ
となく、ベクトル演算器を内蔵する並列計算機の性能を
最大限に引き出すことが可能となる。なお、NとNPU
とが一般の整数の場合には、NX,NY,NZを変える
ことにより、入力データのプロセッサへの分割形式も変
更する必要があるが、フーリエ変換でもっともよく利用
される、NおよびNPUが共に2のべき乗の場合には、
NX,NY,NZを変えても、分割形式を変更する必要
がない場合がある。実際、2つの組(NX,NY,N
Z)=(NX1,NY1,NZ1)、(NX2,NY
2,NZ2)が共にNY≧NPU,NZ≧NPUの2つ
の条件を満たしているとき、入力データfjを図2に示
す順番で直方体状に並べ、これをZ軸に垂直な面でスラ
イスして、各面をサイクリックにプロセッサ0,
1,...,NPU−1に割り当てたとする。すると、
(NX,NY,NZ)=(NX1,NY1,NZ1)の
場合は、fjの属する面は上からMOD(fj,NZ1)
+1番目であり、この面を担当するプロセッサの番号は MOD(MOD(fj,NZ1),NPU) である。一方、(NX,NY,NZ)=(NX2,NY
2,NZ2)の場合も同様にして、fjを担当するプロ
セッサの番号は MOD(MOD(fj,NZ2),NPU) となる。ところが、いまNZ1≧NPU,NZ2≧NP
Uであり、NZ1,NZ2,NPUはすべて2のべき乗
であるから、NZ1,NZ2は共にNPUの倍数であ
る、したがって、 MOD(MOD(fj,NZ1),NPU) =MOD(MOD(fj,NZ2),NPU) =MOD(fj,NPU)すなわち、fjを担当するプロセッサの番
号は、どちらの場合も同じである。以上の考察より、N
およびNPUが共に2のべき乗で、NY≧NPU,NZ
≧NPUの2つの条件が成り立っている限り、NX,N
Y,NZを変えても、入力データfjのプロセッサへの
分割形式は変更する必要がないことがわかる。このこと
を利用し、分割形式を変えずに済む範囲でNX,NY,
NZの最適化を行えば、分割形式変更に伴う新たな通信
オーバーヘッドを生じることなく、ベクトル演算器を含
む並列計算機での処理速度、具体的には、フーリエ変換
速度を向上させることができる。 <発明の実施の形態4>本発明による高速フーリエ変換
を用いてシミュレーションを行う他の例として、半導体
デバイス等における電子構造計算を説明する。電子構造
計算は、その結果を利用して半導体デバイスの設計、と
くにデバイス構造の決定に使用されている。電子構造計
算では、2次元または3次元のメッシュで定義された電
子の波動関数u(r)を、次のシュレディンガー方程式
【数15】 du(r)/dt=−(h2/2m)∇2u(r) +(E−V(r))u(r) ... (15) に従って計算することにより、半導体の性質を決定する
バンドギャップの大きさや、結晶の構造安定性などを求
める。ただし、上式で、hはプランク定数、mは電子の
質量、Eは対象とする波動関数のエネルギーレベル、V
は結晶中の原子や他の電子によるポテンシャルエネルギ
ーを表す。式15の計算では、波動関数u(r)の2次
微分∇2u(r)が必要であるが、気象計算の例におい
て述べたのと同様な理由により、この部分はu(r)を
フーリエ変換により波数空間に移してから計算し、結果
を逆フーリエ変換で再び実空間に戻す。したがって、並
列計算機上で電子構造計算を行う場合には、この部分で
本発明の高速フーリエ変換方法が適用できる。 <変形例>本発明は、以上の実施の形態に限定されるの
ではなく、以下に例示する変更あるいは変形以外のいろ
いろの変更あるいは変形により実現可能である。 (1)本発明によるフーリエ変換方法は、シミュレーシ
ョンに限らず他の用途にも使用できるのは言うまでもな
い。たとえば、伝送される信号あるいは地震波等の波動
の解析に利用でき、解析の結果を用いて、信号伝送に関
係する装置、例えば伝送装置あるいは伝送線路の設計を
行うことができ、あるいは地震を利用した応用、例えば
資源開発等にも利用できる。 (2)以上の実施の形態では、フーリエ変換変換はその
ために用意されたフーリエ変換ライブラリにより実行さ
れた。しかし、本発明は、フーリエ変換を使用するアプ
リケーションプログラム自身にこのフーリエ変換手順を
実行するプログラムを組み込んでもよいことは明らかで
ある。このようなシミュレーションプログラムは。プロ
グラムを磁気記憶装置のようなプログラム記録媒体に記
憶して販売できる。 (3)本発明は、フーリエ変換対象データfjが実デー
タであるときにも適用できる。その場合に、Y方向等の
変換のときに、係数の計算においては、虚数部の計算を
省略することができる。 以上から明らかなように、本発明によれば、並列計算機
を使用してフーリエ変換を従来より高速に実行できる。
たとえば本出願人により開発された並列計算機SR22
01を用いて本発明の効果を評価した結果では以下の通
りである。3次元フーリエ変換を実行する場合、従来法
では、256×256×256のサイズのデータを25
6台のプロセッサを用いて変換するのに、約0.26秒
の時間が必要である。この内訳は、計算に0.14秒、
途中でのデータの転置に0.06秒、最後のデータの並
べ替えに0.06秒の時間がかかる。実施の形態1ある
いは2に記載の方法によれば、計算と転置の時間は従来
法と同じであり、最後のデータの並べ替えが省略できる
ので、0.20秒でフーリエ変換を行うことができ、約
24%の高速化が達成できる。とくに、実施の形態1で
記載した気象計算を、3次元フーリエ変換を用いて行う
場合、気象計算では全計算時間の約50%がフーリエ変
換で占められるため、約12%の高速化が得られる。ま
た、実施の形態4で記載した電子構造計算を3次元フー
リエ変換を用いて行う場合、通常全実行時間の30%程
度がフーリエ変換で占められるため、約7%の高速化が
達成できる。
【発明の効果】以上説明したように、本発明によれば、
並列計算機上でのフーリエ変換を高速に実行できる。
【図面の簡単な説明】
【図1】本発明の第1の実施の形態で使用する並列計算
機の概略構成図。
【図2】本発明の第1の実施の形態で使用する一次元変
換対象データの3次元データへの写像を説明する図。
【図3】本発明の第1の実施の形態で使用する一次元変
換結果データの3次元データへの写像を説明する図。
【図4】本発明の第1の実施の形態で使用する、プロセ
ッサへデータを割り当てる第1の方法を示す図。
【図5】従来技術で使用する、プロセッサへデータを割
り当てる他の方法を示す図。
【図6】本発明の第1の実施の形態で使用する、一次元
変換対象データのプロセッサ間データ分割形式を説明す
る図。
【図7】従来技術による、一次元変換結果データのプロ
セッサ間データ分割形式を説明する図。
【図8】本発明の第1の実施の形態で使用する、プロセ
ッサへデータを割り当てる第2の方法を示す図。
【図9】本発明に至る前に比較検討した、複数のフーリ
エ変換変換手順を示す図。
【図10】本発明の実施の形態1で使用するフーリエ変
換ライブラリのフローチャート。
【図11】本発明の実施の形態1で使用するシミュレー
ションプログラムのフローチャート。
【図12】本発明の実施の形態3で使用するフーリエ変
換ライブラリのフローチャート。

Claims (28)

    【特許請求の範囲】
  1. 【請求項1】複数のプロセッサを有する計算機で実行す
    るためのフーリエ変換方法であって、 各プロセッサにより、第1の変換処理、第2の変換処
    理、第3の変換処理を順次かつ他のプロセッサと並行し
    て実行し、 上記複数のプロセッサの各々による、上記第1、第2の
    変換処理のいずれか一方の変換処理の実行後に、上記複
    数のプロセッサでのその一方の変換処理を実行した結果
    得られた一群の結果データを構成する複数の結果データ
    部分群が異なるプロセッサに割り当てられるように、上
    記一群の結果データを上記複数のプロセッサの間で交換
    するステップを有し、 上記第1から第3の変換処理は、一群の順序づけられた
    変換対象データに対する一群の順序づけられたフーリエ
    変換係数データを構成する複数のフーリエ変換係数デー
    タ部分群をそれぞれ異なるプロセッサにより生成するよ
    うに定められ、 各プロセッサには、上記一群の変換対象データを構成す
    る複数の変換対象データ部分群の一つの変換対象データ
    部分群がそのプロセッサに対して予め割り当てられ、 上記一群のフーリエ変換係数データのそれぞれを生成し
    たプロセッサの順序が、上記一群の変換対象データのそ
    れぞれが割り当てられたプロセッサの順序と同一となる
    ように、上記交換するステップで各プロセッサに割り当
    てられる結果データ部分群が定められているもの。
  2. 【請求項2】各プロセッサは、そのプロセッサに対して
    予め割り当てられた一つの変換対象データ部分群に対し
    て、上記第1の変換処理を他のプロセッサと並行して実
    行し、第1の結果データの部分群を生成し、 各プロセッサは、上記交換するステップが上記第2の変
    換処理の実行後に実行されるときには、その各プロセッ
    サで実行した上記第1の変換処理の結果生成した上記一
    つの第1の結果データ部分群に対して、上記交換するス
    テップが上記第1の変換処理の実行後に実行されたとき
    には、その交換ステップでそのプロセッサに割り当てら
    れた一群の第1の部分結果データに対して、上記第2の
    変換処理を他のプロセッサと並行して実行して、一つの
    第2の結果データ部分群を生成し、 各プロセッサは、上記交換するステップが上記第1の変
    換処理の実行後に実行されたときには、その各プロセッ
    サで実行した上記第2の変換処理の結果生成した一つの
    第2の結果データ部分群に対して、上記交換するステッ
    プが上記第2の変換処理の実行後に実行されたときに
    は、その交換ステップでそのプロセッサに割り当てられ
    た一つの第2の結果データ部分群に対して、上記第3の
    変換処理を他のプロセッサと並行して実行して一つのフ
    ーリエ変換係数データ部分群を生成する請求項1記載の
    フーリエ変換方法。
  3. 【請求項3】上記第1、第2、第3の変換処理は、それ
    ぞれ3次元データ空間の第1、第2、第3の座標軸に関
    する変換処理であり、 上記変換対象データ群の各々は、上記3次元データ空間
    の直方体形状に位置する格子点群の一つの座標をそれぞ
    れ有し、 上記複数の変換対象データ部分群は、上記3次元データ
    空間の第3の座標軸の座標値が同じであり、上記3次元
    データ空間の第1、第2の座標軸の座標値が異なる全て
    の変換対象データが同一の変換対象データ部分群に含ま
    れるように定められ、 上記フーリエ変換係数データ群の各々は、3次元係数空
    間の直方体形状に位置する格子点群の一つの座標をそれ
    ぞれ有し、 上記複数のフーリエ変換係数データ部分群は、上記3次
    元係数空間の第1の座標軸の座標値が同じであり、上記
    3次元波数空間の第2、第3の座標軸の座標値が異なる
    全てのフーリエ変換係数データが同一のフーリエ変換係
    数データ部分群に含まれるように定められている請求項
    1記載のフーリエ変換方法。
  4. 【請求項4】複数のプロセッサを有する計算機で実行す
    るためのフーリエ変換方法であって、 各プロセッサにより、3次元データ空間の第1の座標軸
    に関する第1の変換処理、上記3次元データ空間の第2
    の座標軸に関する第2の変換処理、上記3次元データ空
    間の第3の座標軸に関する第3の変換処理を順次実行
    し、 上記複数のプロセッサの各々による、上記第1、第2の
    変換処理のいずれか一方の変換処理の実行後に、上記複
    数のプロセッサでのその一方の変換処理を実行した結果
    得られた一群の結果データを構成する複数の結果データ
    部分群がそれぞれ異なるプロセッサに割り当てられるよ
    うに、上記一群の結果データを上記複数のプロセッサの
    間で交換するステップを有し、 上記第1から第3の変換処理は、一群の順序づけられた
    変換対象データに対する一群の順序づけられたフーリエ
    変換係数データを構成する複数のフーリエ変換係数デー
    タ部分群をそれぞれ異なるプロセッサにより生成するよ
    うに定められ、 上記変換対象データ群の各々は、上記3次元データ空間
    の直方体形状に位置する格子点群の一つの座標をそれぞ
    れ有し、 上記複数の変換対象データ部分群は、上記3次元データ
    空間の第3の座標軸の座標値が同じであり、上記3次元
    データ空間の第1、第2の座標軸の座標値が異なる全て
    の変換対象データが同一の変換対象データ部分群に含ま
    れるように定められ、 上記フーリエ変換係数データ群の各々は、3次元係数空
    間の直方体形状に位置する格子点群の一つの座標をそれ
    ぞれ有し、 上記複数のフーリエ変換係数データ部分群は、上記3次
    元係数空間の第1の座標軸の座標値が同じであり、上記
    3次元波数空間の第2、第3の座標軸の座標値が異なる
    全てのフーリエ変換係数データが同一のフーリエ変換係
    数データ部分群に含まれるように定められ、 各プロセッサには、上記一群の変換対象データを構成す
    る複数の変換対象データ部分群の一つの変換対象データ
    部分群が予め割り当てられ、 上記一群のフーリエ変換係数データのそれぞれを生成し
    たプロセッサの順序が、上記一群の変換対象データのそ
    れぞれが割り当てられたプロセッサの順序と同一となる
    ように、上記交換するステップで各プロセッサに割り当
    てられる結果データ部分群が定められているもの。
  5. 【請求項5】各プロセッサは、そのプロセッサに対して
    予め割り当てられた一つの変換対象データ部分群に対し
    て、上記第1の変換処理を他のプロセッサと並行して実
    行して、第1の結果データ部分群を生成し、 各プロセッサは、上記交換するステップが上記第2の変
    換処理の実行後に実行されるときには、その各プロセッ
    サで実行した上記第1の変換処理の結果生成した第1の
    結果データ部分群に対して、上記交換するステップが上
    記第1の変換処理の実行後に実行されたときには、その
    交換ステップでそのプロセッサに割り当てられた一つの
    第1の結果データ部分群に対して、上記第2の変換処理
    を他のプロセッサと並行して実行して、一つの第2の結
    果データ部分群を生成し、 各プロセッサは、上記交換するステップが上記第1の変
    換処理の実行後に実行されるときには、その各プロセッ
    サで実行した上記第2の変換処理の結果生成した一つの
    第2の結果データ部分群に対して、上記交換するステッ
    プが上記第2の変換処理の実行後に実行されたときに
    は、その交換ステップでそのプロセッサに割り当てられ
    た一つの第2の結果データ部分群に対して、上記第3の
    変換処理を他のプロセッサと並行して実行して一つのフ
    ーリエ変換係数データ部分群を生成する請求項4に記載
    のフーリエ変換方法。
  6. 【請求項6】上記変換対象データ群が上記3次元データ
    空間に直方体形状に位置する格子点群に上記3次元空間
    に第3の座標軸、第2の座標軸、第1の座標軸の順に順
    次割り当てられ、 上記第1から第3の変換処理は、上記複数のフーリエ変
    換係数データが、3次元係数空間に直方体形状に位置す
    る格子点群に、当該3次元係数空間の第1、第2、第3
    の座標軸の順序で割り当てられるように定められている
    請求項4記載のフーリエ変換方法。
  7. 【請求項7】各プロセッサが上記第1の変換処理により
    生成する上記一つの第1の結果データ部分群は、上記3
    次元データ空間の第3の座標軸の座標値が所定の同じ値
    であり、上記3次元データ空間の第2の座標軸の座標値
    と上記3次元係数空間の第1の座標軸の座標値が異なる
    値を有する全ての複数の第1の結果データを含み、 上記交換ステップが上記第1の変換処理が上記複数のプ
    ロセッサにより実行された後に実行され、 上記複数のプロセッサは、この交換ステップで、上記3
    次元係数空間の第1の座標軸の座標値が所定の同じ値で
    あり、上記3次元データ空間の第2、第3の座標軸の座
    標値が異なる値を有する全ての複数の第1の結果データ
    を含む第1の結果データ部分群が同一のプロセッサに割
    り当てられるように、上記複数のプロセッサが生成した
    一群の第1の結果データを上記複数のプロセッサの間で
    交換し、 各プロセッサが上記第2の変換処理により生成する上記
    一つの第2の結果データ部分群は、上記3次元係数空間
    の第1の座標軸の座標値が所定の同じ値であり、上記3
    次元波数空間の第2の座標軸の座標値と上記3次元デー
    タ空間の第3の座標軸の座標値が異なる値を有する全て
    の複数の第2の結果データを含み、 各プロセッサが上記第3の変換処理により生成する上記
    一つのフーリエ変換係数部分群は、上記3次元係数空間
    の第1の座標軸の座標値が所定の値であり、上記3次元
    波数空間の第2、第3の座標軸の座標値が異なる値を有
    する全ての複数のフーリエ変換係数を含む請求項4記載
    のフーリエ変換方法。
  8. 【請求項8】各プロセッサが上記第1の変換処理により
    生成する上記一つの第1の結果データ部分群は、上記3
    次元データ空間の第3の座標軸の座標値が所定の同じ値
    であり、上記3次元データ空間の第2の座標軸の座標値
    と上記3次元係数空間の第1の座標軸の座標値が異なる
    値を有する全ての複数の第1の結果データを含み、 上記交換ステップが上記第2の変換処理が上記複数のプ
    ロセッサにより実行された後に実行され、 各プロセッサが上記第2の変換処理により生成する上記
    一つの第2の結果データ部分群は、上記3次元データ空
    間の第3の座標軸の座標値が所定の同じ値であり、上記
    3次元係数空間の第1、第2の座標軸の座標値が異なる
    値を有する全ての複数の第2の結果データを含み、 上記複数のプロセッサは、上記交換ステップにより、上
    記3次元係数空間の第1の座標軸の座標値が所定の同じ
    値であり、上記3次元係数空間の第1の座標軸の座標値
    と上記3次元データ空間の第3の座標軸の座標値が異な
    る値を有する全ての複数の第1の結果データを含む第1
    の結果データ部分群が同一のプロセッサに割り当てられ
    るように、上記複数のプロセッサが生成した一群の第1
    の結果データを上記複数のプロセッサの間で交換し、 各プロセッサが上記第3の変換処理により生成する上記
    一つのフーリエ変換係数部分群は、上記3次元係数空間
    の第1の座標軸の座標値が所定の値であり、上記3次元
    係数空間の第2、第3の座標軸の座標値が異なる値を有
    する全ての複数のフーリエ変換係数を含む請求項4記載
    のフーリエ変換方法。
  9. 【請求項9】複数のプロセッサを有する計算機で実行す
    るためのフーリエ変換方法であって、 各プロセッサにより、3次元空間の第1、第2、第3の
    座標軸の座標にそれぞれ関する第1、第2、第3の変換
    処理を順次かつ他のプロセッサと並行して実行し、 各プロセッサが上記第1、第2の変換処理のいずれか一
    方を実行した後に、その一方の変換処理の結果それぞれ
    のプロセッサで得られた複数の結果データを上記複数の
    プロセッサの間で交換するステップを有し、 ここで、一群の順序づけられた変換対象データが上記3
    次元空間に直方体の形に並べられ、 上記第1から第3の変換処理は、上記一群の変換対象デ
    ータに対する一群の順序づけられた3次元空間の座標を
    有する複数のフーリエ変換係数データを生成するように
    定められ、 上記複数の変換対象データが構成する上記直方体を分割
    する上記3次元空間の上記第1の座標軸に垂直な複数の
    面の各々に含まれる複数の変換対象データが同一のプロ
    セッサに割り当てられ、 上記交換ステップは、上記一方の変換処理の結果得られ
    た上記複数の結果データが構成する3次元空間の直方体
    を、その3次元空間の第1の座標軸に垂直な複数の面で
    分割し直して、各面に属する複数の結果データを同一の
    プロセッサに割り当てるように、上記一方の変換処理の
    結果得られた上記複数の結果データを上記複数のプロセ
    ッサ間で交換するステップを有するもの。
  10. 【請求項10】上記一群の順序づけられた変換対象デー
    タを上記3次元空間に直方体の形に並べられる順序は、
    第3の座標軸、第2の座標軸、第1の座標軸の順であ
    り、 上記第1から第3の変換処理は、上記複数のフーリエ変
    換係数データが3次元空間に第1、第2、第3の座標軸
    の順序で並べられるように定められている請求項9記載
    のフーリエ変換方法。
  11. 【請求項11】各プロセッサがパイプライン演算器を含
    み、その演算器での演算の対象とするループ長がLのと
    きのその各プロセッサの演算性能を求めるための性能デ
    ータを上記複数のプロセッサに共通に記憶し、 その性能データを用いて、上記直方体の上記第1、第
    2、第3の座標軸方向の長さを決定し、 その決定された上記第1、第2、第3の座標軸方向の長
    さを有する直方体に、上記順序づけられた複数の変換対
    象データを並べるステップをさらに有する請求項9記載
    のフーリエ変換方法。
  12. 【請求項12】計算機により読みとり可能なプログラム
    記録媒体であって、複数のプロセッサを有する計算機で
    フーリエ変換を実行するためのプログラムを記憶し、そ
    のプログラムは、 各プロセッサにより、第1の変換処理、第2の変換処
    理、第3の変換処理を順次かつ他のプロセッサと並行し
    て実行し、 上記複数のプロセッサの各々による、上記第1、第2の
    変換処理のいずれか一方の変換処理の実行後に、上記複
    数のプロセッサでのその一方の変換処理を実行した結果
    得られた一群の結果データを構成する複数の結果データ
    部分群が異なるプロセッサに割り当てられるように、上
    記一群の結果データを上記複数のプロセッサの間で交換
    するステップを実行するようにプログラムされ、 上記第1から第3の変換処理は、一群の順序づけられた
    変換対象データに対する一群の順序づけられたフーリエ
    変換係数データを構成する複数のフーリエ変換係数デー
    タ部分群をそれぞれ異なるプロセッサにより生成するよ
    うに定められ、 各プロセッサには、上記一群の変換対象データを構成す
    る複数の変換対象データ部分群の一つの変換対象データ
    部分群がそのプロセッサに対して予め割り当てられ、 上記一群のフーリエ変換係数データのそれぞれを生成し
    たプロセッサの順序が、上記一群の変換対象データのそ
    れぞれが割り当てられたプロセッサの順序と同一となる
    ように、上記交換するステップで各プロセッサに割り当
    てられる結果データ部分群が定められているもの。
  13. 【請求項13】各プロセッサは、そのプロセッサに対し
    て予め割り当てられた一つの変換対象データ部分群に対
    して、上記第1の変換処理を他のプロセッサと並行して
    実行し、第1の結果データの部分群を生成し、 各プロセッサは、上記交換するステップが上記第2の変
    換処理の実行後に実行されるときには、その各プロセッ
    サで実行した上記第1の変換処理の結果生成した上記一
    つの第1の結果データ部分群に対して、上記交換するス
    テップが上記第1の変換処理の実行後に実行されたとき
    には、その交換ステップでそのプロセッサに割り当てら
    れた一群の第1の部分結果データに対して、上記第2の
    変換処理を他のプロセッサと並行して実行して、一つの
    第2の結果データ部分群を生成し、 各プロセッサは、上記交換するステップが上記第1の変
    換処理の実行後に実行されたときには、その各プロセッ
    サで実行した上記第2の変換処理の結果生成した一つの
    第2の結果データ部分群に対して、上記交換するステッ
    プが上記第2の変換処理の実行後に実行されるときに
    は、その交換ステップでそのプロセッサに割り当てられ
    た一つの第2の結果データ部分群に対して、上記第3の
    変換処理を他のプロセッサと並行して実行して一つのフ
    ーリエ変換係数データ部分群を生成する請求項12記載
    のプログラム記録媒体。
  14. 【請求項14】上記第1、第2、第3の変換処理は、そ
    れぞれ3次元データ空間の第1、第2、第3の座標軸に
    関する変換処理であり、 上記変換対象データ群の各々は、上記3次元データ空間
    の直方体形状に位置する格子点群の一つの座標をそれぞ
    れ有し、 上記複数の変換対象データ部分群は、上記3次元データ
    空間の第3の座標軸の座標値が同じであり、上記3次元
    データ空間の第1、第2の座標軸の座標値が異なる全て
    の変換対象データが同一の変換対象データ部分群に含ま
    れるように定められ、 上記フーリエ変換係数データ群の各々は、3次元係数空
    間の直方体形状に位置する格子点群の一つの座標をそれ
    ぞれ有し、 上記複数のフーリエ変換係数データ部分群は、上記3次
    元係数空間の第1の座標軸の座標値が同じであり、上記
    3次元波数空間の第2、第3の座標軸の座標値が異なる
    全てのフーリエ変換係数データが同一のフーリエ変換係
    数データ部分群に含まれるように定められている請求項
    13記載のプログラム記録媒体。
  15. 【請求項15】計算機により読みとり可能なプログラム
    記録媒体であって、複数のプロセッサを有する計算機で
    フーリエ変換を実行するためのプログラムを記憶し、 そのプログラムは、 各プロセッサにより、3次元データ空間の第1の座標軸
    に関する第1の変換処理、上記3次元データ空間の第2
    の座標軸に関する第2の変換処理、上記3次元データ空
    間の第3の座標軸に関する第3の変換処理を順次実行
    し、 上記複数のプロセッサの各々による、上記第1、第2の
    変換処理のいずれか一方の変換処理の実行後に、上記複
    数のプロセッサでのその一方の変換処理を実行した結果
    得られた一群の結果データを構成する複数の結果データ
    部分群がそれぞれ異なるプロセッサに割り当てられるよ
    うに、上記一群の結果データを上記複数のプロセッサの
    間で交換するステップを実行するようにプログラムさ
    れ、 上記第1から第3の変換処理は、一群の順序づけられた
    変換対象データに対する一群の順序づけられたフーリエ
    変換係数データを構成する複数のフーリエ変換係数デー
    タ部分群をそれぞれ異なるプロセッサにより生成するよ
    うに定められ、 上記変換対象データ群の各々は、上記3次元データ空間
    の直方体形状に位置する格子点群の一つの座標をそれぞ
    れ有し、 上記複数の変換対象データ部分群は、上記3次元データ
    空間の第3の座標軸の座標値が同じであり、上記3次元
    データ空間の第1、第2の座標軸の座標値が異なる全て
    の変換対象データが同一の変換対象データ部分群に含ま
    れるように定められ、 上記フーリエ変換係数データ群の各々は、3次元係数空
    間の直方体形状に位置する格子点群の一つの座標をそれ
    ぞれ有し、 上記複数のフーリエ変換係数データ部分群は、上記3次
    元係数空間の第1の座標軸の座標値が同じであり、上記
    3次元波数空間の第2、第3の座標軸の座標値が異なる
    全てのフーリエ変換係数データが同一のフーリエ変換係
    数データ部分群に含まれるように定められ、 各プロセッサには、上記一群の変換対象データを構成す
    る複数の変換対象データ部分群の一つの変換対象データ
    部分群が予め割り当てられ、 上記一群のフーリエ変換係数データのそれぞれを生成し
    たプロセッサの順序が、上記一群の変換対象データのそ
    れぞれが割り当てられたプロセッサの順序と同一となる
    ように、上記交換するステップで各プロセッサに割り当
    てられる結果データ部分群が定められているもの。
  16. 【請求項16】各プロセッサは、上記一群の変換対象デ
    ータを構成する複数の変換対象データ部分群の内のその
    プロセッサに対して予め割り当てられた一つの変換対象
    データ部分群に対して、上記第1の変換処理を他のプロ
    セッサと並行して実行して、第1の結果データ部分群を
    生成し、 各プロセッサは、上記交換するステップが上記第2の変
    換処理の実行後に実行されるときには、その各プロセッ
    サで実行した上記第1の変換処理の結果生成した第1の
    結果データ部分群に対して、上記交換するステップが上
    記第1の変換処理の実行後に実行されたときには、その
    交換ステップでそのプロセッサに割り当てられた一つの
    第1の結果データ部分群に対して、上記第2の変換処理
    を他のプロセッサと並行して実行して、一つの第2の結
    果データ部分群を生成し、 各プロセッサは、上記交換するステップが上記第1の変
    換処理の実行後に実行されるときには、その各プロセッ
    サで実行した上記第2の変換処理の結果生成した一つの
    第2の結果データ部分群に対して、上記交換するステッ
    プが上記第2の変換処理の実行後に実行されたときに
    は、その交換ステップでそのプロセッサに割り当てられ
    た一つの第2の結果データ部分群に対して、上記第3の
    変換処理を他のプロセッサと並行して実行して一つのフ
    ーリエ変換係数データ部分群を生成する請求項15記載
    のプログラム記録媒体。
  17. 【請求項17】上記変換対象データ群が上記3次元デー
    タ空間に直方体形状に位置する格子点群に上記3次元空
    間に第3の座標軸、第2の座標軸、第1の座標軸の順に
    順次割り当てられ、 上記第1から第3の変換処理は、上記複数のフーリエ変
    換係数データが、3次元係数空間に直方体形状に位置す
    る格子点群に、当該3次元係数空間の第1、第2、第3
    の座標軸の順序で割り当てられるように定められている
    請求項15記載のプログラム記録媒体。
  18. 【請求項18】各プロセッサが上記第1の変換処理によ
    り生成する上記一つの第1の結果データ部分群は、上記
    3次元データ空間の第3の座標軸の座標値が所定の同じ
    値であり、上記3次元データ空間の第2の座標軸の座標
    値と上記3次元係数空間の第1の座標軸の座標値が異な
    る値を有する全ての複数の第1の結果データを含み、 上記交換ステップが上記第1の変換処理が上記複数のプ
    ロセッサにより実行された後に実行され、 上記複数のプロセッサは、この交換ステップで、上記3
    次元係数空間の第1の座標軸の座標値が所定の同じ値で
    あり、上記3次元データ空間の第2、第3の座標軸の座
    標値が異なる値を有する全ての複数の第1の結果データ
    を含む第1の結果データ部分群が同一のプロセッサに割
    り当てられるように、上記複数のプロセッサが生成した
    一群の第1の結果データを上記複数のプロセッサの間で
    交換し、 各プロセッサが上記第2の変換処理により生成する上記
    一つの第2の結果データ部分群は、上記3次元係数空間
    の第1の座標軸の座標値が所定の同じ値であり、上記3
    次元波数空間の第2の座標軸の座標値と上記3次元デー
    タ空間の第3の座標軸の座標値が異なる値を有する全て
    の複数の第2の結果データを含み、 各プロセッサが上記第3の変換処理により生成する上記
    一つのフーリエ変換係数部分群は、上記3次元係数空間
    の第1の座標軸の座標値が所定の値であり、上記3次元
    波数空間の第2、第3の座標軸の座標値が異なる値を有
    する全ての複数のフーリエ変換係数を含む請求項15記
    載のプログラム記録媒体。
  19. 【請求項19】各プロセッサが上記第1の変換処理によ
    り生成する上記一つの第1の結果データ部分群は、上記
    3次元データ空間の第3の座標軸の座標値が所定の同じ
    値であり、上記3次元データ空間の第2の座標軸の座標
    値と上記3次元係数空間の第1の座標軸の座標値が異な
    る値を有する全ての複数の第1の結果データを含み、 上記交換ステップが上記第2の変換処理が上記複数のプ
    ロセッサにより実行された後に実行され、 各プロセッサが上記第2の変換処理により生成する上記
    一つの第2の結果データ部分群は、上記3次元データ空
    間の第3の座標軸の座標値が所定の同じ値であり、上記
    3次元係数空間の第1、第2の座標軸の座標値が異なる
    値を有する全ての複数の第2の結果データを含み、 上記複数のプロセッサは、上記交換ステップにより、上
    記3次元係数空間の第1の座標軸の座標値が所定の同じ
    値であり、上記3次元係数空間の第1の座標軸の座標値
    と上記3次元データ空間の第3の座標軸の座標値が異な
    る値を有する全ての複数の第1の結果データを含む第1
    の結果データ部分群が同一のプロセッサに割り当てられ
    るように、上記複数のプロセッサが生成した一群の第1
    の結果データを上記複数のプロセッサの間で交換し、 各プロセッサが上記第3の変換処理により生成する上記
    一つのフーリエ変換係数部分群は、上記3次元係数空間
    の第1の座標軸の座標値が所定の値であり、上記3次元
    係数空間の第2、第3の座標軸の座標値が異なる値を有
    する全ての複数のフーリエ変換係数を含む請求項15記
    載のプログラム記録媒体。
  20. 【請求項20】計算機により読みとり可能なプログラム
    記録媒体であって、複数のプロセッサを有する計算機で
    フーリエ変換を実行するためのプログラムを記憶し、 そのプログラムは、 各プロセッサにより、3次元空間の第1、第2、第3の
    座標軸の座標にそれぞれ関する第1、第2、第3の変換
    処理を順次かつ他のプロセッサと並行して実行し、 各プロセッサが上記第1、第2の変換処理のいずれか一
    方を実行した後に、その一方の変換処理の結果それぞれ
    のプロセッサで得られた複数の結果データを上記複数の
    プロセッサの間で交換するステップを実行するようにプ
    ログラムされ、 ここで、一群の順序づけられた変換対象データが上記3
    次元空間に直方体の形に並べられ、 上記第1から第3の変換処理は、上記一群の変換対象デ
    ータに対する一群の順序づけられた3次元空間の座標を
    有する複数のフーリエ変換係数データを生成するように
    定められ、 上記複数の変換対象データが構成する上記直方体を分割
    する上記3次元空間の上記第1の座標軸に垂直な複数の
    面の各々に含まれる複数の変換対象データが同一のプロ
    セッサに割り当てられ、 上記交換ステップは、上記一方の変換処理の結果得られ
    た上記複数の結果データが構成する3次元空間の直方体
    を、その3次元空間の第1の座標軸に垂直な複数の面で
    分割し直して、各面に属する複数の結果データを同一の
    プロセッサに割り当てるように、上記一方の変換処理の
    結果得られた上記複数の結果データを上記複数のプロセ
    ッサ間で交換するステップを有するもの。
  21. 【請求項21】上記一群の順序づけられた変換対象デー
    タが上記3次元空間に直方体の形に並べられる順序は、
    第3の座標軸、第2の座標軸、第1の座標軸の順であ
    り、 上記第1から第3の変換処理は、上記複数のフーリエ変
    換係数データが、3次元空間に、第1、第2、第3の座
    標軸の順序で並べられるように定められ請求項20記載
    のプログラム記録媒体。
  22. 【請求項22】各プロセッサがパイプライン演算器を含
    み、その演算器での演算の対象とするループ長がLのと
    きのその各プロセッサの演算性能を求めるための性能デ
    ータを上記複数のプロセッサに共通に記憶し、 その性能データを用いて、上記直方体の上記第1、第
    2、第3の座標軸方向の長さを決定し、 その決定された上記第1、第2、第3の座標軸方向の長
    さを有する直方体に、上記順序づけられた複数の変換対
    象データを並べるステップをさらに有する請求項20記
    載のプログラム記録媒体。
  23. 【請求項23】上記プログラムは、各プロセッサ上で実
    行されるアプリケーションプログラムから呼び出され、
    そのアプリケーションプログラムが指定するフーリエ変
    換対象データに対してフーリエ変換を実行し、生成した
    フーリエ変換係数データをそのアプリケーションプログ
    ラムに戻すライブラリである請求項12から22のいず
    れか一つに記載のプログラム記録媒体。
  24. 【請求項24】複数のプロセッサを有する計算機で実行
    するためのシミュレーション方法であって、 各プロセッサにより、シミュレーションすべき物理現象
    を支配する方程式に基づいて、シミュレーション対象の
    物理空間の異なる点での少なくとも一つの物理量の値を
    計算し、 各プロセッサにより、その計算に当たり、算出された複
    数の値を表すデータにし対してフーリエ変換を実行する
    ステップとを有し、 上記フーリエ変換を実行するステップは、請求項1から
    11のいずれか一つにより実行されるもの。
  25. 【請求項25】上記物理現象は物理的な装置の動作に関
    連する物理現象であり、 上記算出された複数の値に基づいて、上記物理的な装置
    を設計するためのデータを生成するステップをさらに有
    する請求項24記載のシミュレーション方法。
  26. 【請求項26】上記物理的な装置は、半導体装置である
    請求項25記載のシミュレーション方法。
  27. 【請求項27】上記物理現象は気象であり、 上記算出された複数の値に基づいて、気象予測として報
    じるためのデータを生成するステップをさらに有する請
    求項24記載のシミュレーション方法。
  28. 【請求項28】計算機により読みとり可能なプログラム
    記録媒体であって、複数のプロセッサを有する計算機で
    シミュレーションを実行するためのプログラムを記憶
    し、そのプログラムは、請求項24から27のいずれか
    一つによりシミュレーションを実行するようにプログラ
    ムされているもの。
JP37768498A 1998-12-29 1998-12-29 フーリエ変換方法およびプログラム記録媒体 Expired - Fee Related JP4057729B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP37768498A JP4057729B2 (ja) 1998-12-29 1998-12-29 フーリエ変換方法およびプログラム記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP37768498A JP4057729B2 (ja) 1998-12-29 1998-12-29 フーリエ変換方法およびプログラム記録媒体

Publications (3)

Publication Number Publication Date
JP2000200261A true JP2000200261A (ja) 2000-07-18
JP2000200261A5 JP2000200261A5 (ja) 2005-09-08
JP4057729B2 JP4057729B2 (ja) 2008-03-05

Family

ID=18509076

Family Applications (1)

Application Number Title Priority Date Filing Date
JP37768498A Expired - Fee Related JP4057729B2 (ja) 1998-12-29 1998-12-29 フーリエ変換方法およびプログラム記録媒体

Country Status (1)

Country Link
JP (1) JP4057729B2 (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005174293A (ja) * 2003-12-09 2005-06-30 Arm Ltd データ要素に対するデータ処理操作を並列に実行するためのデータ処理装置及び方法
US7315877B2 (en) 2001-02-24 2008-01-01 International Business Machines Corporation Efficient implementation of a multidimensional fast fourier transform on a distributed-memory parallel multi-node computer
US7555509B2 (en) 2003-05-23 2009-06-30 Hitachi, Ltd. Parallel fast Fourier transformation method of concealed-communication type
JP2009289256A (ja) * 2008-05-01 2009-12-10 Univ Of Aizu アレイプロセッサ
JP2014532926A (ja) * 2011-10-27 2014-12-08 エルエスアイ コーポレーション 複素指数非線形関数を備える命令セットを有するデジタル・プロセッサ
US10210136B2 (en) 2016-03-14 2019-02-19 Fujitsu Limited Parallel computer and FFT operation method
US10409761B2 (en) 2015-04-24 2019-09-10 Fujitsu Limited Parallel computer system, arithmetic method, and storage medium
CN116911146A (zh) * 2023-09-14 2023-10-20 中南大学 三维重力场全息数值模拟及cpu-gpu加速方法

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7315877B2 (en) 2001-02-24 2008-01-01 International Business Machines Corporation Efficient implementation of a multidimensional fast fourier transform on a distributed-memory parallel multi-node computer
US8095585B2 (en) 2001-02-24 2012-01-10 International Business Machines Corporation Efficient implementation of multidimensional fast fourier transform on a distributed-memory parallel multi-node computer
US7555509B2 (en) 2003-05-23 2009-06-30 Hitachi, Ltd. Parallel fast Fourier transformation method of concealed-communication type
JP2005174293A (ja) * 2003-12-09 2005-06-30 Arm Ltd データ要素に対するデータ処理操作を並列に実行するためのデータ処理装置及び方法
JP2011048859A (ja) * 2003-12-09 2011-03-10 Arm Ltd データ要素に対するデータ処理操作を並列に実行するためのデータ処理装置及び方法
JP2009289256A (ja) * 2008-05-01 2009-12-10 Univ Of Aizu アレイプロセッサ
JP2014532926A (ja) * 2011-10-27 2014-12-08 エルエスアイ コーポレーション 複素指数非線形関数を備える命令セットを有するデジタル・プロセッサ
US9529567B2 (en) 2011-10-27 2016-12-27 Intel Corporation Digital processor having instruction set with complex exponential non-linear function
US10409761B2 (en) 2015-04-24 2019-09-10 Fujitsu Limited Parallel computer system, arithmetic method, and storage medium
US10210136B2 (en) 2016-03-14 2019-02-19 Fujitsu Limited Parallel computer and FFT operation method
CN116911146A (zh) * 2023-09-14 2023-10-20 中南大学 三维重力场全息数值模拟及cpu-gpu加速方法
CN116911146B (zh) * 2023-09-14 2024-01-19 中南大学 三维重力场全息数值模拟及cpu-gpu加速方法

Also Published As

Publication number Publication date
JP4057729B2 (ja) 2008-03-05

Similar Documents

Publication Publication Date Title
Liang et al. Evaluating fast algorithms for convolutional neural networks on FPGAs
Toledo A survey of out-of-core algorithms in numerical linear algebra.
Bahn et al. Parallel FFT algorithms on network-on-chips
US7120658B2 (en) Digital systolic array architecture and method for computing the discrete Fourier transform
Jacquelin et al. PSelInv—A distributed memory parallel algorithm for selected inversion: The symmetric case
CN106933777B (zh) 基于国产申威26010处理器的基2一维fft的高性能实现方法
Wu et al. An optimized FFT-based direct Poisson solver on CUDA GPUs
Pelz The parallel Fourier pseudospectral method
Bernaschi et al. A factored sparse approximate inverse preconditioned conjugate gradient solver on graphics processing units
JP4057729B2 (ja) フーリエ変換方法およびプログラム記録媒体
US6230177B1 (en) Method and apparatus for performing fast fourier transforms
Wang et al. A parallel multipole accelerated 3-D capacitance simulator based on an improved model
Liu et al. Parallel reconstruction of neighbor-joining trees for large multiple sequence alignments using CUDA
Dłotko et al. A novel technique for cohomology computations in engineering practice
Yang et al. A new theoretical derivation of NFFT and its implementation on GPU
US7555509B2 (en) Parallel fast Fourier transformation method of concealed-communication type
Aliaga et al. Leveraging data-parallelism in ILUPACK using graphics processors
Zhao et al. Hardware acceleration of number theoretic transform for zk‐SNARK
Zhang et al. Mixed-precision block incomplete sparse approximate preconditioner on Tensor core
Kechriotis et al. A new approach for computing multidimensional DFT's on parallel machines and its implementation on the iPSC/860 hypercube
Kulkarni et al. Massive Scaling of MASSIF: Algorithm Development and Analysis for Simulation on GPUs
CN107529638B (zh) 线性求解器的加速方法、存储数据库及gpu系统
Wang et al. SAM: A Scalable Accelerator for Number Theoretic Transform Using Multi-Dimensional Decomposition
Chen et al. Optimized Computation for Determinant of Multivariate Polynomial Matrices on GPGPU
Mullin et al. Conformal computing: Algebraically connecting the hardware/software boundary using a uniform approach to high-performance computation for software and hardware applications

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050314

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050314

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20050314

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070219

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070508

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070709

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20070709

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: 20071120

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20071214

R150 Certificate of patent or registration of utility model

Ref document number: 4057729

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101221

Year of fee payment: 3

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070709

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101221

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111221

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111221

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121221

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131221

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees