(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-03-12
(54)【発明の名称】多体シミュレーション
(51)【国際特許分類】
G06F 15/173 20060101AFI20240305BHJP
G06F 15/80 20060101ALI20240305BHJP
【FI】
G06F15/173 683D
G06F15/80
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023557730
(86)(22)【出願日】2022-03-18
(85)【翻訳文提出日】2023-11-14
(86)【国際出願番号】 US2022020915
(87)【国際公開番号】W WO2022198026
(87)【国際公開日】2022-09-22
(32)【優先日】2021-11-16
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2021-07-30
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2021-03-19
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】507005252
【氏名又は名称】ディ.イー.ショー リサーチ,エルエルシー
【氏名又は名称原語表記】D.E.SHAW RESEARCH,LLC
(74)【代理人】
【識別番号】100117606
【氏名又は名称】安部 誠
(74)【代理人】
【識別番号】100121186
【氏名又は名称】山根 広昭
(74)【代理人】
【識別番号】100136423
【氏名又は名称】大井 道子
(74)【代理人】
【識別番号】100154449
【氏名又は名称】谷 征史
(72)【発明者】
【氏名】バトソン, ブラノン
(72)【発明者】
【氏名】グレスカンプ, ブライアン リー
(72)【発明者】
【氏名】エドワーズ, ブルース
(72)【発明者】
【氏名】バッツ, ジェフリー アダム
(72)【発明者】
【氏名】フェントン, クリストファー ハワード
(72)【発明者】
【氏名】グロスマン, ジェフリー ポール
(72)【発明者】
【氏名】イエラルディ, ダクラス ジョン
(72)【発明者】
【氏名】レラー, アダム
(72)【発明者】
【氏名】トールズ, ブライアン パトリック
(72)【発明者】
【氏名】バーグドルフ, マイケル エドマンド
(72)【発明者】
【氏名】プリデスキュ, クリスチャン
(72)【発明者】
【氏名】サーモン, ジョン ケイ.
(72)【発明者】
【氏名】タウベ, アンドリュー ガービン
【テーマコード(参考)】
5B045
【Fターム(参考)】
5B045AA07
5B045BB24
(57)【要約】
分子動力学シミュレータにおける改良は、計算中のエネルギーを削減するとともに集積回路に占めるダイ面積を削減する方法を提供する。そのような改良の例は、異なる距離に対する異なる相互作用モジュールと、相互作用モジュールのアレイにおける行に沿ったストリーミングおよび列に沿ったマルチキャストの使用と、計算コストと通信コストとの均衡化に基づく計算ユニットの選択と、計算ユニットを接続するネットワークにおけるフェンスの使用と、特殊な結合計算を行う結合計算器の使用と、を含む。
【特許請求の範囲】
【請求項1】
計算ノードと、前記計算ノードを接続する通信リンクと、を含む装置であって、
原子の各ペアに対して、前記原子を相互作用させることに関与する1つ以上の計算ノードのセットが存在し、
1つ以上の計算ノードのセットの各選択に対し、前記相互作用を行うことから発生する計算負荷および計算ノード間の通信から発生する通信負荷が存在し、
原子の各ペアに対して、前記原子を相互作用させるために選択される集積回路は、前記通信負荷および前記計算負荷を占める集約コストを最小化するものである、装置。
【請求項2】
前記ノードは、前記原子のペアのうちいずれの原子についての情報も保存しないものである、請求項1に記載の装置。
【請求項3】
前記1つ以上のノードのセットは、前記原子のペアのうち最大で1つの原子に関する情報を保存するノードを含む、請求項1に記載の装置。
【請求項4】
前記1つ以上のノードのセットは、マンハッタン法(Manhattan Method)にともなう加算されたネットワーキングコストとフルシェル(Full-shell)法にともなう高い計算コストとを評価することにより選択される、請求項1に記載の装置。
【請求項5】
ネットワークリンクによってノードを備えたトロイダルネットワークに接続された集積回路を用いた、前記ノードはその各々が前記集積回路のうちの1つである、分子シミュレーションのための装置であって、
前記集積回路の各々は、化学系における原子の間の力を推定するよう構成されたコアタイルと、前記コアタイルを互いに接続するメッシュネットワークと、前記メッシュネットワークを用いてコアタイル間の運動通信を管理するエッジタイルと、を含み、
前記エッジタイルは他の集積回路との通信を管理するために前記ネットワークリンクに接続されており、前記装置は、前記コアタイルの各々に、ストリーミング原子を表す情報のストリームを受信するとともに保存された原子を表す情報を保存する相互作用回路を含み、
前記相互作用回路は、第1相互作用モジュールと、第2相互作用モジュールと、マッチング回路と、を含み、
前記第1および第2相互作用モジュールは、前記第1相互作用モジュールが前記第2相互作用モジュールよりも複雑な計算を行うように計算の複雑性が異なっており、
前記マッチング回路は、原子のペアの原子間距離を比較し、前記原子間距離が閾値未満のとき、前記第1相互作用モジュールを用いて前記原子の間の力を推定し、それ以外では前記第2相互作用モジュールを用いるように構成されている、
装置。
【請求項6】
前記第2相互作用モジュールは、複数の同一の第2相互作用モジュールのうちの1つである、請求項5に記載の装置。
【請求項7】
前記第2相互作用モジュールは、3つの第2相互作用モジュールのうちの1つであり、各第1相互作用モジュールに対して3つの第2相互作用モジュールがある、請求項5に記載の装置。
【請求項8】
前記第2相互作用モジュールは、所定数の第2相互作用モジュールのうちの1つであり、その数は、前記閾値が現象するについて増加するルールにより決定される、請求項5に記載の装置。
【請求項9】
前記第1相互作用モジュールは、静電効果と量子効果の両方に基づき前記力を推定するように構成されており、前記第2相互作用モジュールは、前記力を推定するとき前記量子効果を無視するように構成されている、請求項5に記載の装置。
【請求項10】
前記第1相互作用モジュールは、前記集積回路上で前記第2相互作用モジュールよりも多くの面積を占める、請求項5に記載の装置。
【請求項11】
前記第1相互作用モジュールは、相互作用計算あたりで前記第2相互作用モジュールよりも多くのエネルギーを消費する、請求項5に記載の装置。
【請求項12】
前記マッチング回路は、第1段と第2段とを備え、両者は、前記閾値を、原子のペア内の原子の間の原子間距離と比較し、
前記第2段は、前記第1段よりも正確な原子間距離の判定を実行し、
前記第1段は、前記閾値を、原子の複数のペアのセット内の原子の間の原子間距離と比較した後、前記複数のペアを前記第2段に転送し、そして前記第2段が前記第1段よりも正確に前記原子間距離を判定する、請求項5に記載の装置。
【請求項13】
前記マッチング回路は、前記閾値を、原子のペアのセット内の原子の間の原子間距離と比較することによって第1の量のエネルギーを消費し、
前記セットを、第1のサブセットと第2のサブセットとに分割し、前記第1のサブセット内のペアを破棄し、
前記閾値と、前記第2のサブセット内の原子の間の原子間距離との間での第2の比較を実行するため前記第2のサブセット内の前記ペアを転送するように構成され、前記第2の比較は、前記第1の比較よりも多くのエネルギーを消費する、請求項5に記載の装置。
【請求項14】
各原子は、前記原子の特性に基づくタイプインデックスで類型化され、
前記集積回路は、第1および第2情報を記憶する第1および第2領域を含み、
前記第1情報は、相互作用インデックスを前記タイプインデックスに関連付け、前記第2領域は、力推定法を前記相互作用インデックスに関連付ける、請求項5に記載の装置。
【請求項15】
各原子は、前記原子の特性に基づくタイプインデックスで類型化され、
前記集積回路上の半導体基板の領域が、2段階テーブルを格納するために確保されており、前記テーブルの第1段は相互作用インデックスを前記タイプインデックスに関連付け、前記テーブルの第2段は前記相互作用インデックスを複数の相互作用タイプのうちの1つに関連付ける情報を保存する、請求項5に記載の装置。
【請求項16】
前記集積回路の基板の一部は、その上に形成されたジオメトリコアを含み、
前記ジオメトリコアは、前記相互作用回路と通信し、前記相互作用回路によってサポートされない原子の間の相互作用をサポートするように構成されており、
前記相互作用回路は、前記相互作用の推定を前記ジオメトリコアに委ねるように構成されている、請求項5に記載の装置。
【請求項17】
前記集積回路の基板の一部は、その上に形成されたジオメトリコアを含み、前記ジオメトリコアは、前記相互作用回路と通信し、
前記相互作用回路は、原子のペアにおける原子の間の力を1回より多く推定し、その結果として冗長力が前記原子に作用し、
前記ジオメトリコアは、前記冗長力を減算するように構成されている、請求項5に記載の装置。
【請求項18】
分子シミュレーションのための装置であって、
前記装置は、通信リンクによって相互接続された計算ノードを備え、
前記計算ノードは、原子を相互作用させるように構成され、
前記計算ノードの各々は、汎用プロセッサと、前記汎用プロセッサからデータを受信する結合計算器とを備え、
前記結合計算器は、前記データの受信に応じて、結合に近接する原子間の相互作用から生じる前記結合の状態の変化を計算する、装置。
【請求項19】
前記結合計算器は、前記結合の長さの変化を計算するように構成されている、請求項18に記載の装置。
【請求項20】
前記結合計算器は、3つの原子の相互作用の結果としての前記結合の角度の変化を計算するように構成されている、請求項18に記載の装置。
【請求項21】
前記結合計算器は、4つの原子の相互作用の結果としての前記結合の二面角の変化を計算するように構成されている、請求項18に記載の装置。
【請求項22】
前記結合計算器は、前記計算を実行するために、前記汎用プロセッサが前記計算を行うのに使うエネルギーよりも少ないエネルギーを使うように構成されている、請求項18に記載の装置。
【請求項23】
分子動力学シミュレーションのための装置であって、
前記装置は、行と列とに配置されたタイルを含む集積回路を備え、
各タイルは、タイル行およびタイル列に配置され、
各タイルは、保存されたセット粒子を保存し、ストリーム化されたセット粒子を受信し、前記保存されたセット粒子を前記ストリーム化されたセット粒子と相互作用させ、
前記ストリーム化されたセット粒子は、前記タイル行に沿ってストリームされ、
各タイルは、その保存されたセット粒子を前記タイル列内の他のタイルにマルチキャストするように構成され、
それにより、前記保存されたセット粒子は、同時に多数のストリームセット粒子と相互作用を行う、装置。
【請求項24】
シミュレーション装置の処理ノード間でデータを通信するための方法であって、
前記通信は、シミュレーションされる複数の物体のうちの第1物体に対応するデータの送信を含み、
前記送信は、前記第1物体の物理的状態情報の繰り返し送信を含み、
前記方法は:
前記第1物体の第1物理状態データを第1処理ノードおよび第2処理ノードに保存するステップと、
前記第1処理ノードで前記第1物体の更新済物理状態データを計算するステップと、
前記第1処理ノードおよび前記第2処理ノードで、前記第1物理的状態データから前記第1物体についての予測物理的状態データを計算するステップと、
前記第1処理ノードで前記予測物理状態データと前記更新済物理状態データとから状態データ更新を決定するステップと、
前記状態更新データを前記第1処理ノードから前記第2処理ノードへ送信するステップと、
前記第2ノードに記憶された前記第1物理状態データと、前記第1処理ノードから前記第2処理ノードで受信された前記状態更新データとから、前記第2処理ノードで前記更新済み物理状態を決定するステップと、
を含む、方法。
【請求項25】
前記物理状態データは、前記第1物体の位置を含む、請求項24に記載の方法。
【請求項26】
前記物理状態データは、前記第1物体の速度を含むかまたは前記第1物体の速度を計算するのに用いられうる、請求項25に記載の方法。
【請求項27】
前記予測物理状態データは、前記第1物体の予測位置を含む、請求項25に記載の方法。
【請求項28】
前記予測物理状態データは、前記第1物体の予測速度を含む、請求項26に記載の方法。
【請求項29】
前記状態更新データを送信するステップは、前記更新済物理状態データを送信するのに必要なサイズよりも小さなメッセージで前記データを送信することを含む、請求項24に記載の方法。
【請求項30】
粒子のセットにおける粒子間の相互作用を計算するための方法であって、
各セットの粒子間の相互作用は、一連の計算を用いた近似の対象となり、
粒子の各セットに対して、
少なくともいくつかのセットは、他のセットとは異なる数の計算の選択を有しており、そのセットの粒子間の相互作用を近似するために行う計算の数を選択することと、
選択された数の計算に従って粒子間の相互作用を評価することと、
を含む、方法。
【請求項31】
粒子のセットにおける粒子間の相互作用を分散計算する方法であって、
粒子の第1セットの粒子について、複数の分散プロセッサで第1セットの粒子についてのデータを集めるステップと、
前記分散プロセッサの各プロセッサで、前記粒子についての集められたデータを処理して1つ以上の同一の乱数を形成するステップと、
前記1つ以上の乱数を、集められたデータに基づいて計算の結果と組み合わせるステップと、
各プロセッサで同一の乱数化された計算結果を生み出す前記組み合わせの精度を制限し、前記粒子の動的シミュレーションにおいて前記乱数化された計算結果を用いるステップと、
を含む方法。
【請求項32】
通信インフラストラクチャを介してシミュレーション装置の処理ノード間でデータを通信する方法であって、
前記通信は、連続するシミュレーション区間に関連づけられたメッセージの送信を含み、
第1シミュレーション区間において、第1受信処理ノードが、第1の複数の送信処理ノードから、そのシミュレーション区間のメッセージを受信し、
前記方法は:
第1の複数の処理ノードの各送信処理ノードで、第1シミュレーション区間に関連付けられたメッセージを第1受信処理ノードに送信し、第1シミュレーション区間に関連付けられたすべてのメッセージが送信されたことを示すメッセージを送信するステップを含み、
前記通信インフラストラクチャを用いて、前記第1の複数の処理ノードのうちすべての送信ノードから前記第1シミュレーション区間に関連付けられたすべてのメッセージが前記第1受信ノードへ配信された後、前記第1受信ノードにメッセージを配信するステップをさらに含む、
方法。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願
本出願は、2021年3月19日出願の米国仮出願第63/163,552号、2021年7月30日出願の米国仮出願第63/227,671号、および2021年11月16日出願の米国仮出願第63/279,788号の利益を主張するものであり、その内容は参照により本明細書に組み込まれる。
【0002】
発明者による先行開示の記載
ディヴィッド・E・ショー(Shaw, David E.)、ピーター・J・アダムズ(Peter J. Adams)、アサフ・アザリア(Asaph Azaria)、ジョゼフ・A・バンク(Joseph A. Bank)、ブランノン・バトソン(Brannon Batson)、アリステア・ベル(Alistair Bell)、マイケル・バーグドルフ(Michael Bergdorf)他、「アントン3:昼食前の20マイクロ秒の分子動力学シミュレーション(Anton 3: twenty microseconds of molecular dynamics simulation before lunch)」ハイパフォーマンスコンピューティング、ネットワーキング、ストレージ、およびアナリシスに関する国際会議会報、1~11頁、2021年11月、DOI:10.1145/3458817.3487397
【0003】
クン・スプ・シム(Keun Sup Shim)、ブライアン・グレスカンプ(Brian Greskamp)、ブライアン・タウルズ(Brian Towles)、ブルース・エドワーズ(Bruce Edwards)、J・P・グロスマン(J.P. Grossman)、ディヴィッド・E・ショー(David E. Shaw)、「Anton 3上の特殊高性能ネットワーク(The Specialized High-Performance Network on Anton 3)」、arXiv:2201.08357v1、2022年1月
【0004】
これらの文献は、本明細書に参照により組み込まれる。
【背景技術】
【0005】
本発明は、多体シミュレーションに関し、より詳しくは、分子動力学のシミュレーション用装置の回路実装に関する。
【発明の概要】
【0006】
多体シミュレーション用装置の回路実装及びその動作手順の多数の例が、本明細書に参照により組み込まれる、以下の米国特許公報に記載されている。米国特許第7,707,016号「ORTHOGONAL METHOD(直交法)」、米国特許第7,526,415号「GRID BASED COMPUTATION FOR MULTIPLE BODY SIMULATION(多体シミュレーションのためのグリッドベース計算)」、および米国特許第8,126,956号「APPROACHES AND ARCHITECTURES FOR COMPUTATION OF PARTICLE INTERACTIONS(粒子相互作用の計算のためのアプローチおよびアーキテクチャ)」。
【0007】
本文書では、先に記載されたアプローチとともに使用可能な多数の態様、例えば、サブシステムの実装またはサブシステムの変更をここで示される態様で代替すること、等を説明する。
【0008】
多くの実施態様において、多体シミュレーションのための装置は、多数の粒子を含む物理的体積のシミュレーションを行う。分子動力学のシミュレーションにおいて、粒子は、原子を含み、その集合が分子を形成することもある。
【0009】
この装置は、多数の相互接続処理ノードを含み、それらは3次元アレイに配置されていてもよい。この装置の多数の用途において、処理ノードとシミュレーションされている物理的体積の物理的領域との間には、一対一の対応関係が存在する。実施態様は、物理領域が立方体であるもの、物理領域が角柱のもの、物理領域が処理ノードと同様の隣接関係を持って配置されているものを含む。少なくともいくつかの実施態様において、処理ノードは、それらの直接隣接する処理ノードへの通信経路を有する。これらの経路は、トロイドを形成する。
【0010】
先行特許に示されているように、特定の粒子のデータは、その粒子の物理的位置に関連付けられた処理ノードに保存されている。粒子相互作用の計算は、一般に、処理ノードがペアワイズ相互作用を計算できるように、粒子に関する情報を交換すること、および、少なくともいくつかの粒子について、処理ノードがそれら粒子の位置(および速度)を更新できるように力の情報を交換することを含む。
【0011】
以下に記述する多くの新規な特徴は、単独または組み合わせて用いることができ、回路ベースシステムにおいて物理系を正確にシミュレートするという実際的な問題に対する技術的改善を提供する。
【0012】
1つの改善は、あるシミュレーションで消費されるエネルキーの総量を削減することである。そのようなエネルギーの削減により、より高速、および/またはより小さなシステムを実現できる。
【0013】
もう1つの改善は、単により高速な回路または汎用プロセッサを用いるのではなく、利用可能な回路をより有効に用いることができる計算およびノード間通信の特定の構成、例えば、処理要素の特定の組み合わせを導入し、待ち時間を減少させそれにより各シミュレーションサイクルに要する時間を削減するための通信及び計算の側面を用意し、プロセッサ間の通信リンクをより効率的に利用することにより、物理系をシミュレートするのに必要な時間を削減することである。
【0014】
ここに記載されたすべての実施態様および方法は、非抽象的であり技術的効果をもたらすものである。出願人は自身の独自の用語作成者として、「非抽象的」とは本出願の出願日の時点において連邦巡回控訴裁判所および最高裁判所により定義されている「抽象的」の反対を意味するものとここに定義する。その結果、特許請求の範囲を抽象的であると解釈する者は、明細書とは正反対の方法で特許請求の範囲を解釈することになる。
【0015】
1つの側面において、本発明は、一対の原子の2つの原子を相互作用させるためのハイブリッド方法を特徴とする。この方法によれば、一対の原子を相互作用させるのに1つ以上の計算ノードのセットが用いられる。そのセットは、セット内の通信ノード間で原子に関するデータを通信しなければならないコストと相互作用の計算に関連する計算の複雑さとの均衡をとることにより選択される。
【0016】
ここで、「相互作用する」という動詞は、2つの原子間の相互作用から生じる当該2つの原子の状態(例えば、位置、運動量、電荷等)の変化を推定するのに必要な計算を実行することを意味するものとする。本開示全体を通して、「原子」および「粒子」という用語は、相互に交換可能に用いられるものとする。
【0017】
ここで、「原子」という用語は、必ずしも原子核とそれに付随する電子を意味するものではない。分子動力学の分野において、「原子」は、シミュレーション中に分割不能な単位として扱われるものとしてその本来の意味において用いられる。そのため、「原子」は、原子核であってもよく、原子核及び1つ以上の電子であってもよく、分子または遥かに大きな分子の一部分である官能基等、月号した複数の原子核であってもよい。
【0018】
分子動力学シミュレータにおいて、2つの原子を相互作用させるには、その2つの原子に関する情報が必要になる。この情報は、その相互作用を実行するいかなる計算ノードにおいても利用可能でなければならない。ある特定の計算ノードは、全てではなくいくつかの原子についての情報を持っている。そのノードが、ペアの原子両方に対応する情報を持っている場合には、その情報を転送することに伴う通信コストは生じない。一方、そのノードがいずれかの原子についての情報を持っていない場合、その結果として通信コストが生じる。また、そのノードが、いずれの原子に関する情報も持っていない場合もある。この場合、さらに大きな通信コストが生じる。
【0019】
ここで説明する実施形態は、通信コストがより高く計算の複雑性がより低い第1の方法と、通信コストがより低く計算の複雑性がより高い第2の方法とを選択する。今回の場合、第1の方法はマンハッタン法(Manhattan Method)であり、第2の方法はフルシェル(Full Shell)法である。各相互作用では、シミュレータは第2の方法のより高い通信コストに対して第1の方法の加算された通信コストを評価し、各相互作用に対してより高い性能を発揮する計算ノードのセットを選択する。
【0020】
米国特許第7,707,016号等に記載されている既存のニュートラル・テリトリー(Neutral Territory)法に比べ、マンハッタン法では、ノード間のインポート量が少なくノード間での計算バランスが良く、その結果、性能を向上させられる。マンハッタン法は、物理空間において、ノードのうちでノード間境界から最も遠い粒子を含む1つのノード上の相互作用を計算する。そして、他のノードに共有結果を返す。
【0021】
フルシェル法は、前述のいずれの方法よりも計算的に極めて複雑である。しかしながら、フルシェル法では、必要な通信がはるかに少ない。この通信の節約は、相互作用が両方の原子のホームノードにおいて計算されるためペアをなすノードには返されないことによる。
【0022】
他の側面において、装置は、処理ノードに粒子間のペアワイズ相互作用を評価するための回路を含む。
【0023】
一対の粒子の相互作用の計算には、粒子間の間隔によって異なる必要条件がある。例えば、互いに遠く離れた粒子では、それらが互いに近い場合に比べ相互作用がより単純なため、必要とされる計算はより少なくてすむ。相互作用の特性の大きさは小さくてもよい。相互作用の計算された特性は小さくてもよい。
【0024】
このことに対応するには、ペアワイズ相互作用を計算するための、粒子間の間隔に応じて選択される複数種類の処理要素を持つことが有用である。
【0025】
一例として、分子動力学のシミュレーションにおいて、非結合粒子は、互いに遠く離れているときよりも近いときのほうがより複雑な挙動をする。「近い」および「遠い」は、点粒子の周りの球のカットオフ半径により定義される。液体中に分散された粒子のほぼ均一な密度およびそのカットオフ範囲により、典型的には、遠領域内には近領域内に比べ3倍多くの粒子が存在する。装置はこのことを、互いに近くにある粒子のペアをより複雑な処理を行うことができる大きな相互作用モジュールの方へ誘導することにより利用する。反対に、互いに遠く離れている粒子のペアは、精度の低い計算を行い粒子同士が十分近くにある場合のみ意義のある特定の現象を無視する小さな相互作用モジュールの方へ誘導される。
【0026】
大きな相互作用モジュールは物理的にサイズがより大きいので、「大きい」および「小さい」を用いるのは適切である。それはより大きなチップ面積を消費し、また各相互作用あたりでより大きなエネルギーを消費する。処理ノードは、シミュレーション体積内の粒子の空間分布を収容するため、「大きな」処理要素よりも多くの数の「小さな」処理要素を有していてもよい。
【0027】
各集積回路の合計面積の一部は、計算パイプラインを形成するインタラクション回路が占める。このインタラクション回路が、前述の相互作用を実行する。
【0028】
汎用コンピュータと異なり、計算パイプラインは、限られた機能しか持たない最小限の構成が可能ハードウェアモジュールである。しかしながら、扱えることに関しては、上手く扱える。インタラクション回路は、汎用コンピュータが同じ相互作用を実行するのに消費するエネルギーよりもはるかに少ないエネルギーしか消費しない。このインタラクション回路は、ペアワイズ粒子相互作用モジュールとみなすことができ、集積回路の中で主力の担い手である。
【0029】
基板の他の部分には、論理回路が形成されている。このような論理回路は、典型的には、電圧を出力電圧に変換するよう相互に接続されたトランジスタを含む。このような変換の結果により、電圧により表される情報をインタラクション回路に送信または受信したり、情報の一時的な保存場所を提供したり、あるいは情報を調整したりできる。
【0030】
他の側面において、一般に、粒子の2セットについてのデータが与えられたとすると、処理ノードは、(1)粒子間の相互作用を評価するか否か、および/または(2)粒子間の相互作用を計算するのに、どの計算要素を用いるべきか、を、粒子間距離にしたがって決定する。
【0031】
いくつかの例では、粒子間の相互作用を評価するか否かを決定するにあたり、粒子間の距離についての厳密なしきい値が用いられる。これにより、例えば、相互作用(例えば、粒子にかかる力)が不注意に「二重カウント」されてしまうことが回避される。
【0032】
他の例では、粒子間の距離により、相互作用に用いられるノードの異なるタイプの処理要素のうち、どの処理要素のどれを使用するかが決定される。これにより、異なる処理要素が異なるレベルの正確さの計算を実行するので、特に有利である。これにより、特定の相互作用に対してどのレベルの正確さが最も適切かを選ぶことが可能になる。
【0033】
この側面において、距離ベースの決定(つまり、上記(1)および(2))は、精度を高めながら、および/または計算コストを高めながら、2段階で行われる。
【0034】
例えば、第1段階では、粒子のペアは、それらが閾値間隔を超えることが保証されている場合には除外される。他の例として、第2段階では、第1段階で除外されなかった粒子のペアがそれらの間隔にしたがって処理され、例えば、閾値間隔を超える粒子のペアをさらに除外する、および/または間隔にしたがって処理要素を選択する。例えば、第2段階では、粒子のペアに対して以下の3種類の判定を行う。一方の粒子が第2の粒子の近傍領域内にあるか(例えば、その場合、そのペアは「大きな」処理要素を用いて評価される)、一方の粒子が第2の粒子の遠方領域内にあるか(例えば、その場合、そのペアは、「小さな」処理要素を用いて評価される)、または、一方の粒子が第2の粒子の遠方領域のカットオフ半径の外にあるか(例えば、その場合、そのペアの相互作用は、それ以上評価されない)。
【0035】
原子間の相互作用は、その重要性が原子間の距離とともに変化する現象を考慮することを含む。このことを認識し、原子からの閾値距離を定義することは有益である。原子ペアのうち第1および第2原子間の原子間距離がこの閾値を超えた場合、第1相互作用モジュールが用いられ、そうでなければ、第2相互作用モジュールが用いられる。2つの相互作用モジュールは複雑性が異なり、第1相互作用モジュールは第2相互作用モジュールにおいて考慮される少なくとも1つの現象を無視する。例えば、距離が小さい場合、量子力学的効果は考慮するのに十分に重要である。このような効果は距離が大きい場合は無視できる。
【0036】
第1相互作用モジュールは第2相互作用モジュールより物理的に大きいため、より多くのダイ面積を占有する。加えて、第1相互作用モジュールは、第2相互作用モジュールに比べて相互作用あたり消費するエネルギーがより多い。
【0037】
一般に、第1原子を中心とした球が存在する。その球の外側にある原子は、全く相互作用が行われない。球の中にあるが閾値半径を超える原子は、第2相互作用モジュールを用いて相互作用を行う。他のすべての原子は、第1相互作用モジュールを用いて相互作用を行う。
相互作用を正しい相互作用モジュールへ導くには、原子間距離が閾値半径を上回るか下回るかに基づき、原子間距離を判定し、提案された相互作用を放棄するかあるいは相互作用を第1相互作用モジュールまたは第2相互作用モジュールへ導くマッチング回路を備えることが役立つ。
【0038】
原子の均一な密度のためには、より多くの原子が球の閾値半径の外側の部分に存在することが期待される。その結果、2つ以上の第2相互作用モジュールを備ることが有益である。これにより、第2のタイプの相互作用に対しさらなる並列化が促進される。
【0039】
いくつかの実施形態においては、原子はまずメモリに保存され、その後相互作用回路、特に、原子を適切な相互作用モジュールへ導くマッチング回路にストリーミングされる。マッチング回路は、低精度の段が粗く包括的な2段階フィルターを実装する。各クロックサイクルにおいて、低精度段は、各ストリーム原子および潜在的にストリーム原子と相互作用を行わせる多数の保存された原子との間の原子間距離を計算する。
【0040】
各原子が「型」を持っていることが有用である。原子の「型」を知ることは、その原子が相互作用に参加する際に用いられるべき適切な相互作用の方法を選択するのに有用である。例えば、2つの原子の型が知られている際に、それら2つの原子の間のペアワイズ相互作用の情報を取得するのに参照テーブルを参照することができる。
【0041】
大きなテーブルに伴う扱いにくさを回避するには、相互作用モジュールは、第1段が相互作用インデックスを有し、第2段が各相互作用インデックスに関連付けられた関連相互作用型を有する、2段階テーブルを備えていることが有用である。相互作用インデックスは、原子の型に関する情報よりも少ない量のデータを表している。そのため、ダイ上に物理的に存在しなければならない、テーブルの第1段は、ダイにおいて少ない面積を占有している。したがって、その情報を維持するのにより少ないエネルギーですむ。
【0042】
上述のように、計算パイプラインを形成する相互作用回路は、限られた機能しか持たない。相互作用によっては、相互作用回路が実行できない操作を行う必要がある。そのような場合、参加する原子の一つに関連付けられた相互作用型は、特殊な操作が必要であることを示す。これを実行するため、相互作用回路は、ここで「ジオメトリコア」と称する、隣接する汎用コアへのトラップドアを実装する。ジオメトリコアは、一般に相互作用回路と比べてエネルギー効率が低い。しかしながら、ジオメトリコアは、より複雑な処理を行うことができる。そのため、この形態は、時折計算の一部をより非効率なジオメトリコアに任せる能力を備えながら、相互作用回路に伴うエネルギー効率を維持する。
【0043】
上述したように、処理ノード間の通信は、粒子の状態についての情報を交換することを含む。このような情報は、粒子の位置、速度、および/または力のうち1つ以上を含む。連続し反復されるシミュレーションにおいて、処理ノードの特定のペアは、同じ粒子に関する情報を送ってもよい。
【0044】
他の側面においては、一般に、先の通信された情報を参照することにより、通信要件を減らすことができる。例えば、受信ノードが情報(例えば、粒子の質量)をキャッシュしたり、送信ノードがその後の反復において、すべてのデータを再送せずに、キャッシュされたデータへの参照(例えば、タグ)を送信したりしてもよい。
【0045】
他の側面では、一般に、送信ノードと受信ノードとが、先行した反復から、現在の情報中に送信されるべき情報を予測するのに用いられる情報を共有する。その後、送信ノードは、共有された予測に関して現在の反復で送信されるべき情報をエンコードし、それにより送信されるデータ量を抑制する。例えば、送信ノードと受信ノードとが以前の粒子の位置と速度を共有している限りにおいて、各々は、例えば、その以前の速度で粒子を移動させ、その速度が一定のままであると仮定することにより、現在の位置と速度を予測できる。そのため、送信ノードは、現在位置と予測位置との差分および/または現在速度と予測速度との差分を送信するだけでよい。同様に、力も同様の方法で予測され、予測された力と計算された力との差分が送信されてもよい。
【0046】
別の側面において、システム内の処理ノードを接続する通信インフラストラクチャ(例えば、ノード間通信回路)は、ノード間の通信の同期するための回路を含む。前述のインフラストラクチャの実施形態の中には、一組のメッセージのすべてが送信されたこと、および/またはそのフェンスメッセージの後でそのノードから送信されたメッセージがフェンスメッセージの後の宛先に配信されなければならないこと、を示す「フェンス」メッセージを、ノードが発するようなものを含む。
【0047】
前述のインフラストラクチャの実施形態の中には、また、一組の送信元ノードからすべてのメッセージが配信されたことを示すメッセージを宛先ノードにいつ送るべきかを、通信インフラストラクチャが決定するものを含む。これらの実施形態の中には、通信インフラストラクチャが一組の送信元ノードからのフェンスメッセージを処理し、送信元ノードからのすべてのフェンスメッセージが受信されたときにフェンスメッセージを宛先ノードに配信するものを含む。このようなインフラストラクチャベースのフェンスメッセージ処理により、処理ノードのペア間で「N2」メッセージを送らなければいけない必要性を回避することができる。
【0048】
他の側面においては、ネットワークで接続された大規模マルチプロセッサコンピュータ用のプロセッサ同期メカニズムがフェンスを利用する。フェンスは、すべてのあり得る送信元から宛先プロセッサにこれ以上データが到達しないことを保証する防壁である。いくつかの実施形態では、フェンスはグローバル防壁であり、つまり、コンピュータ内のすべてのプロセッサを同期させる。いくつかの実施形態では、フェンスは、コンピュータの部分領域を同期させる選択的防壁である。
【0049】
実施形態には、各送信元は、各宛先に最後のデータが送られたことを示すパケットを送り、各宛先は、各送信元からのパケットが受信されたときまで待機するようなものが含まれる。N個のプロセッサを備えるコンピュータにおいて、グローバル防壁は、すべての送信元から宛先プロセッサまでネットワークを横断するのにO(N2)個のパケットを必要とする。別のフェンスメカニズムでは、エンドポイントプロセッサがO(N)個のパケットを送受信するだけでよい。さらの別の実施形態は、フェンスネットワークトラフィックとエンドポイントでの処理を削減するのにマルチキャストを用いるネットワークおよびカウンタを含み、それにより消費電力を抑制してシリコンチップ上で使用される物理的面積を減少させ、それにより製造コストを削減する。
【0050】
他の側面において、本発明は、ここで「タイル」と称する計算ユニットが集積回路または「チップ」内で、行と列との2次元アレイを形成し、原子のペアの間の相互作用を計算するための、相互作用モジュールを含む。あるタイルは、同じ列の隣接するタイルまたは同じ行の隣接するタイルとの間で粒子に関する情報を送受信する。説明の便宜上、粒子に関する情報を単に「粒子」と称する。
【0051】
タイルは、これ以降「保存セット粒子」と称する、粒子のセットを保存している。シミュレーションの間、そのタイルは、これ以降「ストリームセット粒子」と称する、粒子のストリームを受信する。シミュレーションの過程で、タイルは、各ストリームセット粒子を保存セット粒子と相互作用を行わせる。シミュレーションの各時間ステップで、タイルによって相互作用させられたストリームセット粒子は、当該タイルの行に沿って後続のタイルに移動し、その後続のタイルで保存セット粒子と相互作用させられる。一方、そのタイルは、当該タイルの行の中の先行するタイルから新たなストリームセット粒子を受け取る。
【0052】
この行方向のストリーミングを実行するため、専用のストリーミングネットワークが存在する。この専用ストリーミングネットワークは、ポジションバスとフォースバスとを備える。ポジションバスは、チップの端部にあるメモリから粒子の位置に関する情報を取得し、相互作用回路を通じて1つのタイルから次のタイルへとストリーミングする。各粒子について、ポジションバスは、その粒子が通過する相互作用モジュールによって計算されたものとして、その粒子にかかる力を蓄積する。
【0053】
上述のように、タイルは、その列内の他のタイルと通信できる。この通信には、ストリームセット粒子は関与しない。それには保存セット粒子が関与する。特に、あるタイルの保存セット粒子は、そのタイルの列内のタイルにマルチキャストされる。その結果、保存セット粒子は、同一の列内のすべてのタイルにわたって複製される。これにより、保存セット粒子を異なるストリームセット粒子と同時に相互作用させることが可能になる。
【0054】
起こりうる問題は、1つの行のストリームセット粒子との相互作用の結果としてある保存セット粒子にかかる力は、必ずしも他の行において対応する保存セット粒子には適用できるとは限らないということである。この問題に対処するため、ある行内のストリームセット粒子について計算される力を、最初に保存セット粒子をマルチキャストに用いられたマルチキャストパターンの逆数に単に追従することにより、アンロードの際ネットワーク内で低減する。
【0055】
加えて、同一の列のすべてのタイルがアンロードを開始する準備ができるまで、どのタイルも保存セット粒子のアンロードの開始が許可されない。これを実現するには、列内のすべてのタイルにわたって4線式同期バスの形態で列シンクロナイザを提供することが有用である。このような同期バスにより、ネットワークデッドロックが回避され、低レイテンシ同期が提供される。
【0056】
別の側面では、本発明は、原子間の特定の型の結合、特に共有結合に関する特定の特殊な計算を行う際、汎用プロセッサを補助するためのコプロセッサとして機能する結合計算器を含む。汎用プロセッサは、原子および結合の性質に関する情報を結合計算器に提供し、そのような処理の結果を結合計算器の出力メモリから読み出すことにより、そのような計算を開始する。
【0057】
結合計算機の実施形態は、力に対する結合の1つ以上の応答をサポートする。そのような応答は、結合距離の伸長または収縮のような結合距離の変化、3個の原子が結合している場合に発生し得るような結合角の変化、および4個の結合原子が存在する場合に生じ得るような結合の二面角またはねじれ角の変化、を含む。
【0058】
こうした力に対する応答は、分子シミュレーションにおいては特に一般的なものである。結果として、このような応答の決定に伴う処理を、コンパクトな専用の回路に移行することが特に有用である。そうすることで、原子のこのような状態変化を計算するのに必要とされるエネルギーを削減できる。
【0059】
いくつかの実施形態において、粒子間の相互作用は、指数関数の差という形、例えば、exp(-ax)-exp(-bx)という形、または電子雲分布の畳み込みを表す積分の評価としての形をとる。2つの指数を別々に計算し、その差を取ることは可能かもしれないが、そのような差は、数値的に不正確(例えば、非常に大きな数の差)であるかもしれない。好ましいアプローチは、この差の1つの級数表現を形成することである。例えば、その級数は、テイラー級数やガウス-ヤコビ求積法に基づく級数であってもよい。さらに、シミュレーション全体の精度を維持するのに必要な項の数は、一般に、axとbxの値による。したがって、例えば、粒子-粒子-相互作用回路(PPIM)において、ペアワイズ項を計算する際、異なる特定の粒子のペア、またはaxとbxの値の差(例えば、絶対差、比、等)に基づく異なる基準により、級数の項がどれだけ保持されるべきかを決定することができる。例えば、項の数を減らす(例えば、多数の粒子のペアに対し単一の項にする)ことにより、2つの値が近い場合、すべてのペアワイズ相互作用の計算全体を、全体の精度を維持しながら大幅に削減することができ、それにより、精度と性能との間(計算速度および/またはハードウェア要件)の制御可能なトレードオフを提供することができる。
【0060】
いくつかの実施態様においては、同一の値(例えば、粒子にかかる力)が、例えば、通信コストを回避するため、異なるプロセッサで冗長に計算される。例えば、このような冗長な計算が「フルシェル」法において発生する可能性がある。また、体系的に切り捨てたり四捨五入したりした結果がシミュレーション全体にとって、例えば、一連の反復にわたってバイアスを導入することにより、有害となるかもしれないような状況がある。例えば、繰り返し切り捨てを行うと、時間積分は著しく小さくなりすぎることがある。
【0061】
連続した時間ステップでの丸め処理により生じる累積されたバイアスを回避するための1つのアプローチは、粒子のセットについて計算された値を丸めたり切り捨てたりする前に、小さなゼロ平均乱数を加えることである。そのようなアプローチは、「ディザリング」と称される。しかしながら、異なるプロセッサで冗長計算を行う場合、例えば、乱数発生の順序の違いなどのため、異なるプロセッサで発生する疑似乱数が同じになる理由はない。異なる乱数を用いると、丸められり切り捨てられたりした値が異なるかもしれず、そのシミュレーションがプロセッサ間で完全に同期しないこともある。
【0062】
1つの好ましいアプローチは、まったく同じデータが粒子のセットの値を計算するすべてのノードで用いられる、データ依存乱数生成を用いることである。乱数値を生成する方法の1つは、計算に関わる粒子の間の座標差を、丸めたり切り捨てたりする前に加えられるべき乱数値を生成するための乱数シードとして用いることである。いくつかの実施形態においては、3つの幾何学的座標方向のそれぞれにおける絶対差の低次ビットが、その出力が乱数値として用いられるかまたは1つ以上の乱数を生成する擬似乱数生成器の乱数シードとして用いられるハッシュ関数への入力として、保持され、組み合わせられる。粒子のセットに関わる多数の計算がある場合、異なる乱数を生成するのに同じハッシュが用いられ、計算結果に加算される。例えば、1つの乱数をいくつかに分割したり、同じシードから乱数列を生成するのに乱数発生器を用いたりする。座標距離の値はすべてのプロセッサでまったく同じであるため、ハッシュ値は同じになり、したがって、乱数も同じになる。粒子間の距離は、絶対位置よりも好ましい可能性があり、なぜなら、距離は、平行移動およびトロイダルラッピングに対し不変であるのに対し、絶対位置はそうでないかもしれないからである。座標方向における差の計算は、丸め誤差が生じさせないため、ユークリッド(スカラー)距離よりも好ましい場合がある。
【0063】
実施形態、実施例、および/または実施態様は、上述のアプローチの様々な組合せを利用するとともに、送信される情報のビット数で測定される通信要件の削減、絶対時間または特定の計算を実行するのに必要な時間に対して測定される通信の待ち時間の削減、シミュレーションした時間およびシミュレーションした時間ステップの数にわたって所定のシミュレーションを行うための絶対時間(すなわち、「ウォールクロック」時間)の短縮、必要な計算時間および/または電力および/または回路面積を削減するための特定の計算モジュールへの計算の分配、および/または、より少ない通信リソースを用いた分散モジュール間の同期、および/またはネットワーク通信プリミティブを用いたより多くの同期動作を提供、を含む、個々のアプローチの利点は、他のアプローチと組合せて用いる必要なく達成され得る。さらに他の利点は、以下の説明から明らかになる。
【図面の簡単な説明】
【0064】
【
図1】
図1は、3次元グリッドに配置された計算ノードを含む計算システムの論理ブロック図である。
【
図2】
図2は、
図1の計算ノードの特定用途向け集積回路の構造の説明図である。
【
図3】
図3は、
図2の回路のコアタイルの論理ブロック図である。
【
図4】
図4は、
図2の回路のエッジタイルの論理ブロック図である。
【
図5】
図5A~Cは、原子間の相互作用を計算するときの計算ノード間の通信の3つの異なる例を表す図である。
【
図6】
図6は、
図3のペアワイズ粒子相互作用モジュールコアタイルの論理ブロック図である。
【発明を実施するための形態】
【0065】
1 概説
1.1 ハードウェアアーキテクチャ
以下の記載は、分子動力学(MD)シミュレーションを実行する、ハードウェアシステムならびにそのハードウェアシステム上で実行される計算および通信手順を開示する。このシミュレーションは、化学系における原子の3次元運動を、多数の個別時間ステップを通して予測する。各時間ステップにおいて、原子の間の原子間力は、物理学ベースのモデルを用いて計算される。これらの原子間力は、通常1~3個の共有結合で隔てられた原子の小さなグループの間の力をモデル化する結合項と、残りすべての原子ペアの間の非結合力と、で構成される。各時間ステップで、与えられた原子にかかる力が合計されて、その原子にかかる合計力が求められ、その合計力は、その原子の加速度を(ニュートンの第2法則により)直接決定し、それにより(時間積分により)原子の原子位置と速度とを次の時間ステップで使用する値に更新するのに用いることができる。一部の計算を近似することなく、各時間ステップで計算される原子間力の数値は、原子の数に2次関数的に対応するので、システムのサイズが大きくなるにしたがい解決への時間が膨大に増えることになる。さらに加えて、安定した正確な積分にはほぼフェムト秒単位の時間ステップが要求されるため、1マイクロ秒の原子運動をシミュレートするには、約10億時間ステップが必要となる。
【0066】
図1に示すように、計算システム100は、分離したハードウェア要素として実装された計算ノード120の3次元配置を含む。例えば、512ノードが8×8×8アレイに配置されるが、異なる数のノードを用いてもよい。一般に、ノード120は、ノード内に統合された特殊用途または比較的汎用的なプロセッサ上で実行されるアプリケーション特有のハードウェアおよび/またはソフトウェアにおいて実現される計算および通信双方の機能を果たす。ノード120は、ノード間をつなぐ通信機能を提供する、ノード間通信ネットワークでリンクされている。
図1に示す実施形態において、ノード間通信ネットワークは、3次元のノードアレイにおいてトロイダル配置で隣接ノードを接続する多数のノード-to-ノード通信リンク110を含む。すなわち、
図1に示されるように、各ノード120は、3次元の各々(例えば、x、y、およびz)において2つのリンク、つまり6つのリンクに接続されている。
図1において、ノードは、その6面のそれぞれがリンクに接続されている立方体として示されているが、他の物理的配置(例えば、電子機器ラック等)が用いられてもよい。
【0067】
各ノードは、隣接していないノード間の通信をサポートするルーターを含む通信要素を含んでいる。さらに後述するように、このようなルーターを「エッジルーター」と称する。さらに、各リンク110は、一般に、1つ以上のシリアル「レーン」で構成される複数の双方向チャンネルからなる。例えば、各リンク110は、1つのノードがシステムの他のノード120に接続されている6×16=96レーンの集合体を有するよう、16レーンで構成されていてもよい。したがって、エッジルーターは、ノードに接続された異なるレーン間の通信に用いられる通信経路を提供する。
【0068】
図2に示すように、各ノード120は、コアタイル124からなる中央アレイと、該アレイの対向する2つの境界辺に配置されたエッジタイル122の線形アレイと、を含んだ2次元配列のコア(「タイル」とも称する)としてレイアウトされた特定用途向け集積回路(ASIC)を含んでいる。例えば、中央アレイは、12×24のコアタイルを含んでいるのに対し、エッジタイル122の各アレイは、12タイルを有している。つまり、合計では24のエッジタイルがある。各エッジタイル122は、多数のシリアルチャンネルに接続されており、例えば、各エッジタイルがそれぞれのシリアライザ-デシリアライザモジュール(SERDES)118を介して4つのシリアルチャンネルに接続されている。一般に、エッジタイル122は、ノード間通信のため、ならびにノード間通信ネットワークとノード内の1つ以上の内部ネットワークとの間のための通信サービスを提供し、コアタイル124は、シミュレーションのための通信サービスを提供するとともに、ノードの内部ネットワーク上での通信をサポートする。
【0069】
図3は、コアタイル124の構成要素をより詳細に示す。ネットワークルーター(「コアルータ」とも称する)141は、タイル内の計算ブロックを、隣接するコアタイル124を接続するリンク142を含む、汎用2Dメッシュネットワーク・オン・チップ(network-on-chip)に接続する。メッシュネットワークに加え、シミュレーション計算のためのデータ入出力を分配するために専用バスが用いられる。これらのバスは、ポジションバス151およびフォースバス152を含む。以下に詳細に説明するように、計算の重要な部分は、原子のペア間に作用する力を求めることに関し、その計算は、各タイル上の2つのペアワイズ点相互作用モジュール(PPIMs)132においてホストされ、これらのPPIMsは、ポジションバス151を通じて位置情報を受け取るとともにフォースバス152通じて力情報を提供している。加えて、PPIMsは、各PPIMがエッジタイル122と通信できるようにデータをPPIM間で伝える役割を果たす。各コアタイル124は、また、結合原子に関する力の計算を扱う、結合計算器(BC)133と称する、さらなる計算モジュールを含んでいる。最後に、2つの比較的一般的な処理モジュールは、各時間ステップでBC133またはPPIMs132によってまだ処理されていない残りのすべての計算を処理する。これらのモジュールは、ジオメトリコア(GCs)134およびそれらに関連したメモリ135(
図3では「フレックスSRAM」と表す)と称されている。
【0070】
図4に示すように、各エッジタイル122は、オフチップリンク110(channels)用のロジックを含んでおり、各チャンネルは3Dトーラス内の6つの隣接するものにSERDES118のグループを用いて接続されている。各チャンネルはまた、ノード120の同一エッジ上のリンク144を介して(すなわち、
図2に示されるようなノードの各端部で12個のエッジタイル122のアレイに沿って)他のエッジタイルとともにエッジネットワークを形成するエッジルーター143に接続されており、トラフィックがノード間ネットワーク内で次元をわたって「曲がる」ことを可能にしている。エッジルーター143は、また、データの投入および放出のためにリンク142を介してコアタイルの2Dメッシュネットワークに接続されるとともに、SERDES118を介してインターノードリンク110に接続されているチャネルアダプタ115に接続される。最後に、インタラクション制御ブロック(ICBs)150は、エッジルーターを上述のようにコアタイル124のアレイにわたって伸びるフォースバス152およびポジションバス151に接続する。ICBs150は、ポジションバス151へ原子位置を送るのに用いられる、大容量バッファおよびプログラマブルダイレクトメモリアクセス(DMA)エンジンを含む。それらはまた、原子間力をフォースバス152から受信し、フレックスSRAMs135へ届けるためエッジネットワークへ送る。
【0071】
各ノードでの2Dメッシュネットワーク上の通信パケットのルーティングは、コアルータ141により実現される次元順ルーティングポリシーを用いる。3Dトーラスネットワークにおけるルーティングは、ランダム化された次元順(つまり、6つの異なる次元順のうち1つ)を利用する。例えば、順序は、ノードの各エンドポイントペアごとにランダムに選択される。
【0072】
システム100は、一般に、1つ以上の他の計算システムに接続されている。例えば、初期化データおよび/またはソフトウェアは、シミュレーションの前にシステム100に提供され、得られた位置データは、シミュレーション中またはシミュレーションの完了後にシステム100から提供される。デッドロックを回避するアプローチは、すべての応答パケットに特定の次元順を用いること、および仮想回路(VCs)を用いることを含む。
【0073】
1.2 計算アーキテクチャ
分子動力学シミュレーションは、例えば、境界条件の問題を避けるため空間的に周期的に繰り返される直線的体積のような、3次元シミュレーション体積における原子の動きを求める。シミュレーション体積の全体は、一般に均一な寸法を持った、隣接する(つまり、重ならない)3次元の箱に分割される。これらの箱のそれぞれは、「ホームボックス」と称する。各ホームボックスは、システムのノード120のうち1つ(「ホームボックスのノード」と称することもある)と関連付けられ、最も典型的にはノードの幾何学的関係がホームボックスの幾何学的関係と同じであるような一対一の関係にある(そのため、一対一の関係の場合、「ノードのホームボックス」と称してもよい)。一対一の関係の場合、隣接するホームボックスは、隣接するノードと関連付けられている。なお、別の実施形態においては、例えば、各ノードの異なる部分が異なるホームボックスに割り当てられて(例えば、各ホームボックスに対して異なるタイルのサブセットを用いて)、各ノードが多数のホームボックスをホストするようにしてもよい。以下の説明は、説明の便宜のため、ノードとホームボックスが一対一の対応をしているものとする。
【0074】
シミュレーションした時間内のどの点においても、シミュレーション体積内の各原子は、ホームボックスのうちの1つに存在する(すなわち、原子位置は、ホームボックスの体積内にある)。少なくともそのホームボックスのノードは、その原子の位置および速度情報を保存し、維持する役割を果たす。他のノードがその原子の位置および速度情報を有して信頼している限りにおいて、その情報は、その原子のホームボックスノードでの情報と同一(例えば、bit exact)であることが保証される。シミュレーションは、一連の時間ステップ、例えば、各時間ステップが実時間のおよそフェムト秒の単位を表す時間ステップで進行する。
【0075】
シミュレートされた各時間ステップにおいて、原子の間の原子間力は、物理学ベースのモデルを用いて計算される。これらの原子間力は、通常1~3個の共有結合で隔てられた原子の小さなグループの間の力をモデル化する結合項と、残りすべての原子ペアの間の非結合力と、で構成される。与えられた原子にかかる力が合計されて、その原子にかかる合計の力が求められ、その合計の力は、その原子の加速度を(ニュートンの第2法則により)直接決定し、それにより(時間積分により)原子位置と速度とを次の時間ステップで使用する値に更新するのに用いることができる。一部の計算を近似することなく、各時間ステップで計算される原子間力の数値は、原子の数に2次関数的に対応するので、システムのサイズが大きくなるにしたがい解決への時間が膨大に増えることになる。さらに加えて、安定した正確な積分にはほぼフェムト秒単位の時間ステップが要求されるため、1マイクロ秒の原子運動をシミュレートするには、約10億時間ステップが必要となる。
【0076】
そのようなシミュレーションを計算的に扱いやすくするには、非結合原子の間の力を、距離限定力と遠距離力との和として表す。距離限定力は、距離とともに急速に減衰し、カットオフ距離まで原子ペアの間で個別に計算される。遠距離力は、よりゆっくりと距離に応じて減衰し、格子点の規則的格子と原子との距離限定ペアワイズ相互作用、次いで格子上のたたみ込み、次いで格子点と原子との第2の距離限定ペアワイズ相互作用を用いて計算される。遠距離力の計算に対するアプローチのさらなる説明は、米国特許第7,526,415号、およびシャン、イービン(Shan,Yibing)、ジョン・L・クレピス(John L. Klepeis)、マイケル・P・イーストウッド(Michael P. Eastwood)、ロン・O・ドロア(Ron O. Dror)、ディヴィッド・E・ショー(David E. Shaw)、「Gaussian split Ewald:分子シミュレーションのための高速エヴァルトメッシュ法(A fast Ewald mesh method for molecular simulation)」、The Journal of Chemical Physics p122,no.5(2005):054101.に記載されている。
【0077】
各原子への力の総和は、一般に、多数の異なるノードで計算される任意の特定の原子に対する合力を決定するための総和の項、および/または1つのノードおよび/または異なるモジュール(例えば、1つのタイルにおけるPPIMs)における異なるタイルで計算される、分散ハードウェア削減として実現される。各ノードでは、異なる型の力(例えば、結合力、距離限定力、および遠距離力)は、一般に、ノードで異なる型のハードウェアモジュールにおいて計算される。並列処理は、各ノード内の異なるノード120および異なるモジュール(例えば、異なるコアタイル124および/またはタイル内の異なるモジュール)で力計算を実行することによって行われる。さらに以下に説明するように、計算対通信のトレードオフは、パイプライン計算(例えば、「ストリーミング」)によって、シミュレーション時間全体(すなわち、定められたシミュレーション時間に対する実際の計算時間)を削減するように選択され、特定の力計算に必要な情報を1つのノードと通信し、その結果を引き換えに分配して総計算量を削減すし、および/または結果を返す待ち時間を削減するために多数のノードで同じ力の冗長計算を用いる。
【0078】
各時間ステップは、一般に、システムのノード120および通信リンク110の間に分配された通信および計算を重複させることを含む。少なくともいくつかの実施形態では、時間ステップの開始時に、少なくともいくつかの計算が、例えば、ペアの原子の両方が同じホームボックス内に、したがって同じノードに位置する原子のペア間の相互作用に基づき、計算ノードで開始されてもよい。時間ステップの開始時にはまた、原子についての情報(例えば、原子の位置)が、近くのノードへ(例えば、エクスポートされた原子のカットオフ半径内に原子を持つ可能性のあるノードへ)、その情報が保存されている(でなければ知られている)ノードから伝達される(例えば「エクスポート」される)。原子についての情報が他のノードに到着した(それらのノートへ/により「インポート」されると称す)際、さらなる計算が開始され、異なるホームボックス内の原子間の相互作用(例えば、力の項)が決定されてもよい。位置が異なるホームボックスにある原子間の計算が行われると、その結果(例えば、力の項)が、原子情報をそこからインポートしたノードに送り返されてもよい。なお、計算は通信と重りあって行われてもよく、それにより、位置情報のインポートは、あるノードで、先にインポートされた原子の力情報のエクスポートと同時にインポートされた原子との相互作用の計算と同時に行われてもよい。結合力および距離限定力の計算と並行して、例えば、上述のグリッドベースアプローチを用いて、遠距離力が計算される。各原子は、その原子にかかる全ての力項が、あるノード(例えば、時間ステップの開始時にその原子が位置していたホームボックス内のノード)でわかると、その原子について合計力が計算され、その位置が更新されてもよい。システム全体中の原子のすべての位置が更新されると、時間ステップを終了し、次の時間ステップを開始することができる。
【0079】
また、少なくともいくつかの実施形態において、計算需要を低減するため、近似が随意に用いられる。例えば、ある種類の力は他の種類の力よりも低い頻度で更新され、例えば、遠距離力は第2または第3のシミュレーション時間ステップごとにだけ計算される。加えて、加えて、水素原子の最速運動を除去するため、厳密な制約が任意に用いられてもよい。それにより2.5フェムト秒までの時間ステップが与えられる。任意に、水素原子の質量を人工的に増加させ、時間ステップを4~5フェムト秒まで長く与えることができる。
【0080】
各時間ステップで原子あたり約104回の数値演算が必要であり、これは、これらの最適化と近似とを組み合わせても、100万個の原子のシステム上のシミュレーション時間1マイクロ秒あたり約1018回の演算に置き換えられるものである。この計算強度は、部分的には、以下に説明する1つ以上の技術を用いることにより対処されるが、特段の言及がない限り、その技術のいずれもシステムの動作に必須なものではない。
【0081】
2 ペアワイズ計算
上述したように、計算手順の一部は、互いにカットオフ半径内にある原子のペア間の非結合相互作用(すなわち、距離限定相互作用)の効果の計算に関する。任意の1つの原子について、この計算は、すべてのこれらの非結合相互作用の合計(集合)力を定めるために、そのカットオフ半径内にある他の原子によって当該原子に加えられる力(すなわち、方向と大きさおよび/またはベクトル表現)を合計することを含む。
【0082】
図5A~Cに示すように、システムにおいて、2つの原子の間の相互作用を計算する方法には、少なくとも3つの方法がある。
図5Aに示すように、2つの原子P1およびP2(530)が同一のホームボックスA(520)内にある場合、原子P1およびP2の間の相互作用は、そのホームボックスのノードA(120)で計算され、P1にかかる合計力を計算するための力項と、P1との相互作用により生じるP2にかかる合計力(例えば、等しくそして反対向きの力)を計算するための力項とを得る。そのノードはすでに両方の原子のデータを持っているため、これらの項を計算するためのノード間通信は必要とされない。
【0083】
図5Bに示すように、異なるホームボックス内にある2つの原子、例えば、ホームボックス(520)AおよびBそれぞれの中の原子P1およびP3(530)の間の相互作用を計算する1つの方法では、P3の位置情報がノードBからノードAに伝達される。ノードAは、ひとたび原子P1およびP3両方の情報を得ると、その2つの原子の間の相互作用を計算することができる。ノードAは、P1にかかる合計力を集積するためP3によりP1に与えられる力を保持し、P3によりP1に与えられる力(「P1-P3」力と表記する)をノードAからノードBに送る。なお、1つのノードのみが、P1とP3との間の相互作用を計算し、ノードAは、P1の位置情報をノードBに送る必要が(少なくともP1-P3相互作用を計算する目的においては)ない。
【0084】
図5Cに示すように、異なるホームボックスにある2つの原子、例えば、ホームボックスAおよびEそれぞれの中の原子P1およびP4(530)の間の相互作用を計算するための他の方法では、P1の位置情報は、ノードAからノードEへ伝達され、P4の位置情報はノードEからノードAへ伝達される。ノードAは、P4-P1相互作用を計算し、ノードEもP1-P4相互作用を計算する。ノードAはその結果をP1にかかる合計力を集積するのに用い、ノードEはその結果をP4にかかる合計力を集積するのに用いる。ノードAがP1ーP4力項をノードEに送る必要はなく、ノードEがP4-P1力をノードAに送る必要もない。なお、ホームボックスAとEとは、必ずしも隣接していないため、ノードAとEとの間の通信は間接的であり、例えば図示のように、他のノードCを介する。
【0085】
上記に示すように、例えば、
図5Bおよび5Cに示すように、互いにカットオフ半径内にあるが同一のホームボックス内には位置していない原子間のペアワイズ相互作用を計算する1つのアプローチは、あるホームボックスのカットオフ半径内にあるすべての原子のデータを、そのノードのホームボックスにインポートすることである。なお、どの原子をインポートすべきか(または逆に、どの原子をそれらのホームボックスのノードからエクスポートすべきか)の決定は、原子がそこからインポートされなければならない領域の仕様に基づいて行うことができるこの領域は、インポートするノードのホームボックス内の原子の特定の位置や、インポート領域にインポートされる原子の特定の位置には関係なく、インポート領域がすべての原子をインポートすることが保証されるよう、保存的な(つまり、最悪条件)方法で定義することができる。そのため、あるノードのインポート領域は、カットオフ半径とホームボックスおよびその近傍のホームボックスの幾何学量に基づくことができ、一般に、シミュレーション体積内の原子の特定の位置を考慮することなく、シミュレーションの開始に先立って定められる。この例で用いられるインポート領域は、「フルシェル」インポート領域と称することができる。
【0086】
この例において、あるノードのホームボックス内にすでに存在する2つの原子は、それらの相互作用が、
図5Aに示されるように、当該ノードで計算されるのであるが、そのノードは、異なるホームボックスからの原子の間の相互作用を計算するのに
図5Cに示されるアプローチを用いるかあるいは
図5Bに示されるアプローチを用いるかの判定に、ハイブリッドアプローチを適用する。
図5Bのアプローチを用いる相互作用について、各原子のホームボックスのノードは相互作用を計算するのに十分な情報を持っているが、どちらのノードも、いずれのノードが相互作用を計算するかを決定するのに同一のルールを用いる。
【0087】
特定の原子のペアの2つのノードのうちいずれが相互作用を計算すべきかを決定するルールの一例は、以下では「マンハッタン距離」ルールと称する。このルールは、以下のようなものであってもよい。2つの原子の間の相互作用は、2つの原子のうちで他方のノードのホームボックスの最も近い角までのマンハッタン距離(x、y、およびz距離成分の合計)が大きい方のノード上で計算される。
図5Bに示す例では、原子P1はホームボックスBの最も近い角までのマンハッタン距離が、原子P2のホームボックスAの最も近い角までのマンハッタン距離よりも大きく、したがって、ノードAはP1とP2の間の相互作用を計算し、ノードBは相互作用を計算しない(または何らかの理由でそれを計算する場合は、少なくともそのような計算の結果を二重にカウントしない)。なお、マンハッタン距離ルールは、例えば
図5CにおけるノードAとBとの間の選択を行うための、計算効率の良い分散ルールの1つに過ぎず、さらに他のルールを使用できることを認識すべきである。
【0088】
2つの原子の間の相互作用の計算が2つのノードで計算されるという
図5Cに示されるアプローチを用いるか、計算が1つのノードで実行されてその結果が他のノードに返されるという
図5Bに示されるアプローチを用いるかの決定は、一般に、待ち時間の条件に基づいて行われる。例えば、1つのノードのみで相互作用を計算することで計算の総量は減らせるかもしれないが、それは計算の結果を他のノードに返すという通信コストを招く。このコストは総ノード間ネットワークトラフィックに影響するが、おそらくより重要なのは、待ち時間が発生することである。このような待ち時間は、2つのノードの間のパスに多数の「ホップ」がある場合、かなり大きくなりうる。
【0089】
マンハッタン距離ルール(
図5B)を適用するか
図5Cに示すアプローチ(「フルシェル」ルールと呼ばれることもある)を適用するかをノードが決定するアプローチの1つは、ノード間のネットワーク近接性に基づく。特定のノードに対して、そのノードのインポート領域内の原子を提供するノードは、近隣接と遠隣接とに分けられる。一例において、あるノードの近隣接とは、直接的なノード間接続(例えば、
図1のリンク110)を有するノードをいい、遠隣接とは、間接的(すなわち、多数のホップ接続(例えば、多数のリンク110を介した))な接続を有するノードをいう。近接性に基づく決定の例は、近隣接からインポートされたすべての原子にマンハッタン距離ルールを適用し、遠隣接からインポートされた原子にはフルシェルルールを適用するものである。近隣接および遠隣接ノードの決定は、例えば、計算やネットワークトラフィックや通信待ち時間の間で異なるトレードオフを得るため、異なる方法でなされてもよく、例えば、近隣接ノードを互いに1ホップ以内であると定義し、遠隣接ノードはそれらが互いに2ホップ以上であるなら遠方隣接ノードであると定義するなどしてもよい。また、少なくともいくつかの例においては、すべての隣接ノードが近隣接または遠隣接と判定されてもよい。一般に、近隣接と遠隣接の定義はすべてのノードで同一であるが、例えば、そのノードに近接する原子の期待数などを考慮し、ノードごとに異なる定義とすることも可能である。
【0090】
したがって、一例として、ハイブリッドアプローチにおいて、あるノードに適用される方法は、以下のとおりである。
【0091】
(a)2つの原子が同一のホームボックス内にある場合、それら2つの原子間の相互作用はそのホームボックスのノードで計算され、その計算によって、2つの原子各々の合計力に集約される、それぞれの力が得られる。
【0092】
(b)2つの原子が異なるホームボックス内にあり、それらのホームボックスのノードの間に直接通信リンクがある場合、その2つの原子の間の相互作用は、2つの原子のうち、他方のノードのホームボックスの最も近い角までのマンハッタン距離(x、y、およびz距離成分の合計)がより大きい方のノードで計算され、計算が行われないノードの原子のデータ(例えば、位置データ)は、そのノードのデータを維持しているノードから送られ、その原子にかかる力は、それを集約するノードに返される。
【0093】
(c)2つの原子が直接リンクされていない異なるホームボックスにある場合、その相互作用は2つのホームボックスの各々において、時間ステップの開始時に各原子のデータを交換することにより計算されるが、両方のノードで同じ結果の冗長計算になるため、計算された力を返す必要はない。
【0094】
3 特殊ペアワイズ計算
上述したように、所定のノード120は、例えば上記で示したハイブリッドルールによって、計算のために割り当てられたすべてのペアワイズ相互作用に必要なすべてのデータを有するよう、近傍ノードから原子のデータを受信する。また、上述したように、ノードに対するインポート領域が保存的に定義されていることにより、一般的に、2つの原子がカットオフ半径よりも離れているかどうかに関わらず、ノードで計算可能な原子の少なくともいくつかのペアが存在する。
【0095】
一般に、ノードのホームボックス内の各原子について、ノードはカットオフ半径を超える他の原子(すなわち、インポートされた原子)とのペアワイズ計算を除外する。カットオフ半径の範囲内にある原子のペアに対して、ノードは、例えば上述のハイブリッドルールにより、計算をそのノードに割り当てるか否かを判定する。
【0096】
各シミュレーション時間ステップの間、後述のノード内通信プロセスにおいて、第1セットの各原子が(通常全てのものより少ない)PPIMsのサブセットに保存されるとともに、第1セットの原子に対するデータがノードのPPIMs132に保存される。そして、第2セットの原子のデータがPPIMsにストリーミングされる。この通信プロセスにより、潜在的に相互作用する原子、つまり第1セットからの1つの原子および第2セットからの1つの原子、各ペアが、きっちり1つのPPIMで計算のため考慮されることが保証される。いくつかの例においては、原子の第1セットは、ノードのホームボックス内の原子からなり、原子の第2セットは、ノードのホームボックス内の原子ならびにインポート領域からインポートされた原子からなる。より一般的には、何が第1セットおよび第2セットを構成するかの決定は、第1セットのある原子と第2セットのある原子との間の相互作用のすべてのペアが、ノードのきっちり1個のPPIMで考慮されるようにするものである。
【0097】
図6に示すように、特定のPPIM132(すなわち、多数のPPIMsのうちの1つである、
図6に示すPPIM)に割り当てられた第1セットの原子は、マッチユニット610内に保存される(あるいは、マッチユニット610に接続されたメモリから取得可能である)。いくつかの実施形態では、マッチユニット610は、多数の別個のマッチユニット、例えば、96個のそのようなユニットの並列配置として実現される。1つ又は並列マッチユニットの実現は、第2セットの原子のデータを受信し、カットオフ半径よりもさらに離れていることが保証されているようなペアを更なる考慮から除外しながら、更なる考慮のため、その原子と第1セットの原子とのマッチしたペアを形成することである。一般に、原子のマッチしたペアの少なくともいくつかは、カットオフ半径よりも大きく離れている。マッチユニット610は、間隔の厳密な計算よりも必要とされる演算の回数が少ない計算に従って、第2セットの到来する原子を第1のセットの各保存された原子とマッチングさせることによって保存的な決定を行うので、「レベル1(L1)」マッチユニットと称される。このような削減演算計算の一例は、第2の原子が第1セットの原子の位置を中心とする多面体内にあるか否かの判定である。この多面体は、カットオフ半径の球を完全に含むように選択され(すなわち、カットオフ半径に、またはカットオフ半径よりも互いに近い位置にある原子のいかなるセットも除外しないことが保証される)ため、どの原子のペアも間違って除外されることはないが、一般に、マッチしたセットがいく分か過度に存在することになる。第2セットの原子が多面体内にあるか否かの計算は、原子間の真の距離を正確に計算するために必要な3次元の原子間の二乗距離を合計するよりも少ない計算で済む。多面体の例は、下記の不等式で定義される:数1、数2、数3および数4。なお、これらの不等式のチェックは乗算を必要とせず、任意に低精度演算比較回路を用いてもよく、さらに他の低複雑度マッチング計算を用いてもよい(例えば、小さな多面体体積を作成するためのさらなる不等式を追加する等)。
【数1】
【数2】
【数3】
【数4】
【0098】
マッチユニット610により保持された原子のペアのそれぞれは(すなわち、多面体を定義するすべての不等式を通過したので)、「レベル2(L2)」マッチユニットと称するマッチユニット620のセットのうち1つに渡される。ペアが渡される特定のL2マッチユニットは、負荷分散アプローチ(例えば、ラウンドロビン)に基づいて選択される。この例では、これらのL2マッチユニットの各々は、以下の3つの判定を行う。まず、高精度の原子間距離または二乗距離(例えば、d=(Δx)2+(Δy)2+(Δz)2)を計算し、次に、(a)計算された距離がカットオフ半径よりも大きいことを判定する(すなわち、L1マッチユニット610が近似境界多面体に基づいてマッチするペアを見つける)、(b)原子のペアが離れている距離が中間距離とカットオフ半径との間の距離であることを判定する、そして(c)原子が離れている距離が中間距離未満であることを判定する。いくつかの例では、カットオフ半径は8オングストロームであってもよく、中間距離は5オングストロームであってもよい。
【0099】
あるペアの原子間の距離がカットオフ半径より大きいと判定された場合、その原子のペアは、L2マッチユニット620によって破棄される。その距離が中間距離とカットオフ半径との間であると判定された場合、そのペアは、L2マッチユニットからマルチプレクサ622を介して「小型」粒子-粒子相互作用パイプライン(PPIP)630に渡される。その距離が中間距離より小さいと判定された場合、そのペアは、L2マッチユニットからマルチプレクサ624を介して「大型」PPIP624に渡される。PPIPs630、624が原子の力項を計算すると、これらの力はPPIMから引き出される。
【0100】
「小型」PPIP630と「大型」PPIP624との間には、1つ以上の相違点があってもよい。利用され得る1つの相違点は、小型PPIP630によって処理されるペアの原子の間の距離は少なくとも中間距離であるため、力の大きさが一般に原子同士がより近い場合よりも小さくなることである。したがって、小型PPIPのハードウェア演算ユニットは、ある大きさを超える結果を収容する必要がないことにより、用いるビットがより少なくてすみ、その結果、論理ゲートの数がより少なくてすむ。例えば、乗算器はビット数の2乗(w2)としてスケールし、加算器は超線形的に(wlogw)をスケールする。例えば、大型PPIPsは23ビットのデータパスを提供し、小型PPIPsは14ビットのデータパスを有していてもよい。いくつかの実施形態では、例えば、力の計算の形式を単純化することによって、または得られた力の表示の精度を下げる(例えば、最下位ビットを除去する)ことによって、ハードウェアの複雑性の抑制が用いられてもよい。
【0101】
反対に、大型PPIP624は、近傍の原子間の力の潜在的な大きさを表すためにより多くのビットを必要とする、近傍の原子間の相互作用の計算に対応する。いくつかの実施形態では、力の計算の形式は、例えば、原子が互いに非常に近接している場合でも精度を提供するために、より複雑で計算強度が高くでもよい。
【0102】
中間半径の選択は、大型PPIPと小型PPIPとの間で負荷を分散するため負荷分散を考慮したり、またはPPIPsの計算能力に基づくなど、様々な考慮事項に基づいて行ったりしてもよい。カットオフ半径の球の体積と中間半径の球の体積との8:5の比率に基づき、小型PPIPs対大型PPIPsによって考慮されると予測される相互作用の数は約3:1であり、それは、1つのPPIM132あたり3つの小型PPIP630と1つの大型PPIP624を実装する動機となる。ハードウェア実装においては、3つの小型PPIPsは、1つの大型PPIPsとほぼ同じ回路面積および/または同じ電力を使う。
【0103】
いくつかの代替策では、マッチした原子のペアを大型PPIPと小型PPIPのいずれにルーティングするかという決定が、加えて、またはその代わりに、2つの原子間の相互作用の性質に基づいてもよい。例えば、L2マッチユニットは、原子のペアの特性に基づいて、その間隔が中間半径より大きい場合でも大型PPIPが必要であると判定してもよい。
【0104】
PPIMに到着した第2セットの原子のPPIM内での経路(すなわち、小型PPIPまたは大型PPIPのいずれを経由したか)にかかわらず、粒子用バス151であり、力計算の結果は、PPIMからフォースバス152を介して放出される。
【0105】
4 粒子相互作用テーブル
上述したように、原子は、それらの位置や速度などの変化する(すなわち「動的な」)情報を持っており、それらは、異なる原子からそれらに加えられる力に基づいてシミュレーション時間ステップで更新される。原子はまた、シミュレーション期間中に変化しない静的な情報も持っている。この静的情報をノードの動的情報と一緒にノード間で受け渡すのではなく、ノード間で受け渡される原子のデータは、メタデータ、例えば、送信される動的情報ともなう、一意の識別子や原子の型(「atype」と称する)等を含む。atypeフィールドは、例えば、PPIM内のある原子の電荷を検索するために用いることができる。同じ原子種でも、分子内の共有結合に基づき、異なるatypeを用いることができる。
【0106】
2つの原子を、例えば、L1マッチユニット610でマッチングした後、2つの原子間の相互作用を計算する前に、間接的なテーブル検索を用いて相互作用の型を判定する。例えば、L1マッチユニット、またはL2マッチユニットは、各原子のatypeを判定し、各原子について別々に、例えばテーブル検索に基づいて、その原子の拡張識別子を判定する。そして、拡張識別子のペアは、(例えば、L1またはL2マッチユニット内に存在するか、またはL1またはL2マッチユニットにアクセス可能な)連想メモリにアクセスするのに用いられるインデックスの一部として一緒にされ、2つの原子間の相互作用をどうやって計算するかを決定するインデックスレコードを得る。例えば、列挙された計算関数のセットのうちの1つ(例えば、関数形)が、インデックスレコードのフィールド内で特定される。そして、関数形の識別子は、2つの原子が大型または小型PPIPに渡されるときのそれらのメタデータに付随される。いくつかの例では、例えば、ある関数形は大型PPIPで計算されうるが小型PPIPでは計算されない場合、関数形によって、どのタイプのPPIPにマッチしたペアがルーティングされるかを決定されてもよい。
【0107】
5 通信の圧縮
上述のように、各シミュレーション時間ステップで、ノードは、すべてのノードがそれらのそれぞれのインポート領域内のすべての原子を受け取るように、そのエクスポート領域内の近傍のノードに原子位置情報をエクスポートする。なお、上記の例では、あるノードのエクスポート領域は、そのノードのインポート領域と同じである。
【0108】
一般に、シミュレーションにおける原子位置は、時間とともにゆっくりと滑らかに変化し、データ圧縮の機会を与える。そのため、ノードが連続するシミュレーション時間ステップで原子位置情報を送る場合、一般に、その位置は時間ステップにつれてほとんど変化しない。様々な形でのデータの量(つまり、通信されるのに必要なビット数)の圧縮により、通信要件が軽減され、それによりノード間で原子情報を転送するのに必要な時間が短縮される。
【0109】
圧縮に対する1つのアプローチは、受信ノードがそのインポート領域内のノードから受け取った一部またはすべての原子の以前の位置(より一般的には、多数の以前の位置の履歴)のキャッシュを維持することにより可能になる。送信ノードは、受信ノードがどの原子のキャッシュ情報を持つことが保証されているかを知っており、受信ノードでのキャッシュ情報は、受信ノードと送信ノードとの両方で正確に知られている。したがって、ノードAがノードBにある原子の位置情報を送信する(つまり「エクスポートする」)ときに、仮に、ノードBが当該原子のキャッシュ情報を持っていないことをノードAが知っている(あるいは少なくともそのようなキャッシュ情報を持っていることが明らかでない)場合、ノードAは完全な情報を送信する。ノードBが当該原子の位置情報を受信すると、後続のシミュレーション時間ステップで使用するための位置情報をノードBはキャッシュする。一方、ノードBがその原子のキャッシュ情報を持っていることをノードAが知っている場合、新しい位置とその原子のキャッシュ情報との関数である圧縮情報がノードBからノードAへ送られてもよい。例えば、現在位置を送信する代わりに、ノードAは、以前の位置と現在位置との差を計算し、その差を送信してもよい。受信ノードBはその差を受信し、受信ノードBで用いられる新しい位置を得るため、その差を以前の位置に加算する。さらに後述するように、一般的に、その差の大きさは、ノードBのホームボックス内の絶対位置よりも実質的に小さく、そのため、その差を通信するために必要なビット数は(平均で)少なくなるかも知れない。例えば、単純にある原子の先行位置をキャッシュするよりも、他の圧縮も可能である。例えば、ある原子の先行位置が2つあれば、ノードは原子の速度を近似し、先行位置から予測を行い、そして予測と実際の位置との差を計算できる。そのような予測は、原子の位置の線形予測(外挿)であるとみなされうる。この差は、一般的に、平均で、以前の位置からの差よりも大きさが小さいことがある。送信ノードと受信ノードの両方が同じ予測関数を用い、両方のノードが、予測を行うための、同じ先行位置の記録(または先行位置から推測される他の要約/状態)を持っている限り、さまざまな別の予測関数を用いてもよい。例えば、3つの先行位置があれば、原子の位置の二次外挿が用いられてもよい。
【0110】
受信ノードにおいてどの原子がキャッシュされているかを送信ノードが知る方法は、数多くある。1つの方法は、ノードが1つの時間ステップで位置情報を送信する場合、受信ノードが次の時間ステップでそのノードのキャッシュ情報を持っていることを保証できるように、各ノードに十分なメモリを提供することである。他の方法としては、送信ノードと受信ノードの両方が同一の方法でキャッシュとキャッシュ排出の決定を行うことであり、例えば、各ノードが互いのノードに対して固定された数のキャッシュ場所を持ち、その場所がすべての原子をキャッシュするのに十分でないときにはどの原子を排出するかまたはキャッシュしないかのルールを持つ。さらに他の方法としては、ノードは、例えば、原子のホームボックスノードに送り返される力情報とともに、原子がキャッシュされているか否かに関する明示的な情報を送信ノードに送り返すこともできる。さらに他の選択肢としては、ノード間ネットワークを介してより多くの「ホップ」を必要とする原子をキャッシュすることが優先され、それにより全体的なネットワークの使用量が減らされることも可能である。
【0111】
あるノードでキャッシュ情報を維持する回路位置の別の例は、数多くある。1つの代替例では、キャッシュ情報はノードのエッジ、キャッシュ情報はノードのエッジ、例えば、エッジネットワークタイル122(例えば、
図4参照)に維持される。例えば、キャッシュ情報は、チャネルアダプタ115に保持されてもよい。特定の原子が(例えば、タイムステップごとのルーティングの違いにより)異なるタイムステップで異なるリンク110を通して到着する例では、キャッシュ情報は、共有メモリを通じて、またはチャネルアダプタへの複製によって、多数のチャネルアダプタ115にアクセス可能であってもよい。いくつかの代替例では、キャッシュ情報は、他の場所、例えば、PPIMのマッチユニット内に保存され適用されてもよい。
【0112】
ノードからノードへ送らされる位置情報の大きさを減らしたため、大きさが小さいことを利用する1つの方法は、情報の可変長エンコーディングを用いることである。例えば、大きさの先行ゼロは抑制されるか、ランレングスエンコーディングされる(例えば、小さな負の量と小さな正の量とが先行ゼロを有するように、符号ビットエンコーディングがともなわれる大きさを用いることにより)。先行ゼロの数は、先行ゼロバイトの数を示すインジケータと、後続の非ゼロバイトによって表されてもよい。いくつかの例においては、異なる原子に対する多数の差分がビットインターリーブされ、先行ゼロ部分の長さをエンコードする処理がインターリーブされた表記に適用される。その差分は似たような大きさになる傾向があるため、先行ゼロ部分の長さは、インターリーブされた表記を用いて、より効率的にエンコードされてもよい。
【0113】
この圧縮技術の実験的評価では、完全な位置情報を送る場合と比べて、必要な通信容量は、約2分の1であった。通信遅延が各時間ステップのシミュレーションに要する時間に寄与する範囲において、そのような通信の総量を削減により、所定のシミュレーション期間をシミュレートするのに必要な実時間の総量を削減できる。さらに、いくつかの実験評価においては、通信要件の削減によって、シミュレーション速度の制限要因から通信が排除される。
【0114】
6 ネットワークフェンス
理解されるように、システムのノードでの分散計算は、ある程度の同期を必要とする。例えば、特定のシミュレーション時間ステップに対してノードで計算を実行する際、入力(つまり、原子位置)がその時間ステップの開始時に関連付けられたものであり、その結果がその時間ステップの終了時に原子位置を更新するため正しく適用されることが重要である。同期に対するための1つのアプローチは、ノード間ネットワークに組み込まれたハードウェア同期機能(「プリミティブ」)を利用する。以下に説明するこのようなプリミティブの1つを、「ネットワークフェンス」と称する。
【0115】
ネットワークフェンスは、フェンスパケットとともに実現される。ノードAから送信されたフェンスパケットをノードBが受信したことで、そのフェンスパケット以前にノードAから送信されたすべてのパケットがノードBに到着したことがノードBに通知される。フェンスパケットは、システムのノード間で送信される他のパケットと同様に扱われる。パケットマージおよびマルチキャストサポートを含むネットワーク機能は、フェンスパケットの送信に要する総通信要件(例えば、「帯域幅」)を低減させる。
【0116】
各送信元コンポーネントは、そのフェンスパケットに先んじて宛先に到着させたいパケットを送信した後、フェンスパケットを送信する。そして、ネットワークフェンスは、そのフェンスパケットより先にすべての送信元コンポーネントから送信されたすべてのパケットを宛先コンポーネントが受信した後で、宛先コンポーネントがそのフェンスパケットを受信することを保証する。ネットワークフェンスの順序の保証は、送信元から宛先へ所定の経路(例えば、特定の次元のルーティング順序)に沿って送信されたパケットは、常に送信された順序で届けられるという基本的順序特性と、特定の送信元からのフェンスパケットは、その送信元からのパケットがそのネットワークフェンスに対するすべてのあり得る宛先に到達するために取り得るすべての可能な経路に沿ってマルチキャストされるという事実と、の上に築かれている。
【0117】
ネットワークにおけるアドレス指定により、パケットをノード内の特定のモジュールまたはモジュール群にアドレス指定することが可能になる。例えば、あるパケットは、ノードのジオメトリコア134にアドレス指定され、他のパケットは、ノードのICMモジュール150にアドレス指定されてもよい。いくつかの例では、あるノードから送信されるフェンスパケットは、ジオメトリコア-ジオメトリコア(GC-to-GC)またはジオメトリコア-ICB(GC-to-ICB)等の送信元-宛先パターン、およびホップ数を含む。そして、フェンスの機能は、そのパターンにマッチしたパケットに特有である。ホップ数は、フェンスメッセージがネットワークを通じてどこまで遠くへ伝搬されるかを示す。例えば、ICBによるGC-to-ICBパターンのフェンスパケットの受信は、ノード間(すなわち、トーラス)ホップの指定された数のうちのすべてのGCsから、このフェンスパケットのより前に送信されたすべての原子位置パケットをそれが受信したことを示す。これは、ノードが原子情報を受信するインポート領域が、インポート領域内の任意の送信元ノードから最大ノード間ホップ数を有するシミュレーションにおいてよく用いられるケースである。ネットワークホップの数を制限することで、ネットワークフェンスは、限られた同期領域に対する待ち時間の短縮を実現できる。なお、最大ホップ数内の各送信元がフェンスパケットを送信するため、受信ノードには、ネットワーク内のノードの固定相互接続に基づいて、受信すると予想されるフェンスパケットの数がわかる。
【0118】
フェンスパケットの伝播の通信要件を制限するため、ノード間ネットワークの例は、以下に説明するマージ機能および/またはマルチキャスト機能を実現する。
【0119】
フェンスパケットがノードの入力ポートに到着すると(すなわち、ノードのエッジルーター143に到着すると)、パケットを出力ポートに転送する代わりに、ノードはフェンスパケットをマージする。このマージは、フェンスカウンタを増分することで実現される。フェンスカウンタが予想される値に達すると、単一のフェンスパケットが各出力ポートに送信される。いくつかの例では、フェンスがマルチキャストされるべき出力ポートのセットを決定するのに、フェンス出力マスクが用いられる。この決定の1つの方法としては、入力ポートiついて、そのルーター内でフェンスパケットが入力ポートiから出力ポートjまで移動する必要がある場合、その出力マスクのビットjがセットされる。フェンスパケットが送出されると、カウンタはゼロにリセットされる。ルーターは、最後に到着するフェンスパケットを待つ間、フェンスパケットではないパケットを転送し続けることができるので、フェンスパケットの後に送信された通常のトラフィックは、フェンスパケットよりも先に宛先に到達できる(つまり、ネットワークフェンスは一方通行のバリアとして機能する)。
【0120】
予測されるカウントとフェンス出力マスクは、フェンスパターンごとにソフトウェアによりあらかじめ設定されている。例えば、特定の入力ポートの例では、上流ノードからの2つの異なるパスからのフェンスパケットが予測されうる。マージにより各パスからは1つのフェンスパケットが到着するので、入力ポートは合計で2つのフェンスパケットを受信することになり、それにより予測されるカウントは2に設定される。フェンスカウンタ幅(ビット数)は、ルーターのポートの数によって制限される(例えば、6ポートのルーターでは3ビット)。この例におけるフェンス出力マスクは、フェンスパケットがマルチキャストされる先の2つの出力ポートに対して設定される2ビットを有する。
【0121】
ノード間トーラスネットワークのルーティングのアルゴリズムは、6つのあり得る次元オーダーからのパスの多様性ならびに各接続された隣接者のための2つの物理チャンネルスライスを利用する。さらに、ノード間ネットワークにおけるネットワークのデッドロックを回避するため、多数の仮想回路(VCs)が採用されるが、これは、パケットが移動できる有効なルートに沿って、すべてのあり得るVCsにフェンスパケッが送信されなければならないことを意味する。ネットワークフェンスがチャネルを横切る際、チャネルアダプタ115によってすべての可能な要求クラスVCs上でフェンスパケットがエッジネットワーク144に投入される。いくつかのホップは、必ずしもこれらのVCsのうちすべてを利用するとは限らないが、パケットがたどったホップの数に関わらず関係なく同一のVCのセットを用いることができるので、このルールにより、ネットワークフェンスがネットワーク全体にわたってすべての可能な経路をカバーすることが確保され、フェンスの実現が簡単になる。エッジルーター143内では、各VCsに個別のフェンスカウンタを用いなければならず、そして、同じVCからのフェンスパケットのみをマージすることができる。
【0122】
上の説明は、ネットワーク内の単一ネットワークフェンスに限定されている。ルーター内により多くのフェンスカウンタを追加することにより、ネットワークは同時未処理ネットワークフェンスをサポートし、ソフトウェアに多数(例えば、最大14)のフェンス動作を重複させることができるようになる。エッジルーターのフェンスカウンターアレイのサイズ要件を低減するため、ネットワークアダプターは、新しいネットワークフェンスの投入を制限することにより、エッジネットワーク内の同時ネットワークフェンスの数を制御する、フロー制御メカニズムを実装する。これらのフロー制御メカニズムにより、エッジルーターの入力ポートあたり96個のフェンスカウンタを用いるだけで、ネットワークフェンスを実装できる。
【0123】
ジオメトリコア-ジオメトリコア(GC-to-GC)パターンのネットワークフェンスは、所定の数のトーラスホップ内のすべてのGCsを同期させるバリアとして用いられる。一旦GCがフェンスを受信すると、他のすべてのGCsがそれを送信したことがわかる。GC-GCネットワークフェンスのノード間ホップ数がマシン直径(すなわち、すべてのノードに到達するための3Dトーラスネットワーク上の最大ホップ数)に設定されている場合、それはグローバルバリアとしての挙動を示す。
【0124】
7 ノード内データ通信
シミュレーション時間ステップの開始時、あるノードの各コアタイル124は、そのノードのホームボックス内にある原子について、以前の時間ステップ中に計算された原子位置のサブセットをそのメモリに保存している。時間ステップの計算中、これらの位置は、そのノードのPPIMsで必要であり、そのノードのエクスポート領域内のノードでもまた必要とされる。上述のように、ノードは、リンク142とコアルータ141とを有する2Dメッシュネットワークを備えている。原子の位置は、各列内のPPIMsが時間ステップの開始時にその列のいずれかのコアタイルに保存されたすべての原子を有するように、2Dメッシュネットワークの列にわたってブロードキャストされる。同時に、各コアタイルは、2Dネットワークの行に沿って、ノードの同じ行の各エッジ上のエッジタイル122に原子位置を送信する。エッジタイルは、それらの原子位置をノードのエクスポート領域の他のノードに転送する役割を果たす。
【0125】
一旦すべてのPPIMsが原子位置のコピーを持つと、一方のエッジから他方へポジションバス151を介して通過する他の原子は、ノードのホームボックス内の各原子に正確に1つのPPIMで遭遇することが保証され、上述のように、2つの原子が互いのカットオフ半径内にある場合に、マッチングされてもよい。したがって、PPIMs内の原子間のペアワイズ相互作用の計算は、ノードにおいて開始されてもよい。
【0126】
初期のPPIM計算は、ノード特有な原子情報(すなわち、ノードのホームボックス内に両方とも存在する原子間の相互作用)のみを必要とし、各コアタイルが原子位置をポジションバス151を介してPPIMsの列にわたってブロードキャストし、それにより、全てのノード特有な計算(例えば、
図5Aを参照)が実行される。その結果得られる力成分は、フォースバス152を通してブロードキャストされ、原子の情報が保存されているコア時間で回収される。
【0127】
原子位置情報が他のノードからエッジタイルに到着すると、エッジタイルからコアタイルの列にわたって位置情報がストリーミングされ、それにより、インポートされる各原子がノードのホームボックス内の各原子に正確に1つのPPIMで遭遇する。これらの相互作用は、ノードが力の計算と蓄積を担う原子について、PPIMに集積される力を生成し、および/または、相互作用のための位置情報を提供したノードに戻すため、フォースバス152を介して力をエッジタイルにストリーミングして戻す。ストリーミングが完了すると、PPIMs内に蓄積された力は、コアタイルの列において通信され、原子の情報を保持するコアタイルに渡される。
【0128】
同じノード上の他のコアタイルからか他のノードから返されたものかを問わず、コアタイルがすべての力項を受け取った後、コアタイルは、数値積分を実行するために合計の力を用いることができ、それにより各原子の位置を更新する。
【0129】
上記の形態では、各列は12個のコアタイルを有し、コアタイルあたりで2つのPPIMsがあるので、各列あたりでは合計24個のPPIMsがあり、ノードのホームボックスには原子情報が24倍複製される。この複製は、並列計算を提供するには有効であるが、別の案ではこの程度までの複製は必要とされない。例えば、完全な24倍複製では、マッチングされるすべての原子が単一のポジションバス151上を通過し、ノードのホームボックス内のすべての原子と遭遇することが保証されるが、各原子を多数のポジションバスを通過させることで、より少ない複製も可能である。例えば、列のコアタイル上の複製がなく、コアタイルの原子をコアタイルの2つのPPIMs間で分割すると、各原子は、すべてのポジションバス151にわたって送信され、正確に1つのPPIM内の各ホームボックス原子に遭遇することが保証される。中間レベルの複製が用いられてもよく、例えば、コアタイルをサブセットに分割し、各原子を各サブセットの1つのポジションバス上に送信して、すべてのホームボックス原子に遭遇するようにする。
【0130】
さらに別の形態として、ホームボックスの原子のアクセスにページングアプローチを用いてもよい。このようなアプローチでは、ICB150は、(例えば、異なるメモリ領域の「ページ」を用いて)保存された原子のセットをPPIMsにロードおよびアンロードし、その後、各原子は、各セットについて1回、PPIMsを渡ってストリーミングされ得る。したがって、複数回ストリーミングされた後、原子は、ノードの各ホームボックスアトムにきっちり1回遭遇したことが保証される。各「ページ」の終わりに、PPIMsは、ホームボックスの原子に蓄積された力を流出させる。
【0131】
8 結合計算
図3を参照して上述したように、各コアタイルは、直接的に、あるいはいくつかの構成では間接的に、結合される原子の間の相互作用のためのタイルによって用いられる、結合計算モジュール(BC)133を含んでいる。すべての結合力がBCによって計算されるわけではない。むしろ、最も一般的で数値的に「行儀の良い」相互作用のみがBCで計算され、他のより複雑な結合計算は、ジオメトリコア134で計算される。なお、このことは、相互作用のサブセットを計算するために小型PPIPsを用い、より複雑な相互作用の定式化が必要な残りの相互作用を計算するために大型PPIPを用いることにいくぶん類似している。
【0132】
BCは、伸縮、角度、ねじり力を含む力を判定する。各結合の種類ごとに、力は、結合に参加する原子の位置から計算されたスカラー内部座標(例えば、結合長や角度)の関数として計算される。タイルのGC134(すなわち、タイルの2つのGCsのうちの1つ)は、ある原子は複数の結合項に参画しているかも知れないので、これらの原子位置を小さなキャッシュに保存させるためにBC133に送る。その後、GCは、計算するべき結合項を指定するコマンドをBCへ送信し、その際、BCは対応する原子位置をキャッシュから取得し、適切な内部座標を、またこのように結合力を計算する。得られた結合の各原子上の力は、BCのローカルキャッシュに蓄積され、その原子のすべての結合項の計算が完了したときに、原子ごとに1回だけメモリに送り返される。
【0133】
9 指数差分
いくつかの実施例において、粒子間の相互作用は、指数関数の差という形、例えば、exp(-ax)-exp(-bx)という形、または電子雲分布の畳み込みを表す積分の評価としての形をとる。2つの指数を別々に計算し、その差を取ることは可能かもしれないが、そのような差は、数値的に不正確(例えば、非常に大きな数の差)であるかもしれない。好ましいアプローチは、この差の1つの級数表現を形成することである。例えば、その級数は、テイラー級数やガウス-ヤコビ求積法に基づく級数であってもよい。さらに、シミュレーション全体の精度を維持するのに必要な項の数は、一般に、axとbxの値による。したがって、ペアワイズ項を計算する際(例えば、小型または大型PPIPにおいて)、異なる特定の粒子のペア、ペアに対してインデックスレコードで取得される異なる情報、またはaxとbxの値における差分に基づく異なる基準(例えば、絶対差、比、等)により、級数の項がどれだけ保持されるべきかを決定することができる。例えば、項の数を減らす(例えば、多数の粒子のペアに対し単一の項にする)ことにより、2つの値が近い場合、すべてのペアワイズ相互作用の計算全体を、全体の精度を維持しながら大幅に削減することができ、それにより、精度と性能との間(計算速度および/またはハードウェア要件)の制御可能なトレードオフを提供することができる。
【0134】
10 分散ランダム化
いくつかの例においては、同一の値(例えば、原子にかかる力)が、例えば、通信コストを回避するため、異なるプロセッサで冗長に計算される。例えば、このような冗長計算が「フルシェル」法において発生する可能性がある(例えば、
図5Cに示されるような相互作用において)。また、体系的に切り捨てたり四捨五入したりした結果がシミュレーション全体にとって、例えば、一連の反復にわたってバイアスを導入することにより、有害となるかもしれないような状況がある。例えば、繰り返し切り捨てを行うと、時間積分は著しく小さくなりすぎることがある。
【0135】
連続した時間ステップでの丸め処理により生じる累積されたバイアスを回避するための1つのアプローチは、粒子のセットについて計算された値を丸めたり切り捨てたりする前に、小さなゼロ平均乱数を加えることである。そのようなアプローチは、「ディザリング」と称される。しかしながら、異なるプロセッサで冗長計算を行う場合、例えば、乱数発生の順序の違いなどのため、たとえ元のシードが同じであっても、異なるプロセッサで発生する疑似乱数が同じになる理由は必ずしもない。異なる乱数を用いると、丸められり切り捨てられた値が異なるかもしれず、そのシミュレーションがプロセッサ間で完全に同期(例えば、正確なビット表現での同期)しないこともある。
【0136】
1つの好ましいアプローチは、まったく同じデータが粒子のセットの値を計算するすべてのノードで用いられる、データ依存乱数生成を用いることである。乱数値を生成する方法の1つは、計算に関わる粒子の間の座標差を、丸めたり切り捨てたりする前に加えられるべき乱数値(複数の乱数値でありうる)を生成するための乱数シードとして用いることである。いくつかの実施形態においては、3つの幾何学的座標方向のそれぞれにおける絶対差の低次ビットが、その出力が乱数値として用いられるかまたは1つ以上の乱数を生成する擬似乱数生成器の乱数シードとして用いられるハッシュ関数への入力として、保持され、組み合わせられる。粒子のセットに関わる多数の計算がある場合、異なる乱数を生成するのに同じハッシュが用いられ、計算結果に加算される。例えば、1つの乱数をいくつかに分割したり、同じシードから乱数列を生成するのに乱数発生器を用いたりする。座標距離の値はすべてのプロセッサでまったく同じであるため、ハッシュ値は同じになり、したがって、乱数も同じになる。粒子間の距離は、絶対位置よりも好ましい可能性があり、なぜなら、距離は、平行移動およびトロイダルラッピングに対し不変であるのに対し、絶対位置はそうでないかもしれないからである。座標方向における差の計算は、丸め誤差が生じさせないため、ユークリッド(スカラー)距離よりも好ましい場合がある。
【0137】
11 まとめ
多数の異なる技術を上に説明し、例えば、上の異なる番号のセクションに説明した。特に説明しない限り、これらの技術は、革新的シミュレーションシステムおよび計算アプローチの特定の実施例に含めるために個別に選択されればよく、説明から明らかでない限り、特定の技術が必須ではない。さらに、これらの技術は、上記で特定された本出願人の先行特許に記載の関連技術と独立または関連して用いることができる。
【0138】
上述のように、上記の詳細な説明は、その運動がシミュレートされる粒子が原子である分子シミュレーションの技術的問題に焦点を当てているが、その技術は、同様に惑星のシミュレーションのような他の多体(「N-Body(N体)」)シミュレーション問題にも適用可能である。また、上述のいくつかの技術は、多体シミュレーションを超える技術問題の解決にも適用可能である。例えば、一組の計算を精度および/または複雑性が異なるモジュール間(例えば、小型PPIMと大型PPIMの間、又はBCモジュールとGCモジュールの間)で分割するアプローチは、他の特殊用途において回路面積および/または消費電力の抑制が可能な回路設計技術である。ネットワークフェンスは、データ通信の順序付けや同期ポイントを表すネットワーク内プリミティブを提供するもので、多体シミュレーション問題以外にも、例えば、広範な分散計算システムにも広く適用可能であり、その結果、計算ノードにおける同期の複雑性を低減することができる。異なる計算ノードで擬似ランダム値の正確な同期を提供するためにデータ依存ランダム化を用いる技術は、このような同期によりアルゴリズム上の利益が得られる分散計算システムにも広範囲に適用可能である。
【0139】
上述のような分子シミュレーションは、例えば、分子の予測特性を決定するためにシミュレーションが用いられ、シミュレーションされた分子のいくつかが物理的に合成され、さらに評価されるような、創薬のような全体的な技術的問題において1つのステップを提供することができるということが広く理解されるべきである。したがって、シミュレーションの後、所望の特性を有する物理的分子または分子系を同定するための実用的応用の一部として、少なくともいくつかの分子または分子系を合成および/または物理的に評価することができる。
【0140】
本発明の多数の実施形態について説明した。しかしながら、前述の説明は、例示を意図しており、以下の特許請求の範囲によって定義される本発明の範囲を限定することを意図していないことが理解されるべきである。従って、他の実施形態もまた、以下の特許請求の範囲に含まれる。例えば、本発明の範囲から逸脱することなく、様々な変更を行うことができる。さらに、上述した工程のいくつかは順序に依存しない場合があり、従って、説明した順序とは異なる順序で実行することができる。
【国際調査報告】