ロゴ
ユニオンペディア
コミュニケーション
Google Play で手に入れよう
新しい! あなたのAndroid™デバイスでユニオンペディアをダウンロードしてください!
インストール
ブラウザよりも高速アクセス!
 

並列化

索引 並列化

並列化(へいれつか)は、コンピュータにおいて、同時に複数の演算処理を実行すること(並列計算)によって処理のスループットを上げるプログラミング手法である。.

33 関係: 実装並列アルゴリズム並列計算並行論理プログラミングライブラリプログラミング (コンピュータ)プログラミング言語プログラム (コンピュータ)アルゴリズムアプリケーションソフトウェアオブジェクトファイルグリッド・コンピューティングコンパイラコンピュータスループットスレッド (コンピュータ)スーパーコンピュータスーパースカラーストリーム・プロセッシングソースコードサーバロードバランスCPU算法結果整合性Intel Threading Building BlocksLindaLock-freeとWait-freeアルゴリズムMessage Passing InterfaceOpenMPParallel Virtual MachineVLIWX10 (プログラミング言語)排他制御

実装

実装(じっそう、implementation)とは、何らかの機能(や仕様)を実現するための(具体的な)装備や方法のこと。.

新しい!!: 並列化と実装 · 続きを見る »

並列アルゴリズム

並列アルゴリズム(英: parallel algorithm)とは、アルゴリズムの各部分を異なる複数の処理装置(プロセッサ)上で実行し、最終的にそれらの結果を集めることで答えを得るアルゴリズム。.

新しい!!: 並列化と並列アルゴリズム · 続きを見る »

並列計算

並列計算(へいれつけいさん、parallel computing)は、コンピュータにおいて複数のプロセッサで1つのタスクを動作させること。並列コンピューティングや並列処理とも呼ばれる。問題を解く過程はより小さなタスクに分割できることが多い、という事実を利用して処理効率の向上を図る手法である。また、このために設計されたコンピュータを並列コンピュータという。ディープ・ブルーなどが有名。 関連する概念に並行計算(へいこうけいさん)があるが、並行計算は一つのタスクの計算を並列化することにとどまらず、複数の相互作用しうるタスクをスレッドなどをもちいて複数の計算資源にスケジューリングするといった、より汎用性の高い処理をさす。 特に、並列計算専用に設計されたコンピュータを用いずに、複数のパーソナルコンピュータやサーバ、スーパーコンピュータを接続することで並列計算を実現するものをコンピュータ・クラスターと呼ぶ。このクラスターをインターネットなどの広域ネットワーク上に分散させるものも、広義には並列計算に属すが、分散コンピューティングあるいはグリッド・コンピューティングと呼び、並列計算とは区別することが多い。.

新しい!!: 並列化と並列計算 · 続きを見る »

並行論理プログラミング

並行論理プログラミング(へいこうろんり-、Concurrent Logic Programming)は、論理プログラミングにおける並列性及び論理プログラミングによる並行処理の記述の研究から生まれた、並行プログラミングのためのパラダイムである。論理プログラミングでは述語論理式をゴール(Goal)の書き換え規則と見なし、ゴールの書き換えによって処理を行う。それに対し、並行論理プログラミングでは各ゴールをプロセスと見なして並行に書き換えを行い、ゴール間で共有する論理変数を通信チャネルとして情報交換や同期を行う。.

新しい!!: 並列化と並行論理プログラミング · 続きを見る »

ライブラリ

ライブラリ()は、汎用性の高い複数のプログラムを再利用可能な形でひとまとまりにしたものである。ライブラリと呼ぶ時は、それ単体ではプログラムとして作動させることはできない実行ファイルではない場合がある。ライブラリは他のプログラムに何らかの機能を提供するコードの集まりと言うことができる。ソースコードの場合と、オブジェクトコード、あるいは専用の形式を用いる場合とがある。たとえば、UNIXのライブラリはオブジェクトコードをarと呼ばれるアーカイバでひとまとめにして利用する。図書館()と同様にプログラム(算譜)の書庫であるので、索引方法が重要である。 また、ソフトウェア以外の再利用可能なものの集合について使われることもある。.

新しい!!: 並列化とライブラリ · 続きを見る »

プログラミング (コンピュータ)

ンピュータのプログラミング(programming)とは、コンピュータプログラムを作成することにより、人間の意図した処理を行うようにコンピュータに指示を与える行為である。.

新しい!!: 並列化とプログラミング (コンピュータ) · 続きを見る »

プログラミング言語

プログラミング言語(プログラミングげんご、programming language)とは、コンピュータプログラムを記述するための形式言語である。なお、コンピュータ以外にもプログラマブルなものがあることを考慮するならば、この記事で扱っている内容については、「コンピュータプログラミング言語」(computer programming language)に限定されている。.

新しい!!: 並列化とプログラミング言語 · 続きを見る »

プログラム (コンピュータ)

ンピュータプログラム(英:computer programs)とは、コンピュータに対する命令(処理)を記述したものである。コンピュータが機能を実現するためには、CPUで実行するプログラムの命令が必要である。 コンピュータが、高度な処理を人間の手によらず遂行できているように見える場合でも、コンピュータは設計者の意図であるプログラムに従い、忠実に処理を行っている。実際には、外部からの割り込み、ノイズなどにより、設計者の意図しない動作をすることがある。また設計者が、外部からの割り込みの種類を網羅的に確認していない場合もある。.

新しい!!: 並列化とプログラム (コンピュータ) · 続きを見る »

アルゴリズム

フローチャートはアルゴリズムの視覚的表現としてよく使われる。これはランプがつかない時のフローチャート。 アルゴリズム(algorithm )とは、数学、コンピューティング、言語学、あるいは関連する分野において、問題を解くための手順を定式化した形で表現したものを言う。算法と訳されることもある。 「問題」はその「解」を持っているが、アルゴリズムは正しくその解を得るための具体的手順および根拠を与える。さらに多くの場合において効率性が重要となる。 コンピュータにアルゴリズムをソフトウェア的に実装するものがコンピュータプログラムである。人間より速く大量に計算ができるのがコンピュータの強みであるが、その計算が正しく効率的であるためには、正しく効率的なアルゴリズムに基づいたものでなければならない。.

新しい!!: 並列化とアルゴリズム · 続きを見る »

アプリケーションソフトウェア

アプリケーションスイートである。 アプリケーションソフトウェア(application software, 応用ソフトウェア)は、アプリケーション(応用)プログラムともいい、ワープロや表計算などといった、コンピュータを「応用」する目的に応じた、コンピュータ・プログラムである。なお、それに対してシステムプログラムは、アプリケーションプログラムに対して処理実行のための計算機資源を抽象化して提供する、などのインフラとしての役割のプログラムであり、ユーザーが要求する情報処理を直接実行するものではなく、ユーザーが普段は意識することはない裏方的な存在がシステムプログラムである。.

新しい!!: 並列化とアプリケーションソフトウェア · 続きを見る »

オブジェクトファイル

ブジェクトファイル またはオブジェクトコード とは、コンパイラがソースコードを処理した結果生成される、コード生成の結果であるバイナリコードを含む中間的なデータ表現のファイルである。中身は、機械語バイナリとそれに付随するシンボルテーブルやリロケーションテーブルといった付加情報であり、さらにデバッグ支援情報や近年はリンク時最適化等のための高度な情報が含まれる場合もある。オブジェクトファイル群をリンクすることによって最終的な実行ファイルやライブラリが作成される。オブジェクトファイルのほとんどは機械語である(コンピュータのCPUが直接実行できるコード)。オブジェクトファイルフォーマットはコンパイラやアセンブラが生成するオブジェクトファイルのファイルフォーマットである。.

新しい!!: 並列化とオブジェクトファイル · 続きを見る »

グリッド・コンピューティング

リッド・コンピューティングは、インターネットなどの広域のネットワーク上にある計算資源(CPUなどの計算能力や、ハードディスクなどの情報格納領域)を結びつけ、ひとつの複合したコンピュータシステムとしてサービスを提供する仕組みである。提供されるサービスは主に計算処理とデータの保存・利用に大別される。一箇所の計算センターや、一組のスーパーコンピュータでは足りないほどの大規模な計算処理や大量のデータを保存・利用するための手段として開発されている。.

新しい!!: 並列化とグリッド・コンピューティング · 続きを見る »

コンパイラ

ンパイラ(英:compiler)とは、コンピュータ・プログラミング言語の処理系(言語処理系)の一種で、高水準言語によるソースコードから、機械語に(あるいは、元のプログラムよりも低い水準のコードに)変換するプログラムである。.

新しい!!: 並列化とコンパイラ · 続きを見る »

コンピュータ

ンピュータ(Computer)とは、自動計算機、とくに計算開始後は人手を介さずに計算終了まで動作する電子式汎用計算機。実際の対象は文字の置き換えなど数値計算に限らず、情報処理やコンピューティングと呼ばれる幅広い分野で応用される。現代ではプログラム内蔵方式のディジタルコンピュータを指す場合が多く、特にパーソナルコンピュータやメインフレーム、スーパーコンピュータなどを含めた汎用的なシステムを指すことが多いが、ディジタルコンピュータは特定の機能を実現するために機械や装置等に組み込まれる組み込みシステムとしても広く用いられる。電卓・機械式計算機・アナログ計算機については各項を参照。.

新しい!!: 並列化とコンピュータ · 続きを見る »

スループット

ループット()は、一般に単位時間当たりの処理能力のこと。特に.

新しい!!: 並列化とスループット · 続きを見る »

スレッド (コンピュータ)

レッド(thread)とは、CPU利用の単位。プロセスに比べて、プログラムを実行するときのコンテキスト情報が最小で済むので切り替えが速くなる。スレッドは、thread of execution(実行の脈絡)という言葉を省略したものである。 プログラミングの観点からみると、アプリケーションの処理の「実行の脈絡」は1つでないことが多い。これをシングルスレッドで実現しようとするとシグナルやタイマーを駆使してコーディングすることになる。また、複数のプロセスに分割してプロセス間通信で協調動作させるという方法もある。しかし、いずれの場合もそれらの機能を使うための余分な、本来のアルゴリズムと関係ないコーディングが必要となる。スレッドを使用したプログラミングは本来のアルゴリズムに集中しやすくなり、プログラムの構造が改善されるという効果がある。.

新しい!!: 並列化とスレッド (コンピュータ) · 続きを見る »

スーパーコンピュータ

ーパーコンピュータ(supercomputer)は、科学技術計算を主要目的とする大規模コンピュータである。日本国内での略称はスパコン。また、計算科学に必要となる数理からコンピュータシステム技術までの総合的な学問分野を高性能計算と呼ぶ。スーパーコンピュータでは計算性能を最重要視し、最先端の技術が積極的に採用されて作られる。.

新しい!!: 並列化とスーパーコンピュータ · 続きを見る »

スーパースカラー

パイプライン概念図 Alpha プロセッサを搭載 スーパースカラー(superscalar,スーパースケーラ)とは、プロセッサのマイクロアーキテクチャにおける用語で、複数の命令を同時にフェッチし、複数の同種のあるいは異種の実行ユニットを並列に動作させ、プログラムの持つ命令レベルの並列性を利用して性能の向上を図るアーキテクチャである。.

新しい!!: 並列化とスーパースカラー · 続きを見る »

ストリーム・プロセッシング

トリーム・プロセッシング (stream processing) は、並列処理を実現するプログラミング手法の一つである。ストリームプロセッシングを用いることにより、コンピュータープログラマーはチップ上の多数の'コア'(あるいは、演算の単位)や、それぞれに接続されたバスやメモリ、I/Oなどを別々に管理せずにアクセスできる能力の恩恵を受けることができる。.

新しい!!: 並列化とストリーム・プロセッシング · 続きを見る »

ソースコード

青で示されているのが有効なコードである。 ソースコード(source code)とは、コンピュータプログラミング言語で書かれた、コンピュータプログラムである文字列(テキストないしテキストファイル)のことである。.

新しい!!: 並列化とソースコード · 続きを見る »

サーバロードバランス

ーバロードバランシング(Server Load balancing)は、クライアント/サーバネットワークにおいて、クライアントとサーバの間にロードバランサー(負荷分散装置)を設置し、通信アプリケーションの(TCP/UDP)ポート番号をもとに、2台以上のサーバが分散処理を行う、コンピュータシステム。 通常は、サーバはサーバ技術者、ネットワークはネットワーク技術者が相互に依存することなく構築が行われるが、サーバロードバランスにおいては、サーバ構築とネットワーク構築の高度なインテグレーションが必要となる。 サーバのスケーラビリティーが簡単に拡張でき、保守運用コストも圧縮されるので、多くのWebアプリケーションに適している。 負荷分散(英: Load balancing)とは、コンピュータネットワークにおける技法の一種であり、作業負荷を多数のコンピュータ/プロセス/その他のリソースに分散し、リソースの利用効率を高め性能を向上させる手法。一般にロードバランサと呼ばれるシステムを利用する。.

新しい!!: 並列化とサーバロードバランス · 続きを見る »

CPU

Intel Core 2 Duo E6600) CPU(シーピーユー、Central Processing Unit)、中央処理装置(ちゅうおうしょりそうち)は、コンピュータにおける中心的な処理装置(プロセッサ)。 「CPU」と「プロセッサ」と「マイクロプロセッサ」という語は、ほぼ同義語として使われる場合も多いが、厳密には以下に述べるように若干の範囲の違いがある。大規模集積回路(LSI)の発達により1個ないしごく少数のチップに全機能が集積されたマイクロプロセッサが誕生する以前は、多数の(小規模)集積回路(さらにそれ以前はディスクリート)から成る巨大な電子回路がプロセッサであり、CPUであった。大型汎用機を指す「メインフレーム」という語は、もともとは多数の架(フレーム)から成る大型汎用機システムにおいてCPUの収まる主要部(メイン)、という所から来ている。また、パーソナルコンピュータ全体をシステムとして見た時、例えば電源部が制御用に内蔵するワンチップマイコン(マイクロコントローラ)は、システム全体として見た場合には「CPU」ではない。.

新しい!!: 並列化とCPU · 続きを見る »

算法

n 項算法(エヌこうさんぽう)とは、広義には、集合 A の直積集合 An の部分集合 D から A への写像 f のことをいい、D をこの算法の定義域という。n は任意の順序数でよい。 これを(仮に)f の項数とよぶ。 An は i < n をみたす順序数 i を添数とする A の元の族 (ai)i<n すべてからなる集合を表す。 集合 A とそこにおける算法の族 R との組み (A, R) を代数系という。.

新しい!!: 並列化と算法 · 続きを見る »

結果整合性

結果整合性(Eventual Consistency)は、ACID特性と同様にデータベースにおける一貫性モデルであるBASE特性における最も重要な考え方の一つである。結果整合性(Eventual Consistency)は、既存のRDBMSにおける悲観的ロックのような、厳密な一貫性を要求する考え方とは全く相反する考え方である。例えば、インターネットのDNS、NTPプロトコル、GPSなどのように、即座にデータが反映されることを前提としていないが、問題なく成立している事例は数多く存在する。 このように、結果整合性(Eventual Consistency)は、結果的に一貫性が保たれればよいという考え方に基づいている。NoSQLに代表されるデータストアでは、この考え方を取り入れることで、容易にスケールアウトを実現できるようにしている。結果整合性(Eventual Consistency)の実現には、P2Pのアーキテクチャーを導入した、様々な分散相互排他アルゴリズムが採用されている。.

新しい!!: 並列化と結果整合性 · 続きを見る »

Intel Threading Building Blocks

インテル スレッディング・ビルディング・ブロック(Intel® Threading Building Blocks, TBB)は、インテルが公開しているマルチスレッド対応のC++テンプレートライブラリである。マルチCPU・マルチコアCPUなどを搭載したコンピュータ上でアプリケーションを効率よく動作させることができる。 商用版とオープンソース版(Apache License)があり、オープンソース版は無償でダウンロードが可能である。 様々なプラットフォーム上で動作する(クロスプラットフォーム)。.

新しい!!: 並列化とIntel Threading Building Blocks · 続きを見る »

Linda

Linda は、並列プログラミング言語であり、Prolog、C言語、Javaなどの他の(逐次的)言語上に拡張として実装される。.

新しい!!: 並列化とLinda · 続きを見る »

Lock-freeとWait-freeアルゴリズム

Lock-freeとWait-freeアルゴリズムとは、共有データにロックをかけてアクセスを防ぐアルゴリズムとは違い、複数のスレッドが同時並行的に、ある対象データを壊すことなしに読み書きすることを可能にするアルゴリズムである。Lock-free とはスレッドがロックしないことを意味しており、全てのステップにおいてシステムが必ず進行する。これはLock-free ではミューテックスやセマフォといった、排他制御のためのプリミティブを使ってはならないことを意味する。なぜならロックを持っているスレッドの実行が中断した場合、全体の進行を阻止しうるからである。Wait-free とは、他のスレッドの動作に関係なく、スレッドがいかなる操作も有限のステップで操作を完了させられることを指す。あるアルゴリズムがLock-freeであるがWait-freeでないことはありうる。Wait-free なアルゴリズムは Lock-free である。.

新しい!!: 並列化とLock-freeとWait-freeアルゴリズム · 続きを見る »

Message Passing Interface

Message Passing Interface(メッセージ パッシング インターフェース、MPI)とは、 並列コンピューティング利用するための標準化された規格である。実装自体を指すこともある。 複数のCPUが情報をバイト列からなるメッセージとして送受信することで協調動作を行えるようにする。自由に使用できる実装としてはMPICHが有名である。他にも商用ベンダなどによる独自の実装が存在する。 ライブラリレベルでの並列化であるため、言語を問わず利用でき、プログラマが細密なチューニングを行えるというメリットがある一方、利用にあたっては明示的に手続きを記述する必要があり、ロックの対処などもプログラマ側が大きな責任をもたなければならない。 業界団体や研究者らのメンバからなる MPI Forum によって規格が明確に定義されているため、ある環境で作成したプログラムが他の環境でも動作することが期待できる。.

新しい!!: 並列化とMessage Passing Interface · 続きを見る »

OpenMP

OpenMPは、並列コンピューティング環境を利用するために用いられる標準化された基盤。OpenMPは主に共有メモリ型並列計算機で用いられる。 MPIでは明示的にメッセージの交換をプログラム中に記述しなければならないが、OpenMPはOpenMPが使用できない環境では無視されるディレクティブを挿入することによって並列化を行う。このため並列環境と非並列環境でほぼ同一のソースコードを使用できるという利点がある。 また、プラットフォーム固有のスレッドAPIを使わず、コンパイラによって暗黙的に生成されたスレッドプールを利用してタスクを振り分けることになるため、並列プログラムを簡潔に記述できるだけでなく、複数の環境に移植しやすくなる。 MPIとの比較では、OpenMPは異なるスレッドが同一のデータを同じアドレスで参照できるのに対して、MPIでは明示的にメッセージ交換を行わなければならない。そのためSMP環境においては大きなデータの移動を行なわずにすむので高い効率が期待できる。ただし並列化の効率はコンパイラに依存するのでチューニングによる性能改善がMPIほど高くならないという問題がある。また、。 現在FORTRANとC/C++について標準化が行われている。.

新しい!!: 並列化とOpenMP · 続きを見る »

Parallel Virtual Machine

Parallel Virtual Machine(パラレル バーチャル マシン、英訳:仮想並列計算機、略称:PVM)は並列計算を行うためのソフトウェアである。.

新しい!!: 並列化とParallel Virtual Machine · 続きを見る »

VLIW

VLIWとはVery Long Instruction Word(超長命令語)の略で、プロセッサの命令セットアーキテクチャ(ISA)の一種類である。 VLIWプロセッサは、その実行ユニットが並列的に一度に実行できる、ロード・ストア・演算・分岐などの命令の複数個から成る、かなり長い命令語によってー単位の命令が構成されており、それをそのまま実行ユニットに投入する(各命令をatom、まとまったものをmoleculeなどと呼ぶこともある)。実行に複数クロック掛かるような命令もあるかもしれないが、そういったものも含めて、タイミング的に全て差し支えなく実行できるようにVLIWの機械語プログラムは書かれていなければならず、依存や順序を解決するような機構をハードウェアでは持たない。一般に、そのようなコードを生成するのはコンパイラの仕事となる。また、どうしても埋められないスロットはNOP(No Operation・何もしない)で埋め、命令語の長さは常に固定長となる。一般にVLIWプロセッサ自身はRISCのコンセプトをより押し進めたような設計であるが、以上のような「複数の機能が詰め込まれた長い固定長の命令」はマイクロプログラム方式における、いわゆる水平型マイクロプログラムを直接外に出したようなもの、といったような感じに近い。なお、「超長命令」の由来は命令語が最低でも(たとえば)128ビットといったように長いものであることからである。 スーパースカラやアウトオブオーダーなどと異なり、命令列はフェッチされたそのまま実行ユニットに投入され、投入された後も並列性の分析などといった必要がない為、ハードウェアコストの低下や動作の高速化が期待される。反面、VLIWの性能を引き出すにはコンパイラが重要である。その意味でRISCよりもさらにソフトウェアに依存する側に寄ったアーキテクチャといえる。 命令セットアーキテクチャではなく、マイクロアーキテクチャを指してVLIWの語が使われることもある。 VLIWの採用例として、サーバ向けとして商品化されたマイクロプロセッサとしては、インテルがHPと開発したIA-64(Itanium)のEPICアーキテクチャがあるが(EPICは修正VLIWアーキテクチャである、などとされることもある)、IA-64については(当初もくろんだようにx86の代替としては)普及はしていない。後述するが、組込み用プロセッサではVLIW風の設計の、複数メーカの複数の製品ファミリが継続している。.

新しい!!: 並列化とVLIW · 続きを見る »

X10 (プログラミング言語)

X10 は、アメリカ合衆国・DARPAのHigh Productivity Computing Systemsにより設立された PERCS スーパーコンピュータ・プロジェクトの一部として、IBMがトーマス・J・ワトソン研究所で開発中の並列処理用のプログラミング言語である。.

新しい!!: 並列化とX10 (プログラミング言語) · 続きを見る »

排他制御

排他制御せずに ''i'' と ''i+1'' という2つのノードを同時に連結リストから外す操作を行うと、結果として ''i+1'' のノードが外れないという状態になりうる。 排他制御(はいたせいぎょ)とは、コンピュータ・プログラムの実行において、複数のプロセスが利用出来る共有資源に対し、複数のプロセスからの同時アクセスにより競合が発生する場合に、あるプロセスに資源を独占的に利用させている間は、他のプロセスが利用できないようにする事で整合性を保つ処理の事をいう。相互排除または相互排他(mutual exclusion)ともいう。最大k個のプロセスが共有資源にアクセスして良い場合を k-相互排除という。 換言すれば1つのクリティカルセクションに複数のプロセス(またはスレッド)が同時に入ることを防ぐことである。クリティカルセクションとは、プロセスが共有メモリなどの共有資源にアクセスしている期間を指す。排他制御の問題は1965年、エドガー・ダイクストラが Solution of a problem in concurrent programming control(並行プログラミング制御における問題の解法)と題した論文で扱ったのが最初であるTaubenfeld.

新しい!!: 並列化と排他制御 · 続きを見る »

ここにリダイレクトされます:

並列プログラミング

出ていきます入ってきます
ヘイ!私たちは今、Facebook上です! »