並列計算
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2023/09/07 09:10 UTC 版)
ソフトウェア
並列型コンピュータでのプログラミング向けに、プログラミング言語、ライブラリ、API、並列プログラミングモデルが生み出されてきた。
それらは、前提とするメモリアーキテクチャ(共有メモリ、分散メモリ、分散共有メモリ)によって分類できる。共有メモリ型プログラミング言語は、共有メモリ上の変数を更新することで相互の通信を実現している。分散メモリ型ではメッセージパッシングが使われる。共有メモリ型APIとしては、POSIXスレッドとOpenMPが広く使われている。一方メッセージパッシング型のAPIとしては、Message Passing Interface (MPI) がよく使われている。
自動並列化
逐次型プログラムのコンパイラによる自動並列化は、並列計算の最終目標の1つでもある。コンパイラ研究者が長年に渡って研究しているが、限定的な成果しか得られていない。
一般に使われている並列プログラミング言語では、プログラマが並列化する部分を明記するか、せいぜい部分的な自動並列化ができる程度である。並列化を全く明記する必要のない言語も少数ながら存在し、SISAL、Parallel Haskell、Mitrion-C(FPGA用)などがあるが、これらはいずれも広く普及しているとは言い難い。
アプリケーション・チェックポインティング
コンピュータが大規模かつ複雑になると、平均故障間隔は小さくなる。並列計算では、多数のプロセッサを使っても長時間かかるような処理を行うことがある。このため、アプリケーションの実行中の状態(全てのリソース確保状況や変数群の状態など)をコアダンプのような形で定期的に保持しておき、障害が発生したときに最初から処理をやり直すのではなく、途中までの保存された状態から再開できるようにする必要がある。この技法をアプリケーション・チェックポインティングと呼ぶ。時には数ヶ月もかかる処理もあり、その場合アプリケーション・チェックポインティングは非常に重要となる。また、この技法はプロセスマイグレーションにも応用できる。
GPGPU
GPGPUに関しては、統合型シェーダーアーキテクチャの出現以降、NVIDIA社によるCUDA、KhronosグループによるOpenCL、マイクロソフト社によるDirectComputeといったAPIの整備・標準化も進んでいる。APIごとに特色はあるが、カーネル記述方式などに概ね似通った特徴を持つ。ただしCPUとGPUはメモリ空間が異なるため、まずCPU側のメモリからGPU側のメモリに入力データをコピーしてGPUに処理を実行させ、さらに処理後の結果を出力データとしてGPU側のメモリからCPU側のメモリにコピー(リードバック)する必要があるなど、プログラミングモデルは分散メモリ環境に近く、煩雑である[32]。
AMDはCPUとGPUを統合したAPUを開発しているが、さらにCPUとGPUのメモリ空間までをも統合し、データ転送の手間を減らしてGPGPUアプリケーションソフトウェアの実装を容易にするための仕組みとしてHeterogeneous System Architecture (HSA) を提唱・推進している。
- ^ I-10-8. 並列処理プログラミングの基本、並列化処理 | 日本OSS推進フォーラム
- ^ a b c d e f Wilson, Gregory V. (1994年). “The History of the Development of Parallel Computing”. 2008年1月8日閲覧。
- ^ a b Blaise Barney. “Introduction to Parallel Computing”. Lawrence Livermore National Laboratory. 2007年11月9日閲覧。
- ^ John L. Hennessy and David A. Patterson. Computer Architecture: A Quantitative Approach. 3rd edition, 2002. Morgan Kaufmann, ISBN 1558607242. Page 43.
- ^ J. M. Rabaey. Digital Integrated Circuits. Prentice Hall, 1996.
- ^ Laurie J. Flynn. Intel Halts Development of 2 New Microprocessors. New York Times, 2004年5月8日
- ^ G. Amdahl. The validity of the single processor approach to achieving large-scale computing capabilities. In Proceedings of AFIPS Spring Joint Computer Conference, pages 483–485, Atlantic City, N.J., April 1967. AFIPS Press.
- ^ Reevaluating Amdahl's Law Archived 2007年9月27日, at the Wayback Machine. Communications of the ACM 31(5), 1988. pp. 532-533
- ^ A. J. Bernstein, "Program Analysis for Parallel Processing,' IEEE Trans. on Electronic Computers, EC-15, Oct 66, 757-762.
- ^ K. Hwang and F. A. Briggs. Computer architecture and parallel processing. McGraw-Hill, 1984.
- ^ Leslie Lamport. "How to Make a Multiprocessor Computer That Correctly Executes Multiprocess Programs", IEEE Transactions on Computers, C-28,9 (September 1979), 690–691.
- ^ Patterson and Hennessy, pg 748
- ^ David E. Culler, Jaswinder Pal Singh, Anoop Gupta. Parallel Computer Architecture - A Hardware/Software Approach. Morgan Kaufmann Publishers, 1999. ISBN 1558603433, pg 15
- ^ Culler et al, pg 15
- ^ Yale Patt. "The Microprocessor Ten Years From Now: What Are The Challenges, How Do We Meet Them? Archived 2008年4月14日, at the Wayback Machine. (wmv). カーネギーメロン大学での講義(2004年4月)、2007年11月7日閲覧
- ^ a b Culler et al, pg 124
- ^ a b Culler et al, pg 125
- ^ a b Patterson and Hennessy, pg 713
- ^ a b Hennessy and Patterson, pg 549
- ^ Patterson and Hennessy, pg 714
- ^ What is clustering? Webopedia computer dictionary. 2007年11月7日閲覧
- ^ Beowulf definition. PC Magazine. 2007年11月7日閲覧
- ^ Architecture share for 06/2007 Archived 2007年11月14日, at the Wayback Machine.. TOP500 Supercomputing Sites. ここでは、74.60%のマシンがクラスターとされている。2007年11月7日閲覧
- ^ Hennessy and Patterson, pg 537
- ^ MPP Definition. PC Magazine. 2007年11月7日閲覧
- ^ SIGGRAPH 2005 - GPUをCPU的に活用するGPGPUの可能性 マイコミジャーナル、2005年9月6日。2008年4月5日閲覧
- ^ Oleg Maslennikov (2002). Systematic Generation of Executing Programs for Processor Elements in Parallel ASIC or FPGA-Based Systems and Their Transformation into VHDL-Descriptions of Processor Element Control Units. Lecture Notes in Computer Science, 2328/2002:272.
- ^ Y. Shimokawa, Y. Fuwa, N. Aramaki. A parallel ASIC VLSI neurocomputer for a large number of neurons and billion connections per second speed. IEEE International Joint Conference on Neural Networks, 1991年11月18日-11月21日. 3: 2162–2167.
- ^ K.P. Acken, M.J. Irwin, R.M. Owens. A Parallel ASIC Architecture for Efficient Fractal Image Coding. The Journal of VLSI Signal Processing, July 1998, 19(2):97–113(17)
- ^ Andrew B. Kahng. "Scoping the Problem of DFM in the Semiconductor Industry Archived 2008年1月31日, at the Wayback Machine.." University of California, San Diego. 2004年6月21日
- ^ a b Patterson and Hennessy, pg 751
- ^ PGI アクセラレータにおけるマルチ GPU の使用
- ^ L.F. Menabrea, Sketch of the Analytic Engine Invented by Charles Babbage. Bibliothèque Universelle de Genève, 1842. 2007年11月7日閲覧
- ^ a b c Patterson and Hennessy, pg 753
- ^ Anthes, Gary (2001年11月19日). “The Power of Parallelism”. Computerworld. 2008年1月31日時点のオリジナルよりアーカイブ。2008年1月8日閲覧。
- ^ Patterson and Hennessy, pg 749
- ^ Patterson and Hennessy, pgs 749–750: 「いくつかの有益な技術を生み出したが、ILLIAC IV はコンピュータとしては失敗であった。当初計画した規模の4分の1しか構築できなかったにもかかわらず、1966年に800万ドルと見積もられていた費用は1972年には3100万ドルにまで膨れ上がった。(中略)おそらく最も悪名高いスーパーコンピュータであろう。プロジェクトは1965年に開始され、実際のアプリケーションが実行可能になったのは1976年だった」
- 並列計算のページへのリンク