-
06-07-2019 - |
質問
「並列ソフトウェア」の意味は何ですか? 「並列ソフトウェア」の違いは何ですか?および「通常のソフトウェア」?
その長所と短所は何ですか?
「並列ソフトウェア」を作成しますか?特定のハードウェアまたはプログラミング言語が必要ですか?
解決
http://en.wikipedia.org/wiki/Thread_(computer_science)
コンピューターサイエンスでは、 のフォークからの実行結果 2つ以上にコンピュータプログラム 同時実行タスク。の スレッドの実装 プロセスは動作中のものとは異なります システムを別のものに、しかしほとんどの場合、 スレッドは内部に含まれています プロセス。複数のスレッドが存在する可能性があります 同じプロセス内で共有 メモリなどのリソース、 異なるプロセスはこれらを共有しません リソース。
ほとんどの最新のプログラミング言語は、何らかの方法でマルチスレッドをサポートしています(最新バージョンのJavascriptも)。 :-)
利点と欠点はタスクに依存します。多くの処理が必要な場合は、マルチスレッド化により、各CPUが同時に独立して処理できる小さな作業単位に分割できます。ただし、一般的にマルチスレッドコードは、シングルスレッドコードよりも記述および保守が複雑になります。
プロセッサが1つしかないマシンでも、マルチスレッドコードを記述/実行できます。タスクを実行するプロセッサは1つだけですが、オペレーティングシステムは、コンテキストを迅速に切り替え、一度に各スレッドに対していくつかの命令を実行することにより、タスクが同時に発生するようにします。
並列タスクを実行するために精通している特殊なハードウェアには、ほとんどの新しいコンピューターに搭載されているGPUがあります。このビデオでは、MythbustersがシングルスレッドCPUでの描画とマルチスレッドGPUでの描画の違いを示しています。
http://www.youtube.com/watch?v=XtGf0HaW7x4&feature=player_embedded
他のヒント
「並列ソフトウェア」は指定されたハードウェアまたはプログラミング言語が必要ですか?
はい、はい。
最初の方法は簡単です。最新のCPU(m6800よりも新しいもの)には、一度に複数の処理を実行できるハードウェア機能がありますが、両方を同時に実行する必要はありません。たとえば、タイマー割り込みがオフになると、CPUは実行中の処理を保存してから、別の処理を開始できます。これらのタスクは同時に実行されます。
それがなくても、何らかの接続(Nullモデムアダプターを介した単純なシリアル接続など)を備えた2台のマシンを取得でき、両方が同じタスクで並行して動作できます。
最新の(最新だけでなく)CPUには並列コンピューティングリソースが組み込まれています。これらのマルチコアCPUは実際には、コアごとに1つのタスクで、同時に複数のタスクを処理できます。これらのタスクが協力するほうが少し効率的です。
2つ目は、並列対応言語などの特別なソフトウェアツールを必要とするものですが、ある意味では並列コンピューティングの最も難しい部分です。あなたがキッチンで唯一の人なら、すべての料理が調理されるまで、最初から最後まで次々と各レシピに従うことにより、食事を調理するのは非常に簡単です。コックを追加して速度を上げたい場合は、お互いのつま先を踏まないようにもう少し注意する必要があります。
これを処理する最も簡単な方法は、いくつかのツールを提供するスレッド化ライブラリを使用して、複数のタスクが互いに干渉しないように調整することです。これはプログラムに並列フラグを立てるほど簡単ではなく、システムが残りを処理します。むしろ、干渉する可能性があるすべての場所で他のすべてのタスクと通信するために各タスクを記述する必要があります。
並列ソフトウェアは、コンピューター上の複数のコア/ CPU、または複数のコンピューターでネイティブに利用できます。例には、グラフィックレンダリングソフトウェアや回路設計ソフトウェアが含まれます。
マルチプロセッサ対応のソフトウェア以外の不利な点についてはあまり確信が持てませんが、CPUを独占する傾向があります。