Folding@home
Folding@homeは、コンピュータハードウェアの愛好家(「オーバークロッカー」と呼ばれることもある)の参加者を集めている。 これらのグループは、プロジェクトにかなりの専門知識をもたらし、高度な処理能力を持つコンピュータを構築することができる。 他の分散コンピューティングプロジェクトでは、このようなタイプの参加者が集まり、プロジェクトは改造されたコンピュータの性能をベンチマークするために使用されることが多く、この趣味のこのような側面は、プロジェクトの競争的な性質によって対応されている。 個人やチームは、誰が最も多くのコンピュータ処理装置(CPU)を処理できるかを競うことができる。
このFolding@homeに関する最新の研究では、オンライングループのインタビューと民族誌的観察を行い、ハードウェア愛好家のチームが、処理出力を最大化するためのベストプラクティスを共有しながら一緒に作業することができることが示された。 このようなチームは、言語とオンライン文化を共有し、実践コミュニティになることができる。 このような参加パターンは、他の分散コンピューティングプロジェクトでも観察されている。
Folding@homeの参加者のもう一つの重要な観察点は、男性が多いことである。 これは他の分散型プロジェクトでも観察されている。 さらに、参加者の多くはコンピュータやテクノロジーを使った仕事やキャリアに従事している。
Folding@homeの参加者全員がハードウェアの愛好家というわけではない。 多くの参加者は、改造されていないマシンでプロジェクトのソフトウェアを実行し、競争的に参加している。 Folding@homeには10万人以上の参加者がいる。 しかし、参加者のうち、どの程度の割合がハードウェア愛好家なのかを把握することは困難である。 しかし、プロジェクト管理者によれば、処理能力の面では愛好家コミュニティの貢献度の方が大きいと語っている。
スーパーコンピュータのFLOPS性能は、従来のLINPACKベンチマークを実行することで評価される。 この短期的なテストでは、LINPACKがスーパーコンピュータのハードウェアに効率的にマップされるため、実世界のタスクでの持続的なパフォーマンスを正確に反映することは困難である。 コンピューティングシステムはアーキテクチャや設計が異なるため、直接比較することは困難である。 これにもかかわらず、FLOPSはスーパーコンピューティングで使用される主要な速度指標であることに変わりはない。 対照的に、Folding@homeは、ワークユニット(作業単位)が完了するのにかかる時間を測定することで、実経過時間を使用してFLOPSを決定する。
2007年9月16日、PlayStation 3の参加もあり、Folding@homeプロジェクトは、ネイティブ 1ペタFLOPS(参考: エクサスケール・コンピューティング)を超える持続的な性能を正式に達成し、あらゆる種類の計算機システムで初めての達成となった。 当時のTop500で最速のスパコンはBlueGene/Lで0.280ペタFLOPSであった。 翌年の2008年5月7日にはネイティブ 2ペタFLOPSを超える持続性能を達成し、2008年8月にはネイティブ 3ペタFLOPS、2008年9月28日にはネイティブ 4ペタFLOPSのマイルストーンを達成した。 2009年2月18日には、Folding@home がネイティブペタFLOPS 5ペタFLOPSを達成し、この5つのレベルを達成した最初の計算機プロジェクトとなった。 これに対して、2008年11月の最速スーパーコンピュータはIBMのRoadrunnerで1.105ペタFLOPSであった。 2011年11月10日のFolding@homeの性能は、6ネイティブペタFLOPSを超え、これはx86の8ペタFLOPS近くに相当する。2013年5月中旬には、Folding@homeは7ネイティブペタFLOPSを超え、14.87 x86ペタFLOPSに相当する。その後、6月21日には8ネイティブペタFLOPSを達成し、同年9月9日には9ネイティブペタFLOPSを達成、17.9 x86 ペタFLOPSを達成した。2016年5月11日、Folding@homeは100 x86 ペタFLOPSの達成に向けて動き出したと発表した。
2020年のコロナウイルスパンデミックによる意識の高まりと、市民科学者のプロジェクトへの参加から、さらなる利用が拡大した。 2020年3月20日、Folding@homeはTwitterを通じて、470ネイティブペタFLOPS以上で稼働していることを発表した(958 x86ペタFLOPSに相当)。 同年3月25日までに768ペタFLOPS、つまり1.5 x86エクサFLOPSに達し、初のエクサFLOPコンピューティングシステムとなった。
他の分散コンピューティングプロジェクトと同様に、Folding@home は、クレジットシステムを通じてプロジェクトへのユーザのコンピューティング貢献度を定量的に評価する。 ポイントは、プロジェクトがリリースされる前に、そのプロジェクトからの1つ以上のワークユニット(作業単位)を公式のリファレンスマシン上でベンチマークすることによって決定される。 各ユーザは、すべてのワークユニットを完成させた場合にこれらの基本ポイントを受け取ることができるが、秘密のパスキーを登録することで、計算の難易度が高いユニットや科学的な優先順位が高いユニットを確実かつ迅速に完成させた場合には、ワークユニットの成功率が80%を超えることや、10個以上の有効なワークユニットを送信するなどの条件付きでボーナスポイントを追加で受け取ることができる。 また、ユーザは複数のマシン上のクライアントからの作業に対してもクレジットを受け取ることができる。 このポイントシステムは、与えられたクレジットと科学的結果の価値を一致させる試みである。
ユーザは自分の貢献をチームに対して登録することができ、メンバー全員のポイントを合算することができる。 ユーザは自分のチームを立ち上げることも、既存のチームに参加することもできる。 場合によっては、チームは、インターネットフォーラムのようなコミュニティ主導のヘルプや勧誘の情報源を持つこともある。 ポイントは、プロジェクトのために最も多くの計算をするために、個人とチームの間で友好的な競争を促進することができ、フォールディングコミュニティに利益をもたらし、科学研究を加速させることができる。 個人とチームの統計は、Folding@home のウェブサイトに掲載される。
ユーザが新しいチームを結成しなかったり、既存のチームに参加しなかったりすると、そのユーザは自動的に「デフォルト」チームのメンバーになる。 この「デフォルト」チームのチーム番号は「0」で、統計情報は、この「デフォルト」チームとして特別に命名されたチームのために蓄積される。
ユーザー側のFolding@homeソフトウェアは、ワークユニット、コア、クライアントという3つの主要なコンポーネントから構成されている。
ワークユニット(Work units, 作業単位)とは、クライアントに処理を依頼するタンパク質データのことである。 作業単位は、マルコフモデルにおける状態間のシミュレーションの断片である。 ワークユニットがダウンロードされ、ボランティアのコンピュータで完全に処理された後、それはFolding@homeのサーバーに戻され、ボランティアにクレジットポイントが与えられる。 このサイクルは自動的に繰り返される。 すべてのワークユニットには期限があり、この期限を超えた場合、ユーザーはクレジットを取得できず、自動的に別の参加者に再発行される。 タンパク質のフォールディングは連続的に行われ、多くのワークユニットは前任者から生成されるため、妥当な期間が経過してもワークユニットが返却されない場合は、シミュレーションプロセス全体が正常に進行するようになっている。 これらの期限の関係上、Folding@homeの最小システム要件は、Pentium 3 450 MHz CPUとStreaming SIMD Extensions(SSE)である。 しかし、高性能クライアント用のワークユニットは、単一プロセッサクライアント用のワークユニットよりもはるかに短い期限が設定されており、それは科学的利益の大部分がシミュレーションを迅速に完了することに依存しているためである。
一般公開前に、ワークユニットはいくつかの品質保証段階を経て、問題のあるものが完全に利用可能にならないようにする。 これらのテスト段階には、Folding@home全体での最終的な完全リリースの前に、内部テスト、ベータテスト、および高度テストが含まれる。 Folding@homeのワークユニットは、処理中にまれにエラーが発生する場合を除き、通常、一度だけ処理される。 もしこれが3人の異なるユーザに発生した場合、そのユニットは自動的に配布から除去される。 Folding@homeサポートフォーラムは、問題のあるハードウェアに起因する問題と不良のワークユニットに起因する問題を区別するために使用することができる。
Folding@homeコアのリスト「FahCores(ファーコア)」と呼ばれ、しばしば「Core(コア)」と略される特殊な分子動力学プログラムは、バックグラウンドプロセスとしてワークユニット上で計算を実行する。 Folding@homeのコアの大部分は、手動で最適化されたアセンブリ言語コードとハードウェアの最適化からなる、最も高速で最も一般的な分子動力学ソフトウェアパッケージの一つであるGROMACSをベースにしている。 GROMACSはオープンソースのソフトウェアで、パンデ研究室とGROMACSの開発者とは協力関係を持っているが、Folding@homeではデータの妥当性を確保するためにクローズドソースのライセンスを使用している(すなわちソースコードを公開していない)。 あまりアクティブではないコアには、ProtoMol(新しいアルゴリズムのテストに向く)とSHARPENがある。 かつてFolding@homeはAMBER、CPMD、Desmond、TINKERを使用してきたが、これらのコアは引退しており、現役ではなくなっている。 これらのコアの中には、周囲の溶媒(通常は水)を原子単位でモデル化する明示的な溶媒和計算を行うものもあれば、溶媒を数学的連続体として扱う暗黙の溶媒和計算を行うものもある。 コアはクライアントから分離されており、クライアントの更新を必要とせずに科学的手法を自動的に更新できるようになっている。 コアは定期的にアプリケーション・チェックポインティングを作成し、中断されても起動時にその時点から作業を再開できるようにしている。
Folding@homeの参加者は、パーソナルコンピュータにクライアントプログラムをインストールする。 ユーザは、バックグラウンドで他のソフトウェアコンポーネントを管理するクライアントと対話する。 ユーザはクライアントを通じて、折り畳み処理を一時停止したり、イベントログを開いたり、作業の進捗状況を確認したり、個人の統計情報を表示したりすることができる。 コンピュータ・クライアントは、通常のコンピュータの使用に影響を与えないように、非常に低い優先度でバックグラウンドで継続的に実行され、アイドル処理能力を使用する。 CPUの最大使用量は、クライアントの設定で調整できる。 クライアントは、Folding@homeサーバに接続し、ワークユニットを取得し、クライアントの設定、オペレーティングシステム、および基礎となるハードウェアアーキテクチャに適したコアをダウンロードすることができる。 処理後、ワークユニットは、Folding@homeサーバに戻される。 コンピュータ・クライアントは、ユニプロセッサ・システムやマルチコア・プロセッサ・システム、グラフィックス・プロセッシング・ユニットに合わせて調整されている。 各ハードウェアアーキテクチャの多様性と処理性能により、Folding@homeは、多くの種類のシミュレーションをタイムリーに(数年ではなく数週間から数ヶ月で)効率的に完了させることができ、これは科学的価値の高いものである。 これらのクライアントを組み合わせることで、研究者は、これまで計算で取り組むことが非現実的と考えられていた生物医学的な問題を研究することが可能になる。
プロのソフトウェア開発者は、クライアント側とサーバー側の両方で、Folding@homeのコードの大部分を担当している。 開発チームには、Nvidia、ATI、Sony、Cauldron Developmentのプログラマーが含まれている。 クライアントは、Folding@homeの公式ウェブサイトまたはその商用パートナーからのみダウンロードすることができ、Folding@homeのコンピュータファイルとのみやりとりする。 クライアントは、Folding@homeのデータサーバー(ポート8080、代替として80を使用)にデータをアップロードしたりダウンロードしたりし、通信は2048ビットのデジタル署名を使用して検証される。 クライアントのグラフィカル・ユーザー・インターフェース(GUI)はオープンソースであるが、クライアントはセキュリティと科学的整合性を理由にプロプライエタリなソフトウェアである。
しかし、プロプライエタリなソフトウェアを使用することのこの合理性は、ライセンスは遡及的に法的な領域で強制力を持つことができるかもしれないが、実行可能なバイナリファイルの改変(パッチ適用としても知られる)を実質的に防ぐことができないため、議論の余地がある。 同様に、バイナリのみの配布では、インターネット経由でダウンロードされている間の中間者攻撃や、第三者によるバイナリの再配布によって、バイナリ状態のまま(つまりパッチを当てられたまま)、あるいは変更後のバイナリを逆コンパイルして再コンパイルすることによって、実行バイナリコードの悪意のある変更を防ぐことができない。 このような変更は、バイナリファイルとトランスポートチャネルが署名されていて、受信者やシステムがデジタル署名を検証できる場合には可能であるが、必ずしもそうとは限らない。 いずれにしても、Folding@home の場合、クライアント・ソフトウェアによって処理される入力データと出力結果の両方がデジタル署名されているので、作業の完全性は、クライアント・ソフトウェア自体の完全性から独立して検証することができる。
Folding@homeでは、ネットワークのためにCosmソフトウェアライブラリを使用している。 Folding@homeは2000年10月1日に立ち上げられ、生体分子システムを対象とした最初の分散コンピューティングプロジェクトであった。 最初のクライアントはスクリーンセーバーで、コンピュータが使用されていないときに実行された。 2004年には、パンデ研究室はデビッド・P・アンダーソンと共同で、オープンソースのBOINCフレームワーク上で補助的なクライアントをテストした。 このクライアントは2005年4月にクローズドベータ版としてリリースされたが、この方法は実行不可能となり、2006年6月に棚上げされた。
グラフィックス・プロセッシング・ユニット(Graphics Processing Units = GPU)の特殊なハードウェアは、ビデオゲームなどの3Dグラフィックス・アプリケーションのレンダリングを高速化するように設計されており、ある種の計算ではCPUを大幅に上回る性能を発揮する。 GPUは、最も強力で急速に成長しているコンピューティングプラットフォームの1つであり、多くの科学者や研究者は、グラフィックス・プロセッシング・ユニット上での汎用コンピューティング(GPGPU)を追求している。 しかし、GPUハードウェアは、グラフィックス以外のタスクに使用するのは難しく、通常、大幅なアルゴリズムの再構築と、基礎となるアーキテクチャの高度な理解を必要とする。 このようなカスタマイズは、ソフトウェア開発リソースが限られている研究者にとってはなおさら困難である。
Folding@homeでは、オープンソースのOpenMMライブラリを使用している。 このライブラリは、2つのアプリケーション・プログラミング・インターフェース(API)レベルを持つブリッジ設計パターンを使用して、分子シミュレーション・ソフトウェアの基礎となるハードウェア・アーキテクチャにインターフェースする。 OpenMMベースのGPUシミュレーションでは、ハードウェアの最適化が追加されたことで、大幅な変更は必要とせず、手作業でチューニングされたGPUコードとほぼ同等の性能を実現し、CPUの実装を大幅に上回る性能を発揮する。
2010年以前は、GPGPUコンシューマーグレードのハードウェアの計算信頼性はほとんど知られておらず、GPUメモリに内蔵された誤り検出と訂正がないことに関する状況証拠により、信頼性の懸念が生じた。 2010年、Folding@home ネットワーク上の2万台以上のホストを対象とした大規模なGPU科学的精度テストでは、テストされたGPUの3分の2のメモリサブシステムでソフトエラーが検出された。 これらのエラーはボードアーキテクチャと強く相関しているが、ソフトウェア側のエラー検出などのハードウェアの特性に注意を払っている限り、信頼性の高いGPUコンピューティングは大いに実現可能であると結論づけている。
Folding@homeの第一世代のGPUクライアント(GPU1)が2006年10月2日に公開され、CPUベースのGROMACSと比較して、いくつかの計算で20~30倍の高速化を実現した。 これは、GPUが分散コンピューティングや主要な分子動力学計算に使用された初めての試みであった。 GPU1は研究者にGPGPUソフトウェアの開発に関する重要な知識と経験を与えたが、2008年4月10日にDirectXの科学的な不正確さに対応して、第2世代のクライアントであるGPU2に引き継がれた。 GPU2の導入後、GPU1は6月6日に正式に引退した。 GPU1に比べて、GPU2はより科学的な信頼性と生産性が高く、ATIやCUDA対応のNvidia GPU上で動作し、より高度なアルゴリズム、より大きなタンパク質、タンパク質シミュレーションのリアルタイム可視化をサポートしていた。 これに続き、2010年5月25日には第3世代のFolding@homeのGPUクライアント(GPU3)がリリースされた。 GPU3は、GPU2との後方互換性を持ちながらも、より安定性、効率性、柔軟性に優れた科学的能力を持ち、OpenCLフレームワークの上にOpenMMを使用していた。 これらのGPU3クライアントはオペレーティングシステムLinuxとmacOSをネイティブにはサポートしていなかったが、Nvidiaのグラフィックカードを搭載したLinuxユーザーはWineソフトウェアアプリケーションを介してGPU3を実行することができた。 GPUは、Folding@homeのFLOPSの中で最も強力なプラットフォームであることに変わりはない。 2012年11月現在、GPUクライアントは、プロジェクト全体のx86 FLOPSスループットの87%を占めている。
LinuxでのNvidiaとAMDのグラフィックスカードのネイティブサポートは、CUDAではなくOpenCLを使用するFahCore 17で導入された。
2007年3月から2012年11月まで、Folding@homeはPlayStation 3の計算能力を利用していた。 その開始時において、メインのストリーミングCellプロセッサ(Cell Broadband Engine)は、いくつかの計算でPCの20倍の速度を実現し、Xbox 360のような他のシステムにはない処理能力を発揮していた。 PS3 の高速性と効率性は、アムダールの法則に基づいて最適化する価値のある他の機会をもたらし、計算効率と全体的な精度の間のトレードオフを大きく変え、より複雑な分子モデルをわずかな計算コストで使用できるようにした。 これにより Folding@homeは、他の方法では計算上不可能であった生物医学的な計算を実行できた。
PS3クライアントは、ソニーとパンデ研究室の共同開発により開発され、2007年3月23日にスタンドアロンのクライアントとしてリリースされた。 このリリースにより、「Folding@home」は、PS3を利用した初めての分散コンピューティングプロジェクトとなった。 翌年2月5日にはプロジェクト参加者が100万人を突破、9月18日には、PS3クライアントが「Life with PlayStation」のチャネルに登場、11月6日にはグッドデザイン賞金賞を受賞した。導入当時は、計算の種類で言えば、CPUの柔軟性とGPUの高速性の中間に位置していた。 ただし、パソコン上で動作するクライアントとは異なり、「Folding@home」を起動したPS3では他の操作を行うことができなかった。 PS3の統一されたコンソール環境は、テクニカルサポートを容易にし、「Folding@home」をより使いやすくした。 また、PS3にはGPUへのデータストリーミング機能があり、現在のタンパク質の動力学を原子レベルでリアルタイムに可視化するために使用されていた。
ソニーは、2012年11月6日、「Life with PlayStation」で提供しているPS3クライアント「Folding@home」およびその他のサービスのサポートを終了した。 Folding@home」は、5年7ヶ月間で1,500万人以上のユーザーが1億時間以上の計算量を提供し、病気の研究に大きく貢献してきた。 パンデ研究室との話し合いの結果、ソニーはこのプロジェクトを終了することを決定した。 パンデ氏は、PlayStation 3のクライアントを、このプロジェクトにとって「ゲームチェンジャー」だと考えていた。
Folding@homeは、最新のマルチコア・プロセッサの並列計算能力を利用することができ、複数のCPUコアを同時に使用することで、シミュレーション全体をはるかに早く完了させることができる。 同じ時間でより長いシミュレーション軌道を実行し、また大規模なシミュレーションを多くの別々のプロセッサに分散するという従来の困難を軽減するために、この方法は科学的にも価値のある方法である。 Journal of Molecular Biology誌に掲載された2007年の論文では、マルチコア処理に依存することで、実験的なフォールディングと一致したビリン・タンパク質の一部のフォールディングを、シングルプロセッサクライアントで可能なものよりも約10倍長くシミュレーションしたと報告された。
2006年11月、第一世代の対称型マルチプロセシング(SMP)クライアントがオープンベータテスト用に公開され、これはSMP1と呼ばれた。 このクライアントは、並列処理にMessage Passing Interface(MPI)通信プロトコルを使用していたが、当時のGROMACSコアは複数スレッドでの使用を想定していなかった。 分散コンピューティングプロジェクトでMPIを使用した初めての試みであった。 クライアントはLinuxやmacOSなどのUnixベースのOSでは問題なく動作したものの、Windowsでは問題があった。 2010年1月24日、SMPクライアントの第二世代であり、SMP1の後継となるSMP2がオープンベータとしてリリースされ、複雑なMPIは、より信頼性の高いスレッドベースの実装に置き換えられた。
SMP2は、異常に大きく、計算集約的で、科学的優先度が非常に高いタンパク質をシミュレートするように設計された、Big Advanced(bigadvまたはBAとも)ワークユニットの特別なカテゴリのトライアルをサポートしていた。 これらのユニットは、もともと最低8個のCPUコアを必要としていたが、2012年2月7日に16個のCPUコアに引き上げられた。 標準的なSMP2ワークユニットよりもハードウェア要件が増えたことに加えて、ランダム・アクセス・メモリ(RAM)やインターネットの帯域幅などのシステムリソースが必要となった。 その見返りとして、これらを実行するユーザは、SMP2のボーナスポイントシステム以上の20%高い報酬が与えられた。 bigadvカテゴリでは、以前はスーパーコンピュータのクラスタを使用しなければならず、Folding@home上では他のどこでも実行できなかったような、特に要求の厳しいシミュレーションを長時間実行することができた。 ところが、bigadvユニットを実行できるハードウェアを持っている多くのユーザは、後からCPUコアの最小値が増加した時に、そのハードウェアがbigadvワークユニットには不適格とみなされ、通常のSMPワークユニットしか実行できなくなってしまった。 このことはプログラムに多額の資金を投資した多くのユーザーをいら立たせ、bigadvの目的でハードウェアが使用できなくなってしまった。 その結果、パンデは2014年1月にbigadvプログラムを2015年1月31日に終了することを発表した。
V7クライアントは、Folding@homeクライアントソフトの第7世代となる最新版で、Windows、macOS、Linux OS用の以前のクライアントを全面的に書き換え、統一化したものである。 2012年3月22日にリリースされたV7は、以前のクライアントと同様に、バックグラウンドでFolding@homeを非常に低い優先度で動作させることができ、他のアプリケーションが必要に応じてCPUリソースを使用できるようになっている。 それは、インストール、起動、操作が初心者にとってよりユーザーフレンドリーになるように設計されており、以前のクライアントよりも研究者に科学的な柔軟性を提供している。 V7では、Tracを使用してバグチケットを管理し、ユーザが開発プロセスを見てフィードバックを提供できるようにしている。
V7は、マルチコアに対応した1個のCPUスロットと、対応GPUごとにGPUスロットを設け、複数のCPUコアを利用するように設計された。
V7は、4つの統合された要素から構成されている。 ユーザは通常、FAHControlと名付けられたV7のオープンソースGUIを使用して操作する。 これには、初心者向け、上級者向け、およびエキスパート向けのユーザ・インタフェースモードがあり、1台のコンピュータから多数のリモート・フォールディング・クライアントを監視、設定、および制御する機能を備えている。 FAHControlは、各FAHSlot(単にスロットと呼ばれる)を管理するFAHClientというバックエンドアプリケーションに対して指示をする。 各スロットは、単独でワークユニットのダウンロード、シミュレーション処理、その結果のアップロードを行うことができる。 かつては別個であった、Folding@home V6ユニプロセッサ版、SMP版、GPUコンピュータクライアントの代わりとして機能する。 そしてPS3のビューアを模したFAHViewerは、現在処理中のタンパク質のリアルタイム3Dレンダリングを表示する。
2014年には、Google ChromeとChromiumのWebブラウザ用のクライアントがリリースされ、ユーザがFolding@homeをWebブラウザで実行できるようになった。 このクライアントでは、ChromiumベースのWebブラウザに搭載されているGoogle Native Client(NaCl)機能を利用して、ユーザーのマシン上のサンドボックスでFolding@homeのコードをネイティブに近い速度で実行していた。 NaClの段階的な廃止とFolding@homeでの変更により、Webクライアントは2019年6月に恒久的にシャットダウンされた。