(57)【特許請求の範囲】
【請求項１】
１次元フーリエ変換を演算する複数の演算手段と前記複数の演算手段のうちのいずれかの演算手段で演算された１次元フーリエ変換の演算結果を受信して前記複数の演算手段のうちの他の演算手段に送信する演算結果交換手段とを有する多次元高速フーリエ変換並列演算装置が、Ｄ（Ｄは２以上の整数）次元のデータに対する多次元高速フーリエ変換を、前記Ｄ次元のデータを互いに直交する軸方向の１次元データに分割して得たＤ組の１次元データそれぞれに対する１次元フーリエ変換を所定の演算アルゴリズムに基づき並列演算することによって行う多次元高速フーリエ変換並列演算方法であって、
前記Ｄ組の１次元データそれぞれに対する１次元フーリエ変換のうちの第ｄ（ｄは０以上Ｄ−１以下の整数）組目の１次元フーリエ変換における演算が、当該１次元データに含まれるエレメント数Ｎd（Ｎdは２以上の整数）の素因数の数をｎd（ｎdは２以上の整数）としてｎd個の演算ステージに分解され、
前記ｎd個の演算ステージのうち最初に実行される第１演算ステージは、行方向に並べられた１次元データに対して、該１次元データを分割する処理と、分割されたデータを列方向に並べる処理と、行方向および列方向に並べられたデータを列方向に１次元フーリエ変換する処理とを含み、
前記ｎd個の演算ステージのうち２番目ないしｎd−１番目に実行される第２ないし第ｎd−１演算ステージは、行方向に並べられた１次元データに対して、該１次元データの各エレメントにひねり係数を乗算する処理と、乗算されたデータを分割する処理と、分割されたデータを列方向に並べる処理と、行方向および列方向に並べられたデータを列方向に１次元フーリエ変換する処理とを含み、
前記ｎd個の演算ステージのうち最後に実行される第ｎd演算ステージは、行方向に並べられた１次元データに対して、該１次元データの各エレメントにひねり係数を乗算する処理と、乗算されたデータを行方向に１次元フーリエ変換する処理とを含み、
前記ｎd個の演算ステージが、それぞれ連続して順次演算される１以上の演算ステージからなるＮ（Ｎは２以上ｎd以下の整数）組の演算ステージの組に組分けされ、
前記Ｎ組の演算ステージの組が、それぞれ前記複数の演算手段に割り当てられている場合に、
０以上Ｄ−１以下の全てのｄについて、前記第ｄ組目の１次元フーリエ変換を演算する手順を有し、
前記第ｄ組目の１次元フーリエ変換において演算すべき１次元データの数をＭdとし、ｍ＝１，２，・・・，Ｍd−１、ｎ＝１，２，・・・，Ｎ−１として、
前記第ｄ組目の１次元フーリエ変換を演算する手順のそれぞれが、
前記第１演算ステージを含む第１番目の演算ステージの組を割り当てられた演算手段が、第ｍ番目の１次元データに対し、前記第１番目の演算ステージの組を実行し、その結果を当該演算手段の第ｍ番目の演算結果として、前記演算結果交換手段を介し、第２番目の演算ステージの組が割り当てられた演算手段に送信し、それと同時に第ｍ＋１番目の１次元データに対し、第１番目の演算ステージの組を実行し、その結果を当該演算手段の第ｍ＋１番目の演算結果として、前記演算結果交換手段を介し、第２番目の演算ステージの組が割り当てられた演算手段に送信する手順と、
第ｎ番目の演算ステージの組を割り当てられた演算手段が、第ｎ−１番目の演算ステージの組を割り当てられた演算手段の第ｍ番目の演算結果に対し、前記第ｎ番目の演算ステージの組を実行し、その結果を当該演算手段の第ｍ番目の演算結果として、前記演算結果交換手段を介し、第ｎ＋１番目の演算ステージの組が割り当てられた演算手段に送信し、それと同時に第ｎ−１番目の演算ステージの組を割り当てられた演算手段の第ｍ＋１番目の演算結果に対し、第ｎ番目の演算ステージの組を実行し、その結果を当該演算手段の第ｍ＋１番目の演算結果として、前記演算結果交換手段を介し、第ｎ＋１番目の演算ステージの組が割り当てられた演算手段に送信する手順と、
前記第ｎd演算ステージを含む第Ｎ番目の演算ステージの組を割り当てられた演算手段が、第Ｎ−１番目の演算ステージの組を割り当てられた演算手段の第ｍ番目の演算結果に対し、前記第Ｎ番目の演算ステージの組を実行し、その演算結果を蓄積し、第Ｎ−１番目の演算ステージの組を割り当てられた演算手段の第ｍ＋１番目の演算結果に対し、第Ｎ番目の演算ステージの組を実行し、その演算結果を蓄積する手順とを含み、
０以上Ｄ−２以下の全てのｄについて、
前記第ｄ番目の１次元フーリエ変換を演算する手順において第Ｎ番目の演算ステージの組を割り当てられた演算手段が、次に実行する第ｄ＋１組目の１次元フーリエ変換を演算する手順において第１番目の演算ステージの組を割り当てられている
ことを特徴とする多次元高速フーリエ変換並列演算方法。
【請求項２】
前記１次元フーリエ変換を行う所定の演算アルゴリズムがCooley-Tukeyの手法であることを特徴とする請求項１記載の多次元高速フーリエ変換並列演算方法。
【請求項３】
１次元フーリエ変換を演算する複数の演算手段と前記複数の演算手段のうちのいずれかの演算手段で演算された１次元フーリエ変換の演算結果を受信して前記複数の演算手段のうちの他の演算手段に送信する演算結果交換手段とを有し、Ｄ（Ｄは２以上の整数）次元のデータに対する多次元高速フーリエ変換を、前記Ｄ次元のデータを互いに直交する軸方向の１次元データに分割して得たＤ組の１次元データそれぞれに対する１次元フーリエ変換を所定の演算アルゴリズムに基づき並列演算することによって行う多次元高速フーリエ変換並列演算装置であって、
前記Ｄ組の１次元データそれぞれに対する１次元フーリエ変換のうちの第ｄ（ｄは０以上Ｄ−１以下の整数）組目の１次元フーリエ変換における演算が、
当該１次元データに含まれるエレメント数Ｎd（Ｎdは２以上の整数）の素因数の数をｎd（ｎdは２以上の整数）としてｎd個の演算ステージに分解され、
前記ｎd個の演算ステージのうち最初に実行される第１演算ステージは、行方向に並べられた１次元データに対して、該１次元データを分割する処理と、分割されたデータを列方向に並べる処理と、行方向および列方向に並べられたデータを列方向に１次元フーリエ変換する処理とを含み、
前記ｎd個の演算ステージのうち２番目ないしｎd−１番目に実行される第２ないし第ｎd−１演算ステージは、行方向に並べられた１次元データに対して、該１次元データの各エレメントにひねり係数を乗算する処理と、乗算されたデータを分割する処理と、分割されたデータを列方向に並べる処理と、行方向および列方向に並べられたデータを列方向に１次元フーリエ変換する処理とを含み、
前記ｎd個の演算ステージのうち最後に実行される第ｎd演算ステージは、行方向に並べられた１次元データに対して、該１次元データの各エレメントにひねり係数を乗算する処理と、乗算されたデータを行方向に１次元フーリエ変換する処理とを含み、
前記ｎd個の演算ステージが、それぞれ連続して順次演算される１以上の演算ステージからなるＮ（Ｎは２以上ｎd以下の整数）組の演算ステージの組に組分けされ、
前記Ｎ組の演算ステージの組が、それぞれ前記複数の演算手段に割り当てられており、
０以上Ｄ−１以下の全てのｄについて、前記第ｄ組目の１次元フーリエ変換を演算するように構成され、かつ、
前記第ｄ組目の１次元フーリエ変換において演算すべき１次元データの数をＭdとし、ｍ＝１，２，・・・，Ｍd−１、ｎ＝１，２，・・・，Ｎ−１として、
前記第ｄ組目の１次元フーリエ変換のそれぞれを演算する際に、
前記第１演算ステージを含む第１番目の演算ステージの組を割り当てられた演算手段が、第ｍ番目の１次元データに対し、前記第１番目の演算ステージの組を実行し、その結果を当該演算手段の第ｍ番目の演算結果として、前記演算結果交換手段を介し、第２番目の演算ステージの組が割り当てられた演算手段に送信し、それと同時に第ｍ＋１番目の１次元データに対し、第１番目の演算ステージの組を実行し、その結果を当該演算手段の第ｍ＋１番目の演算結果として、前記演算結果交換手段を介し、第２番目の演算ステージの組が割り当てられた演算手段に送信し、
第ｎ番目の演算ステージの組を割り当てられた演算手段が、第ｎ−１番目の演算ステージの組を割り当てられた演算手段の第ｍ番目の演算結果に対し、前記第ｎ番目の演算ステージの組を実行し、その結果を当該演算手段の第ｍ番目の演算結果として、前記演算結果交換手段を介し、第ｎ＋１番目の演算ステージの組が割り当てられた演算手段に送信し、それと同時に第ｎ−１番目の演算ステージの組を割り当てられた演算手段の第ｍ＋１番目の演算結果に対し、第ｎ番目の演算ステージの組を実行し、その結果を当該演算手段の第ｍ＋１番目の演算結果として、前記演算結果交換手段を介し、第ｎ＋１番目の演算ステージの組が割り当てられた演算手段に送信し、
前記第ｎd演算ステージを含む第Ｎ番目の演算ステージの組を割り当てられた演算手段が、第Ｎ−１番目の演算ステージの組を割り当てられた演算手段の第ｍ番目の演算結果に対し、前記第Ｎ番目の演算ステージの組を実行し、その演算結果を蓄積し、第Ｎ−１番目の演算ステージの組を割り当てられた演算手段の第ｍ＋１番目の演算結果に対し、第Ｎ番目の演算ステージの組を実行し、その演算結果を蓄積するように構成されており、
０以上Ｄ−２以下の全てのｄについて、
前記第ｄ番目の１次元フーリエ変換を演算する際に第Ｎ番目の演算ステージの組を割り当てられた演算手段が、次に実行する第ｄ＋１組目の１次元フーリエ変換を演算する際に第１番目の演算ステージの組を割り当てられている
ことを特徴とする多次元高速フーリエ変換並列演算装置。
【請求項４】
前記１次元フーリエ変換を行う所定の演算アルゴリズムがCooley-Tukeyの手法であることを特徴とする請求項３記載の多次元高速フーリエ変換並列演算装置。
【請求項５】
複数の演算手段と前記複数の演算手段のうちのいずれかの演算手段で演算された演算結果を受信して前記複数の演算手段のうちの他の演算手段に送信する演算結果交換手段とを有するコンピュータに、Ｄ（Ｄは２以上の整数）次元のデータに対する多次元高速フーリエ変換を、前記Ｄ次元のデータを互いに直交する軸方向の１次元データに分割して得たＤ組の１次元データそれぞれに対する１次元フーリエ変換を所定の演算アルゴリズムに基づき並列演算によって実行させる多次元高速フーリエ変換並列演算プログラムを記録した記録媒体であって、
前記Ｄ組の１次元データそれぞれに対する１次元フーリエ変換のうちの第ｄ（ｄは０以上Ｄ−１以下の整数）組目の１次元フーリエ変換における演算が、当該１次元データに含まれるエレメント数Ｎd（Ｎdは２以上の整数）の素因数の数をｎd（ｎdは２以上の整数）としてｎd個の演算ステージに分解され、
前記ｎd個の演算ステージのうち最初に実行される第１演算ステージは、行方向に並べられた１次元データに対して、該１次元データを分割する処理と、分割されたデータを列方向に並べる処理と、行方向および列方向に並べられたデータを列方向に１次元フーリエ変換する処理とを含み、
前記ｎd個の演算ステージのうち２番目ないしｎd−１番目に実行される第２ないし第ｎd−１演算ステージは、行方向に並べられた１次元データに対して、該１次元データの各エレメントにひねり係数を乗算する処理と、乗算されたデータを分割する処理と、分割されたデータを列方向に並べる処理と、行方向および列方向に並べられたデータを列方向に１次元フーリエ変換する処理とを含み、
前記ｎd個の演算ステージのうち最後に実行される第ｎd演算ステージは、行方向に並べられた１次元データに対して、該１次元データの各エレメントにひねり係数を乗算する処理と、乗算されたデータを行方向に１次元フーリエ変換する処理とを含み、
前記ｎd個の演算ステージが、それぞれ連続して順次演算される１以上の演算ステージからなるＮ（Ｎは２以上ｎd以下の整数）組の演算ステージの組に組分けされ、
前記Ｎ組の演算ステージの組が、それぞれ前記複数の演算手段に割り当てられている場合に、
前記コンピュータに、０以上Ｄ−１以下の全てのｄについて、前記第ｄ組目の１次元フーリエ変換を演算する処理を実行させ、
前記第ｄ組目の１次元フーリエ変換において演算すべき１次元データの数をＭdとし、ｍ＝１，２，・・・，Ｍd−１、ｎ＝１，２，・・・，Ｎ−１として、
前記第ｄ組目の１次元フーリエ変換を演算する処理のそれぞれが、
前記第１演算ステージを含む第１番目の演算ステージの組を割り当てられた演算手段が、第ｍ番目の１次元データに対し、前記第１番目の演算ステージの組を実行し、その結果を当該演算手段の第ｍ番目の演算結果として、前記演算結果交換手段を介し、第２番目の演算ステージの組が割り当てられた演算手段に送信し、それと同時に第ｍ＋１番目の１次元データに対し、第１番目の演算ステージの組を実行し、その結果を当該演算手段の第ｍ＋１番目の演算結果として、前記演算結果交換手段を介し、第２番目の演算ステージの組が割り当てられた演算手段に送信する処理と、
第ｎ番目の演算ステージの組を割り当てられた演算手段が、第ｎ−１番目の演算ステージの組を割り当てられた演算手段の第ｍ番目の演算結果に対し、前記第ｎ番目の演算ステージの組を実行し、その結果を当該演算手段の第ｍ番目の演算結果として、前記演算結果交換手段を介し、第ｎ＋１番目の演算ステージの組が割り当てられた演算手段に送信し、それと同時に第ｎ−１番目の演算ステージの組を割り当てられた演算手段の第ｍ＋１番目の演算結果に対し、第ｎ番目の演算ステージの組を実行し、その結果を当該演算手段の第ｍ＋１番目の演算結果として、前記演算結果交換手段を介し、第ｎ＋１番目の演算ステージの組が割り当てられた演算手段に送信する処理と、
前記第ｎd演算ステージを含む第Ｎ番目の演算ステージの組を割り当てられた演算手段が、第Ｎ−１番目の演算ステージの組を割り当てられた演算手段の第ｍ番目の演算結果に対し、前記第Ｎ番目の演算ステージの組を実行し、その演算結果を蓄積し、第Ｎ−１番目の演算ステージの組を割り当てられた演算手段の第ｍ＋１番目の演算結果に対し、第Ｎ番目の演算ステージの組を実行し、その演算結果を蓄積する処理とを含み、
０以上Ｄ−２以下の全てのｄについて、
前記第ｄ番目の１次元フーリエ変換を演算する処理において第Ｎ番目の演算ステージの組を割り当てられた演算手段が、次に実行する第ｄ＋１組目の１次元フーリエ変換を演算する処理において第１番目の演算ステージの組を割り当てられている
ことを特徴とする多次元高速フーリエ変換並列演算プログラムを記録した記録媒体。
【請求項６】
前記１次元フーリエ変換を行う所定の演算アルゴリズムがCooley-Tukeyの手法であることを特徴とする請求項５記載の多次元高速フーリエ変換並列演算プログラムを記録した記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、例えば、コンピュータにより演算される多次元のデータに対する多次元高速フーリエ変換並列演算方法および装置ならびに演算プログラムを記録した記録媒体に関するものである。
【０００２】
【従来の技術】
複数の演算手段を使用して、多次元フーリエ変換を並列処理する方式の例が、例えば、「水野政治、宮田裕行、二次元ＦＦＴの並列処理手法の検討、情報処理学会研究報告98-ARC-128 98-HPC-70,Vol.No.18,pp.13-18,1998」では、各演算手段に２つの演算結果送受信手段を設けて演算手段をリング型に接続し、それぞれの演算手段から時間的に同時に出力された演算結果を並列転送することにより、演算結果の転送による時間の短縮を行っている。
【０００３】
また、例えば、「國枝博昭、伊藤和人、メッシュ結合マルチプロセッサシステムにおける２次元ＦＦＴアルゴリズム、電子情報通信学会論文誌A,Vol.J71-A,No.7,pp.1424-1431,1988」では、各演算手段に４つの演算結果送受信手段を設けて演算手段をメッシュ状に接続し、それぞれの演算手段から時間的に同時に出力された演算結果を並列転送することにより、演算結果の転送による時間の短縮を行っている。
【０００４】
また、例えば、「丹野洲宣、武田利浩、堀口進、８隣接プロセッサ・アレイによる並列２−ＤＦＦＴアルゴリズム、情報処理学会第４４回（平成４年前期）全国大会講演論文集(1), pp.1-85-1-86,1985」では、各演算手段に８つの演算結果送受信手段を設けて演算手段をメッシュ状に接続し、それぞれの演算手段から時間的に同時に出力された演算結果を並列転送することにより、演算結果の転送による時間の短縮を行っている。
【０００５】
【発明が解決しようとする課題】
しかしながら、上記の従来技術で書かれている方法では、１つの演算手段に対して複数の演算結果送受信手段が必要となるため、非常に多数の演算手段を用いた大規模な装置を作成する際に、演算結果を通信する通信線が膨大となり、事実上装置を構築することができなくなる、という欠点を持つ。
【０００６】
また、上記の従来技術で書かれている方法での構成で装置が構築できたとしても、演算結果送受信手段と通信線が多数必要となるため、多くの費用がかかる、という欠点を持つ。
【０００７】
また、上記の問題を解決するために、１つの演算手段に対して演算結果送受信手段を１つにして、例えばＴＣＰ／ＩＰプロトコルを用いて仮想的にその１つの物理通信路上で複数の通信路を設けるような手法を採用した場合、上記の従来技術に書かれている方法では演算結果が時間的に同時に出力されるため、物理的な通信路の転送が輻湊し、転送時間が多く必要となる、という欠点を持つ。
【０００８】
本発明は、上記課題に鑑みてなされたもので、通信路及び転送時間を増大させることなく多次元高速フーリエ変換並列演算をより簡易な構成で高速に演算処理することのできる多次元高速フーリエ変換並列演算方法および装置ならびに演算プログラムを記録した記録媒体を提供することを目的とする。
【００１１】
【課題を解決するための手段】
前述した目的を達成するために、本発明は、１次元フーリエ変換を演算する複数の演算手段と前記複数の演算手段のうちのいずれかの演算手段で演算された１次元フーリエ変換の演算結果を受信して前記複数の演算手段のうちの他の演算手段に送信する演算結果交換手段とを有する多次元高速フーリエ変換並列演算装置が、Ｄ（Ｄは２以上の整数）次元のデータに対する多次元高速フーリエ変換を、前記Ｄ次元のデータを互いに直交する軸方向の１次元データに分割して得たＤ組の１次元データそれぞれに対する１次元フーリエ変換を所定の演算アルゴリズムに基づき並列演算することによって行う多次元高速フーリエ変換並列演算方法であって、前記Ｄ組の１次元データそれぞれに対する１次元フーリエ変換のうちの第ｄ（ｄは０以上Ｄ−１以下の整数）組目の１次元フーリエ変換における演算が、当該１次元データに含まれるエレメント数Ｎd（Ｎdは２以上の整数）の素因数の数をｎd（ｎdは２以上の整数）としてｎd個の演算ステージに分解され、前記ｎd個の演算ステージのうち最初に実行される第１演算ステージは、行方向に並べられた１次元データに対して、該１次元データを分割する処理と、分割されたデータを列方向に並べる処理と、行方向および列方向に並べられたデータを列方向に１次元フーリエ変換する処理とを含み、前記ｎd個の演算ステージのうち２番目ないしｎd−１番目に実行される第２ないし第ｎd−１演算ステージは、行方向に並べられた１次元データに対して、該１次元データの各エレメントにひねり係数を乗算する処理と、乗算されたデータを分割する処理と、分割されたデータを列方向に並べる処理と、行方向および列方向に並べられたデータを列方向に１次元フーリエ変換する処理とを含み、前記ｎd個の演算ステージのうち最後に実行される第ｎd演算ステージは、行方向に並べられた１次元データに対して、該１次元データの各エレメントにひねり係数を乗算する処理と、乗算されたデータを行方向に１次元フーリエ変換する処理とを含み、前記ｎd個の演算ステージが、それぞれ連続して順次演算される１以上の演算ステージからなるＮ（Ｎは２以上ｎd以下の整数）組の演算ステージの組に組分けされ、前記Ｎ組の演算ステージの組が、それぞれ前記複数の演算手段に割り当てられている場合に、０以上Ｄ−１以下の全てのｄについて、前記第ｄ組目の１次元フーリエ変換を演算する手順を有し、前記第ｄ組目の１次元フーリエ変換において演算すべき１次元データの数をＭdとし、ｍ＝１，２，・・・，Ｍd−１、ｎ＝１，２，・・・，Ｎ−１として、前記第ｄ組目の１次元フーリエ変換を演算する手順のそれぞれが、前記第１演算ステージを含む第１番目の演算ステージの組を割り当てられた演算手段が、第ｍ番目の１次元データに対し、前記第１番目の演算ステージの組を実行し、その結果を当該演算手段の第ｍ番目の演算結果として、前記演算結果交換手段を介し、第２番目の演算ステージの組が割り当てられた演算手段に送信し、それと同時に第ｍ＋１番目の１次元データに対し、第１番目の演算ステージの組を実行し、その結果を当該演算手段の第ｍ＋１番目の演算結果として、前記演算結果交換手段を介し、第２番目の演算ステージの組が割り当てられた演算手段に送信する手順と、第ｎ番目の演算ステージの組を割り当てられた演算手段が、第ｎ−１番目の演算ステージの組を割り当てられた演算手段の第ｍ番目の演算結果に対し、前記第ｎ番目の演算ステージの組を実行し、その結果を当該演算手段の第ｍ番目の演算結果として、前記演算結果交換手段を介し、第ｎ＋１番目の演算ステージの組が割り当てられた演算手段に送信し、それと同時に第ｎ−１番目の演算ステージの組を割り当てられた演算手段の第ｍ＋１番目の演算結果に対し、第ｎ番目の演算ステージの組を実行し、その結果を当該演算手段の第ｍ＋１番目の演算結果として、前記演算結果交換手段を介し、第ｎ＋１番目の演算ステージの組が割り当てられた演算手段に送信する手順と、前記第ｎd演算ステージを含む第Ｎ番目の演算ステージの組を割り当てられた演算手段が、第Ｎ−１番目の演算ステージの組を割り当てられた演算手段の第ｍ番目の演算結果に対し、前記第Ｎ番目の演算ステージの組を実行し、その演算結果を蓄積し、第Ｎ−１番目の演算ステージの組を割り当てられた演算手段の第ｍ＋１番目の演算結果に対し、第Ｎ番目の演算ステージの組を実行し、その演算結果を蓄積する手順とを含み、０以上Ｄ−２以下の全てのｄについて、前記第ｄ番目の１次元フーリエ変換を演算する手順において第Ｎ番目の演算ステージの組を割り当てられた演算手段が、次に実行する第ｄ＋１組目の１次元フーリエ変換を演算する手順において第１番目の演算ステージの組を割り当てられていることを要旨とする。
【００１２】
すなわち本発明は、多次元高速フーリエ変換を並列に演算する方法であり、演算手段で演算した演算結果は演算結果送受信手段に送られ、演算結果交換手段を通して、別の演算結果送受信手段に送られ、さらにその演算結果送受信手段に接続している演算手段に送られること、多次元フーリエ変換を次元数分の１次元フーリエ変換を演算することにより行うこと、また各１次元フーリエ変換の演算アルゴリズムとしてCooley-Tukeyの手法を用いたときに、Cooley-Tukeyの手法では、１次元フーリエ変換を演算するために、１次元フーリエ変換するデータに含まれるエレメント数（データの要素数）の素因数の数に等しい数の演算ステージに分解して演算を行うが、その１つまたは複数の演算ステージを１つまたは複数の演算手段に割り当てること、多次元フーリエ変換を行うため複数の１次元フーリエ変換を演算する際には、まず、１つ目の１次元フーリエ変換の第１ステージの演算を行い、演算結果を次の第２ステージの演算を行う演算手段に演算結果を送り、それと同時に２つめの１次元フーリエ変換の第１ステージの演算を行うこと、演算ステージの中間段階では、ｍ番目の１次元フーリエ変換の第ｎステージの演算を行い、演算結果を次の第ｎ＋１ステージの演算を行う演算手段に演算結果を送り、それと同時にｍ＋１番目の１次元フーリエ変換の第ｎステージの演算を行うこと、演算ステージの最終段階では、最後の演算ステージを行う演算手段に全ての１次元フーリエ変換の演算結果を蓄積しておき、全ての１次元フーリエ変換の演算結果が算出された後に、その演算手段を用いて次の次元の１次元フーリエ変換の第１ステージを演算する。
【００１３】
なおCooley-Tukeyの手法は、１次元フーリエ変換を行うアルゴリズムの１つであり、このアルゴリズムにより１次元フーリエ変換を高速化することが可能となる。
【００１４】
これにより、ある次元の１次元フーリエ変換を行った後、次の次元の１次元フーリエ変換を行う際に、１つの演算手段内で、ある次元の１次元フーリエ変換の最終ステージと次の次元の１次元フーリエ変換の最初のステージを行うことから、演算手段間の演算結果の転送が不要となり、全体の処理時間が短縮できる。
【００１５】
１次元フーリエ変換内の演算においては、演算ステージの演算と、演算ステージ間の演算結果の転送が同時に行えるフーリエ変換演算方法のため、演算時間または転送時間を隠ぺいすることができ、全体の処理時間が短縮できる。
【００１６】
また、本発明は、１次元フーリエ変換を演算する複数の演算手段と前記複数の演算手段のうちのいずれかの演算手段で演算された１次元フーリエ変換の演算結果を受信して前記複数の演算手段のうちの他の演算手段に送信する演算結果交換手段とを有し、Ｄ（Ｄは２以上の整数）次元のデータに対する多次元高速フーリエ変換を、前記Ｄ次元のデータを互いに直交する軸方向の１次元データに分割して得たＤ組の１次元データそれぞれに対する１次元フーリエ変換を所定の演算アルゴリズムに基づき並列演算することによって行う多次元高速フーリエ変換並列演算装置であって、前記Ｄ組の１次元データそれぞれに対する１次元フーリエ変換のうちの第ｄ（ｄは０以上Ｄ−１以下の整数）組目の１次元フーリエ変換における演算が、当該１次元データに含まれるエレメント数Ｎd（Ｎdは２以上の整数）の素因数の数をｎd（ｎdは２以上の整数）としてｎd個の演算ステージに分解され、前記ｎd個の演算ステージのうち最初に実行される第１演算ステージは、行方向に並べられた１次元データに対して、該１次元データを分割する処理と、分割されたデータを列方向に並べる処理と、行方向および列方向に並べられたデータを列方向に１次元フーリエ変換する処理とを含み、前記ｎd個の演算ステージのうち２番目ないしｎd−１番目に実行される第２ないし第ｎd−１演算ステージは、行方向に並べられた１次元データに対して、該１次元データの各エレメントにひねり係数を乗算する処理と、乗算されたデータを分割する処理と、分割されたデータを列方向に並べる処理と、行方向および列方向に並べられたデータを列方向に１次元フーリエ変換する処理とを含み、前記ｎd個の演算ステージのうち最後に実行される第ｎd演算ステージは、行方向に並べられた１次元データに対して、該１次元データの各エレメントにひねり係数を乗算する処理と、乗算されたデータを行方向に１次元フーリエ変換する処理とを含み、前記ｎd個の演算ステージが、それぞれ連続して順次演算される１以上の演算ステージからなるＮ（Ｎは２以上ｎd以下の整数）組の演算ステージの組に組分けされ、前記Ｎ組の演算ステージの組が、それぞれ前記複数の演算手段に割り当てられており、０以上Ｄ−１以下の全てのｄについて、前記第ｄ組目の１次元フーリエ変換を演算するように構成され、かつ、前記第ｄ組目の１次元フーリエ変換において演算すべき１次元データの数をＭdとし、ｍ＝１，２，・・・，Ｍd−１、ｎ＝１，２，・・・，Ｎ−１として、前記第ｄ組目の１次元フーリエ変換のそれぞれを演算する際に、前記第１演算ステージを含む第１番目の演算ステージの組を割り当てられた演算手段が、第ｍ番目の１次元データに対し、前記第１番目の演算ステージの組を実行し、その結果を当該演算手段の第ｍ番目の演算結果として、前記演算結果交換手段を介し、第２番目の演算ステージの組が割り当てられた演算手段に送信し、それと同時に第ｍ＋１番目の１次元データに対し、第１番目の演算ステージの組を実行し、その結果を当該演算手段の第ｍ＋１番目の演算結果として、前記演算結果交換手段を介し、第２番目の演算ステージの組が割り当てられた演算手段に送信し、第ｎ番目の演算ステージの組を割り当てられた演算手段が、第ｎ−１番目の演算ステージの組を割り当てられた演算手段の第ｍ番目の演算結果に対し、前記第ｎ番目の演算ステージの組を実行し、その結果を当該演算手段の第ｍ番目の演算結果として、前記演算結果交換手段を介し、第ｎ＋１番目の演算ステージの組が割り当てられた演算手段に送信し、それと同時に第ｎ−１番目の演算ステージの組を割り当てられた演算手段の第ｍ＋１番目の演算結果に対し、第ｎ番目の演算ステージの組を実行し、その結果を当該演算手段の第ｍ＋１番目の演算結果として、前記演算結果交換手段を介し、第ｎ＋１番目の演算ステージの組が割り当てられた演算手段に送信し、前記第ｎd演算ステージを含む第Ｎ番目の演算ステージの組を割り当てられた演算手段が、第Ｎ−１番目の演算ステージの組を割り当てられた演算手段の第ｍ番目の演算結果に対し、前記第Ｎ番目の演算ステージの組を実行し、その演算結果を蓄積し、第Ｎ−１番目の演算ステージの組を割り当てられた演算手段の第ｍ＋１番目の演算結果に対し、第Ｎ番目の演算ステージの組を実行し、その演算結果を蓄積するように構成されており、０以上Ｄ−２以下の全てのｄについて、前記第ｄ番目の１次元フーリエ変換を演算する際に第Ｎ番目の演算ステージの組を割り当てられた演算手段が、次に実行する第ｄ＋１組目の１次元フーリエ変換を演算する際に第１番目の演算ステージの組を割り当てられていることを要旨とする。
【００１７】
これにより、本発明は１次元フーリエ変換内の演算においては、演算ステージの演算と、演算ステージ間の演算結果の転送が同時に行えるフーリエ変換演算方法のため、演算時間または転送時間を隠ぺいすることができ、全体の処理時間が短縮できる。
【００１８】
また、本発明の多次元高速フーリエ変換並列演算装置は、１次元フーリエ変換を行う所定の演算アルゴリズムがCooley-Tukeyの手法であることを要旨とする。これにより、１次元フーリエ変換を行うアルゴリズムの１つであるCooley-Tukeyの手法を用いることになるので１次元フーリエ変換を高速化する。
【００２１】
また、本発明は、複数の演算手段と前記複数の演算手段のうちのいずれかの演算手段で演算された演算結果を受信して前記複数の演算手段のうちの他の演算手段に送信する演算結果交換手段とを有するコンピュータに、Ｄ（Ｄは２以上の整数）次元のデータに対する多次元高速フーリエ変換を、前記Ｄ次元のデータを互いに直交する軸方向の１次元データに分割して得たＤ組の１次元データそれぞれに対する１次元フーリエ変換を所定の演算アルゴリズムに基づき並列演算によって実行させる多次元高速フーリエ変換並列演算プログラムを記録した記録媒体であって、前記Ｄ組の１次元データそれぞれに対する１次元フーリエ変換のうちの第ｄ（ｄは０以上Ｄ−１以下の整数）組目の１次元フーリエ変換における演算が、当該１次元データに含まれるエレメント数Ｎd（Ｎdは２以上の整数）の素因数の数をｎd（ｎdは２以上の整数）としてｎd個の演算ステージに分解され、前記ｎd個の演算ステージのうち最初に実行される第１演算ステージは、行方向に並べられた１次元データに対して、該１次元データを分割する処理と、分割されたデータを列方向に並べる処理と、行方向および列方向に並べられたデータを列方向に１次元フーリエ変換する処理とを含み、前記ｎd個の演算ステージのうち２番目ないしｎd−１番目に実行される第２ないし第ｎd−１演算ステージは、行方向に並べられた１次元データに対して、該１次元データの各エレメントにひねり係数を乗算する処理と、乗算されたデータを分割する処理と、分割されたデータを列方向に並べる処理と、行方向および列方向に並べられたデータを列方向に１次元フーリエ変換する処理とを含み、前記ｎd個の演算ステージのうち最後に実行される第ｎd演算ステージは、行方向に並べられた１次元データに対して、該１次元データの各エレメントにひねり係数を乗算する処理と、乗算されたデータを行方向に１次元フーリエ変換する処理とを含み、前記ｎd個の演算ステージが、それぞれ連続して順次演算される１以上の演算ステージからなるＮ（Ｎは２以上ｎd以下の整数）組の演算ステージの組に組分けされ、前記Ｎ組の演算ステージの組が、それぞれ前記複数の演算手段に割り当てられている場合に、前記コンピュータに、０以上Ｄ−１以下の全てのｄについて、前記第ｄ組目の１次元フーリエ変換を演算する処理を実行させ、前記第ｄ組目の１次元フーリエ変換において演算すべき１次元データの数をＭdとし、ｍ＝１，２，・・・，Ｍd−１、ｎ＝１，２，・・・，Ｎ−１として、前記第ｄ組目の１次元フーリエ変換を演算する処理のそれぞれが、前記第１演算ステージを含む第１番目の演算ステージの組を割り当てられた演算手段が、第ｍ番目の１次元データに対し、前記第１番目の演算ステージの組を実行し、その結果を当該演算手段の第ｍ番目の演算結果として、前記演算結果交換手段を介し、第２番目の演算ステージの組が割り当てられた演算手段に送信し、それと同時に第ｍ＋１番目の１次元データに対し、第１番目の演算ステージの組を実行し、その結果を当該演算手段の第ｍ＋１番目の演算結果として、前記演算結果交換手段を介し、第２番目の演算ステージの組が割り当てられた演算手段に送信する処理と、第ｎ番目の演算ステージの組を割り当てられた演算手段が、第ｎ−１番目の演算ステージの組を割り当てられた演算手段の第ｍ番目の演算結果に対し、前記第ｎ番目の演算ステージの組を実行し、その結果を当該演算手段の第ｍ番目の演算結果として、前記演算結果交換手段を介し、第ｎ＋１番目の演算ステージの組が割り当てられた演算手段に送信し、それと同時に第ｎ−１番目の演算ステージの組を割り当てられた演算手段の第ｍ＋１番目の演算結果に対し、第ｎ番目の演算ステージの組を実行し、その結果を当該演算手段の第ｍ＋１番目の演算結果として、前記演算結果交換手段を介し、第ｎ＋１番目の演算ステージの組が割り当てられた演算手段に送信する処理と、前記第ｎd演算ステージを含む第Ｎ番目の演算ステージの組を割り当てられた演算手段が、第Ｎ−１番目の演算ステージの組を割り当てられた演算手段の第ｍ番目の演算結果に対し、前記第Ｎ番目の演算ステージの組を実行し、その演算結果を蓄積し、第Ｎ−１番目の演算ステージの組を割り当てられた演算手段の第ｍ＋１番目の演算結果に対し、第Ｎ番目の演算ステージの組を実行し、その演算結果を蓄積する処理とを含み、０以上Ｄ−２以下の全てのｄについて、前記第ｄ番目の１次元フーリエ変換を演算する処理において第Ｎ番目の演算ステージの組を割り当てられた演算手段が、次に実行する第ｄ＋１組目の１次元フーリエ変換を演算する処理において第１番目の演算ステージの組を割り当てられていることを要旨とする。
【００２２】
これにより本発明にあっては、多次元高速フーリエ変換並列演算プログラムを記録媒体に記録しているため、該記録媒体を利用して、その多次元高速フーリエ変換並列演算プログラムの流通性を高めることができる。
【００２３】
さらに、本発明の多次元高速フーリエ変換並列演算プログラムを記録したコンピュータ読み取り可能な記録媒体は、１次元フーリエ変換を行う所定の演算アルゴリズムがCooley-Tukeyの手法であることを要旨とする。
【００２４】
これにより、１次元フーリエ変換を行うアルゴリズムの１つであるCooley-Tukeyの手法を用いることになるので１次元フーリエ変換を高速化する。
【００２５】
【発明の実施の形態】
以下、図面を用いて本発明の実施の形態について説明する。
【００２６】
図１は本発明の一実施の形態に係る多次元高速フーリエ変換並列演算方法が適用される多次元高速フーリエ変換並列演算装置の構成を示すブロック図である。同図に示す多次元高速フーリエ変換並列演算装置は、演算手段２００，２０１，２０２，２０３、演算結果送受信手段２１０，２１１，２１２，２１３、演算結果交換手段２２０、演算結果を送受信するための通信路２３０，２３１，２３２，２３３により構成される。
【００２７】
ここでは、演算手段２００，２０１，２０２，２０３、演算結果送受信手段２１０，２１１，２１２，２１３、通信路２３０，２３１，２３２，２３３がそれぞれ４つずつ表記されているが、本実施形態は４つに限定されるものではなく、後述する図１０に示すステージ数ｎ以下であればよいものである。
【００２８】
すなわち、図１０に示すステージ０、〜、ｎ−１の演算を演算手段２００から２０３に割り当てることになる。例えば、ｎ＝８であるならば、ステージ０，１は演算手段２００に、ステージ２，３は演算手段２０１に、ステージ４，５は演算手段２０２に、ステージ６，７は演算手段２０３に割り当てる。
【００２９】
演算結果交換手段では通信路２３０，２３１，２３２，２３３は図２に示すような１方向にデータが流れるような接続を行う。ここで、３００，３０１，３０２，３０３は前記演算手段２００，２０１，２０２，２０３であり、３１０，３１１，３１２，３１３は前記演算結果送受信手段２１０，２１１，２１２，２１３であり、さらに３３０，３３１，３３２，３３３は演算結果を送受信するための前記通信路２３０，２３１，２３２，２３３である。
【００３０】
以下、図２を参照して、１次元フーリエ変換の処理手順の一例を説明する。以下の説明では演算手段、演算結果送受信手段はそれぞれ４個とし、演算手段３００ではステージ０、〜、ｎ0 、演算手段３０１ではステージｎ0 ＋１、〜、ｎ1 、演算手段３０２ではステージｎ1 ＋１、〜、ｎ2 、演算手段３０３ではステージｎ2 ＋１、〜、ｎ−１を行うものとする。また、演算手段３００にはフーリエ変換すべきデータがロードされているものとする。
【００３１】
なお、演算手段、演算結果送受信手段の数は上述したように４個に限定する必要はなく、ステージ数ｎ以下であればよい。また、ｎ，ｎ0 ，ｎ1 ，ｎ2 ，・・・・は、１次元フーリエ変換に関する記号であり、ｎは全ステージ数、ｎ0 ，ｎ1 ，ｎ2 ，・・・・はステージの番号を表す数字であり、０、〜、ｎ−１の範囲にある。
【００３２】
演算手段３００では、ステージ０、〜、ｎ0 の運算を行う。ステージｎ0 で算出された列方向１次元フーリエ変換は、演算結果送受信手段３１０、通信路３３０、演算結果送受信手段３１１を通して、演算手段３０１へ送られる。このとき、ステージｎ0 において列方向１次元フーリエ変換はＣ1 回行われるが、１回フーリエ変換が行われる毎に転送される。
【００３３】
演算手段３０１では、ステージｎ0 ＋１、〜、ｎ1 を行う。ステージｎ0 ＋１では、フーリエ係数を受信する毎に「ひねり係数」を乗ずる。ステージｎ1 で算出された列方向１次元フーリエ変換は、演算結果送受信手段３１１、通信路３３１、演算結果送受信手段３１２を通して、演算手段３０２へ送られる。このとき、ステージｎ1 において列方向１次元フーリエ変換はＣ2 回行われるが、１回フーリエ変換が行われる毎に転送される。
【００３４】
演算手段３０２では、ステージｎ1 ＋１、〜、ｎ2 を行う。ステージｎ1 ＋１では、フーリエ係数を受信する毎にひねり係数を乗ずる。ステージｎ2 で算出された列方向１次元フーリエ変換は、演算結果送受信手段３１２、通信路３３２、演算結果送受信手段３１３を通して、演算手段３０３へ送られる。このとき、ステージｎ2 において列方向１次元フーリエ変換はＣ3 回行われるが、１回フーリエ変換が行われる毎に転送される。
【００３５】
演算手段３０３では、ステージｎ2 ＋１、〜、ｎ−１を行う。ステージｎ2 ＋１では、フーリエ係数を受信する毎にひねり係数を乗ずる。これにより、ステージｎ−１で得られた行方向１次元フーリエ変換係数が、求める１次元フーリエ変換係数である。
【００３６】
次に、上記の１次元フーリエ変換を用いて、エレメント数がＮ0 ×Ｎ1 ×…×ＮD-1 のＤ次元データをフーリエ変換してフーリエ変換係数を求める場合についての一実施の形態を示す。
【００３７】
Ｄ次元データが互いに直交するＸ0 ，Ｘ1 ，…，ＸD-1 軸を用いて表されるとする。このとき、このＤ次元データのフーリエ変換は以下のように行う。
【００３８】
ステップＭ１：データをＸ0 軸方向のＮ1 ×…×ＮD-1 個の１次元データ（Ｘ0 軸に平行な並びの１次元データ）に分割する。
【００３９】
ステップＭ２：それぞれの１次元データをフーリエ変換し、フーリエ変換係数を算出する。
【００４０】
ステップＭ３：算出したフーリエ変換係数を、Ｘ1 軸方向のＮ0 ×Ｎ2 ×…×ＮD-1 の１次元データ（Ｘ1 軸に平行な並びの１次元データ）に分割する。
【００４１】
ステップＭ４：それぞれの１次元データをフーリエ変換し、フーリエ変換係数を算出する。
【００４２】
ステップＭ５：Ｘ2 ，Ｘ3 ，…，ＸD-1 軸に関しても同様の操作を順次行う。最後のＸD-1 軸に関して算出したフーリエ変換係数が求めるフーリエ変換係数である。
【００４３】
例えば、１６×１６（＝Ｎ0 ×Ｎ1 ）の２（＝Ｄ）次元データでは、図３に示すような操作を行う。まず、データをＸ0 軸方向の１６個の１次元データ（Ｘ0 に平行な並びの１次元データ）に分割して、それぞれの１次元データをフーリエ変換し、フーリエ変換係数を算出する。
【００４４】
次に、算出したフーリエ変換係数を、Ｘ1 軸方向の１６個の１次元データ（Ｘ1 軸に平行な並びの１次元データ）に分割して、それぞれの１次元データをフーリエ変換し、フーリエ変換係数を算出する。Ｘ1 軸に関して算出したフーリエ変換係数が求めるフーリエ変換係数である。
【００４５】
次に、多次元フーリエ変換の具体例を説明する。多次元フーリエ変換は後述するように複数の１次元フーリエ変換の実行により実現される。
【００４６】
そこで、まず図４乃至図１０を参照して、１次元フーリエ変換について述べ、その後、それを用いた多次元フーリエ変換についての実施の形態を述べる。
【００４７】
なお、ここで図４乃至図９は、１次元データまたは１次元フーリエ変換係数における「ひねり係数」を２次元的に並べ直した様子を示し、ｊ，ｋはそれらの図においては、縦方向と横方向の位置を示す。また、図４乃至図９においては、ｊは０、〜、Ｐ1 −１の整数、ｋは０、〜、Ｃ1 の整数である。
【００４８】
これにより、データｆ、フーリエ変換係数ｈは、ｊ，ｋで特定することができるようになる。例えば、データｆがＮ0 個あった場合、データの添字は０、〜、Ｎ0 −１の整数になり、これが０，・・・ｊ×Ｃ1 ＋ｋ・・・Ｎ0-1 と表記できるようになる。また、ひねり係数のＷの添字は、冪指数を表す。
【００４９】
１次元フーリエ変換はCooley-Tukeyのアルゴリズムにより行う。エレメント数がＮ0 の１次元データｆをフーリエ変換する場合のCooley-Tukeyのアルゴリズムによるフーリエ変換係数の算出方法を以下に示す。
【００５０】
ステップＳ１：エレメント数Ｎ0 を素数Ｐ1 とＣ1 （＝Ｎ0 ／Ｐ1 ）に分解する。
【００５１】
ステップＳ２：このときＮ0 ＝Ｐ1 であれば、このデータをＮ0 （＝Ｐ1 ）点フーリエ変換する。そうでなければ、図４に示すように、データをＣ1 個ずつに分割し並べる。
【００５２】
ステップＳ３：図５に示すように列方向について、それぞれＰ1 点１次元フーリエ変換する。そのフーリエ変換係数ｈを図６に示す。
【００５３】
ステップＳ４：図６の各項にひねり係数Ｗjk＝ｅｘｐ（−２πｉ×ｊ×ｋ）をかける。ただし、ｉは−１の平方根である。ｊ，ｋは位置に応じた数値である。その結果を図７に示す。
【００５４】
ステップＳ５：図８に示すように行方向について、それぞれＣ1 点１次元フーリエ変換係数を求めるが、このとき、図９に示すように、各行においてステップＳ１で示したＮ0 にＣ1 を置き換えてステップＳ１からステップＳ５を繰り返す。図９では素数Ｐ2 を用いてＣ2 ＝Ｃ1 ／Ｐ2 とし、エレメント数がＣ2 になるような分割を行っている。最後に出力されたフーリエ変換係数が求めるフーリエ変換係数である。
【００５５】
次に図１０を参照して、上記算出手法を用いて、エレメント数Ｎ0 （＝Ｐ1 Ｐ2 …Ｐn-1 ；Ｐi ，ｉ＝０、〜、ｎ−１は素数でありＰi ＝Ｐj であってもよい）の１次元データをフーリエ変換するときの処理手順の一例を説明する。
【００５６】
まず１次元データのエレメント数Ｎ0 を素数Ｐ1 とＣ1 （＝Ｎ0 ／Ｐ1 ）に分解し、エレメント数Ｃ1 ずつのＰ1 個データにし、図１０のように並べる。そして、列方向についてそれぞれＰ1 点１次元フーリエ変換する。フーリエ変換係数は図１０内では点線で示されている。次に各エレメントにひねり係数を乗じる。
【００５７】
その次に、Ｃ1 （＝Ｐ1 Ｐ2 …Ｐn-1 ）は素数ではないので、各行についてエレメント数Ｃ1 （＝Ｐ1 Ｐ2 …Ｐn-1 ）のデータ毎に以下の処理を行う。
【００５８】
まず、１次元データのエレメント数Ｃ1 を素数Ｐ2 とＣ2 （＝Ｃ1 ／Ｐ2 ）に分解し、エレメント数Ｃ2 ずつのＰ2 個データにし、図１０のように並べる。そして、列方向についてそれぞれＰ2 点１次元フーリエ変換する。フーリエ変換係数は図１０内では点線で示されている。次に各エレメントにひねり係数を乗じる。
【００５９】
以下、同様の操作を繰り返し、データのエレメント数が素因数に分解できないＣn-1 に達したときに、最下行に示すように、行方向のＣn-1 点１次元フーリエ変換を行ってフーリエ変換係数を算出する。この最後に算出されたフーリエ変換係数が求めるフーリエ変換係数である。
【００６０】
次に、図２を参照して、多次元高速フーリエ変換並列演算装置における、エレメント数がＮ0 ×Ｎ1 ×…×ＮD-1 のＤ次元データを多次元フーリエ変換する際の手順を説明する。
【００６１】
ここでは、Ｎ0 の素因数の数はｎ0 であり、Ｎ1 ，…，ＮD-1 については同様にｎ1 個，…，ｎD-1 個であるとする。また、全ての次元についての１次元フーリエ変換は演算手段３００または３０３から始まり、演算手段３０３または３００で終了するものとする。なお、演算手段３００にはフーリエ変換すべきデータがロードされているものとする。
【００６２】
まず、Ｘ0 軸方向のＮ1 ×…×ＮD-1 個の１次元データ（Ｘ0 軸に平行な並びの１次元データ）に分割し、それぞれの１次元データを演算手段３００，３０１，３０２，３０３の順でＮ0 点１次元フーリエ変換する。このとき、演算手段３００ではステージ０、〜、ｎ0,0 −１、演算手段３０１ではステージｎ0,0 、〜、ｎ0,1 −１、演算手段３０２ではステージｎ0,1 、〜、ｎ0,2 −１、演算手段３０３ではステージｎ0,2 、〜、ｎ0 −１を行うものとする。
【００６３】
なお、ここでｎ0 、ｎ0,0 、ｎ0,1 は、多次元（Ｄ＞１）フーリエ変換に関する記号であり、ｎ0 はＸ0 軸方向の１次元データをフーリエ変換する場合の全ステージ数であり、ｎ0,0 、ｎ0,1 はＸ0 軸方向の１次元データをフーリエ変換する場合のステージの番号を表す数字であり、０、〜、ｎ0 −１の範囲にある。
【００６４】
演算手段３００では、１つ目の１次元データの１次元フーリエ変換のステージ０、〜、ｎ0,0 −１を行い、これが終了して演算結果であるフーリエ変換係数を演算手段３０１へ送ると同時に、２つ目の１次元データの１次元フーリエ変換のステージ０、〜、ｎ0,0 −１を行う。さらに、３、〜、Ｎ1 ×…×ＮD-1 個目の１次元データも同様にして次々と演算しながら３０１へ演算結果を送出する。
【００６５】
演算手段３０１では、１つ目の１次元フーリエ変換係数を演算手段３００から受け取り、ステージｎ0,0 、〜、ｎ0,1 −１を行う。これが終了して演算結果であるフーリエ変換係数を演算手段３０２へ送る。これと平行して演算手段３００から２つ目の１次元フーリエ変換係数を受け取り、１つ目のステージｎ0,0 、〜、ｎ0,1 １の演算が終わり次第、２つ目のステージｎ0,0 、〜、ｎ0,1 −１の演算を行う。３、〜、Ｎ1 ×…×ＮD-1 個目の１次元データも同様にして次々と演算しながら３０２へ演算結果を送出する。
【００６６】
演算手段３０２では演算手段３０１と同様の操作をステージｎ0,1 、〜、ｎ0,2 −１について行う。
【００６７】
演算手段３０３では、１つ目の１次元フーリエ変換係数を演算手段３０２から受け取り、ステージｎ0,2 、〜、ｎ0 −１を行う。１つ目の１次元フーリエ変換が終了後に、この演算結果を演算手段３０３に記憶しておく。２、〜、Ｎ1 ×…×ＮD-1 個目の１次元フーリエ変換についても、終了後は演算結果を演算手段３０３に記憶しておく。
【００６８】
次に、Ｘ1 軸方向のＮ0 ×Ｎ2 ×…×ＮD-1 個の１次元データ（Ｘ1 軸に平行な並びの１次元データ）に分割し、それぞれの１次元データを演算手段３０３，３０２，３０１，３００というＸ0 軸方向の場合とは逆の順序でＮ1 点１次元フーリエ変換する。このとき、データの流れは図２とは逆になる。なお、演算手段３０３ではステージ０、〜、ｎ1,0 −１、演算手段３０２ではステージｎ1,0 、〜、ｎ1,1 −１、演算手段３０１ではステージｎ1,1 、〜、ｎ1,2 −１、演算手段３００ではステージｎ1,2 、〜、ｎ1 −１を行うものとする。
【００６９】
この場合もＸ0 軸方向の１次元フーリエ変換した場合と同様に、最終的な演算結果である１次元フーリエ変換係数は、演算手段３００に蓄積される。
【００７０】
Ｘ2 ，Ｘ3 ，…，ＸD-1 軸に関しても同様の操作を順次行う。最後のＸD-1 軸に関して演算したフーリエ変換係数が求めるフーリエ変換係数であり、Ｄが奇数のときは演算手段３０３に、Ｄが偶数のときは演算手段３００に蓄積される。
【００７１】
図１１、図１２に分割処理、フーリエ変換処理、ひねり係数の乗算処理等を行う演算手順３００，３０１，３０２，３０３内の演算処理時間と、演算結果送受信手段、演算結果交換手段、通信路による演算結果の通信時間の割り当てを示す。
【００７２】
なお、図中、Ｒ１、Ｒ２、Ｒ３、Ｒ４は、それぞれ
Ｒ１；０、〜、ｎ*,0 −１、
Ｒ２；ｎ*,2 、〜、ｎ* −１、
Ｒ３；ｎ*,0 、〜、ｎ*,1 −１、
Ｒ４；ｎ*,1 、〜、ｎ*,2 −１
である（但し、＊は任意の数字を表す。以下、同様）。
【００７３】
図１１は１つの演算処理時間が１つの通信時間より長い場合の図であり、図１２は１つの演算処理時間が１つの通信時間より短い場合の図である。縦軸は割り当てる項目を示し、演算手段内の処理と演算手段間の通信がある。横軸は経過時間を示す。
【００７４】
図１１、図１２で使用しているフーリエ変換するデータの次元は奇数のものであり、この場合は最後のＸD-１軸に関する処理が演算手段３０３内で行われるが、偶数であれば最後のＸD-１軸に関する処理が演算手段３００内で行われる。
【００７５】
図１１、図１２では、まず、演算手段３００において図１０に示すステージ０、〜、ｎ0,0 −１の１列目の処理をはじめ、処理が終了後、演算手段３０１へ演算結果を送出する。それと同時に２列目の処理を行う。図１１、図１２に示す１つの処理では、ステージ０では、列毎に１次元フーリエ変換を行うこと、ステージ１以上では列毎にひねり係数の乗算と１次元フーリエ変換を行う。
【００７６】
ステージｎ0,0 以降も同様にして処理を進めていき、演算手段３０３において全ての演算処理がすむとＸ0 軸方向の１次元フーリエ変換が終了する。その後、Ｘ1 軸方向の１次元フーリエを行うために、変換後は演算手段３０３からステージ０、〜、ｎ1,0 −１の処理をはじめる。以下、同様の操作を進め、ＸD-1 軸の１次元フーリエの実行終了後、全ての処理を終える。
【００７７】
その効果としては、ある次元の１次元フーリエ変換を行った後、次の次元の１次元フーリエ変換を行う際に、１つの演算手段内で、ある次元の１次元フーリエ変換の最終ステージと次の次元の１次元フーリエ変換の最初のステージを行うことから、演算手段間の演算結果の転送が不要となり、演算結果の転送時間が短縮できることから、全体の処理時間が短縮できる。
【００７８】
また、１次元フーリエ変換内の演算においては、演算ステージの演算と、演算ステージ間の演算結果の転送が同時に行えるフーリエ変換方法のため、演算時間または転送時間を隠ぺいすることができ、全体の処理時間が短縮できる。
【００７９】
図１１、図１２において、黒色部分は全体の処理時間を計測する上で陽に現れる時間を表しており、１つの演算処理時間が１つの通信時間より長い場合では、図１１で示すように、演算結果の転送時間が陽に現れるのは、１つの軸方向の１次元フーリエ変換当たり、３列分のみであり、その他の転送時間は演算にかかる時間で隠ぺいされる。
【００８０】
また、１つの演算処理時間が１つの通信時間より短い場合では、図１２で示すように、演算にかかる時間が陽に現れるのは、１つの軸方向の１次元フーリエ変換当たり、３列分のみであり、その他の演算にかかる時間は転送時間で隠ぺいされる。
【００８１】
また、１回の演算結果転送において転送される演算結果の量は小さいことと、演算結果送受信手段に同時に送受信される演算結果は２つしかないことから、１つの演算手段に対する演算結果送受信手段は最大２つで最大の速度が得られる。また、図２に示すように、演算結果の流れは通信路により決まっており、各演算結果送受信手段で受信する口と転送する口が決まっていることから、全二重通信の機能がある演算結果送受信手段を使用する場合は、１つの演算手段に対する演算結果送受信手段は１つで最大の速度が得られる。
【００８２】
このような多次元高速フーリエ変換並列演算は多次元高速フーリエ変換並列演算プログラムにより実現されるものであり、また該プログラムは記録媒体に記録して提供される。また該記録媒体を利用して、その多次元高速フーリエ変換並列演算プログラムの流通性を高めることができる。
【００８３】
【発明の効果】
以上説明したように、１つの演算手段内で、ある次元の１次元フーリエ変換の最終ステージと次の次元の１次元フーリエ変換の最初のステージを行うことから、演算手段間の演算結果の転送が不要となり、演算結果の転送時間が短縮できることから、全体の処理時間が短縮できる。
【００８４】
また、１次元フーリエ変換内の演算においては、演算ステージの演算と、演算ステージ間の演算結果の転送が同時に行えるフーリエ変換方法のため、演算時間または転送時間を隠ぺいすることができ、全体の処理時間が短縮できる。
【００８５】
また、１回の演算結果転送において転送される演算結果の量は小さいことと、演算結果送受信手段に同時に送受信される演算結果は２つしかないことから、１つの演算手段に対する演算結果送受信手段は１つで十分である。
【００８６】
また、演算結果の流れは通信路により決まっており、各演算結果送受信手段で受信する口と転送する口が決まっていることから、全二重通信の機能がある演算結果送受信手段を使用する場合は、１つの演算手段に対する演算結果送受信手段は１つで最大の速度が得られるという利点がある。
【図面の簡単な説明】
【図１】本発明に係る多次元高速フーリエ変換並列演算方法が適用される多次元高速フーリエ変換並列演算装置の一実施形態の概略の構成を示すブロック図である。
【図２】図１に示す一実施の形態におけるデータの流れを説明するための結線状態を示すブロック図である。
【図３】２次元フーリエ変換の処理手順を示す図である。
【図４】実施の形態におけるデータ分割を説明する図である。
【図５】実施の形態における列方向１次元フーリエ変換を説明する図である。
【図６】実施の形態における列方向１次元フーリエ変換係数を説明する図である。
【図７】実施の形態における列方向１次元フーリエ変換係数へのひねり係数の乗算を説明する図である。
【図８】実施の形態における行方向１次元フーリエ変換を説明する図である。
【図９】実施の形態における行のデータ分割を説明する図である。
【図１０】実施の形態における１次元フーリエ変換処理の全体を示す図である。
【図１１】１つの演算処理時間が１つの通信時間より長い場合の演算処理と通信の時間的割り当てを示す図である。
【図１２】１つの演算処理時間が１つの通信時間より短い場合の演算処理と通信の時間的割り当てを示す図である。
【符号の説明】
２００，２０１，２０２，２０３  演算手段
２１０，２１１，２１２，２１３  演算結果送受信手段
２２０  演算結果交換手段
２３０，２３１，２３２，２３３  通信路
３００，３０１，３０２，３０３  演算手段
３１０，３１１，３１２，３１３  演算結果送受信手段
３３０，３３１，３３２  通信路
【図１】
0003764318.tif 000002
【図２】
0003764318.tif 000003
【図３】
0003764318.tif 000004
【図４】
0003764318.tif 000005
【図５】
0003764318.tif 000006
【図６】
0003764318.tif 000007
【図７】
0003764318.tif 000008
【図８】
0003764318.tif 000009
【図９】
0003764318.tif 000010
【図１０】
0003764318.tif 000011
【図１１】
0003764318.tif 000012
【図１２】
0003764318.tif 000013