• 締切済み

並列処理?

基本的なことかもしれないんですが、コンピュータの並列処理ってなんですか? また、その並列処理っていうのは一般PCユーザ個人レベルでできるものですか?

みんなの回答

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.3

CPU内のレベルの話なら、パイプラインやスーパースケーラ http://pc1.moo.jp/kiso/cpu5.htm CPUを複数つむならマルチプロセッサ http://yougo.ascii24.com/gh/26/002688.html OSレベルならマルチタスクやマルチプロセス。 http://yougo.ascii24.com/gh/11/001116.html マシンレベルならクラスタリング http://yougo.ascii24.com/gh/32/003203.html

回答No.2

僕自身、並列処理、並行処理、分散処理、多重処理の区別がつかないのですが、一般的に並列処理と言えば複数の処理を同時に実行するものでしょう。 普通のPCだとCPU1個なので、本当の意味での並列処理はできなくて、複数の処理をOSが短時間で切り替えながら実行して見かけ上並列に動いているように見せています。ただ、CPUの内部では、メモリアクセスしながら足し算したりするパイプライン処理は普通に行なわれていますので、ある意味並列処理と言えると思います。 CPUを複数準備できれば、個人レベルでも並列処理は可能でしょう。例えば、PCを10台用意してネットワークでつないでそれぞれに分割した処理をさせることで並列処理を実現するやり方があります。クラスターソフトという名前で検索すればいろいろヒットすると思います。暗号解析やレイトレーシングなど莫大な計算時間を必要とする計算に向いています。 そいういえば、インターネットで世界中のPCをつないで白血病療薬を開発するプロジェクトもありますね。

  • nrb
  • ベストアンサー率31% (2227/7020)
回答No.1

基本的なことかもしれないんですが、コンピュータの並列処理ってなんですか? 基本は直線処理ですよ コンピュターは見た目並列処理しいるように見えるだけです 通常のPCは中央演算装置(CPU)は1個です これがデータを処理します では、32ビットCPUで8ビットデータを処理すると 24ビット遊びます たとえば、これろ8ビット×4で32ビット処理して 1回で演算しますが、ここではある意味並列処理をしいる 最後は8ビットのデータに戻るので直線処理にもどります では、マルチCPUなんか並列処理なんでしょうか よく考えは、全部のCPUを制御しているのは直線的に仕事をしいるCPUです 考え方によって言えば並列処理をしているとも言えますが 実態は直線処理で分散処理をしているが正解だと思いますけど

関連するQ&A

  • コンピューターの並列処理について質問です。

    コンピューターの並列処理について質問なのですが、 並列でつなぐと何かいいことがあるのですか? また、どうやってつなぐのかよく分からないので簡単に教えて下さい! 回答待ってます!

  • 並列処理についてですが、

    並列処理についてですが、 SCOREという並列環境を構築するソフトで、4つのPC(CPU:Quad Core)を、並列化させ、 ある逐次プログラム(C言語、ラプラス方程式を差分法で解くプログラムですがプログラム内容はあまり関係ないので、あるプログラムとさせていただきます)を並列処理させたところ、 1つのPCで、4つのプロセッサを使用し、合計4ノードで並列処理を行った場合と、・・・(1) 4つのPCで各PC1台につき1つのプロセッサずつ、合計4ノードで並列処理を行った場合では、・・・(2) 同じ4ノードであるにかかわらず、 (2)がノード数に比例的に演算性能が良くなることに対して、 (1)の場合、ノード数が増えても関数log(x)(雰囲気です)をグラフにしたような形で、演算性能がうまく良くなりません このような質問を以前したところ、 ・スレッド切り替えのオーバーヘッドが影響しているのではないか ・実行環境が違うことと、ひとつのプロセスですべてのコアを占有する thread はコアを2個使えば2倍、3個使えば3倍それぞれ速くはならない。一方、PCを組み合わせて使う場合、それは完全に独立しており、データ並列のために分割されて計算量が縮小された分、PC組み合わせ数にほぼ比例して速くなる。 という回答をいただくことができました。 なんとなくで意味は分かるのですが、何卒PC初心者なもので、あまり理解することができません。 ここからが質問です。 ・「スレッド切り替え」とは一体どういったものなんでしょうか ・いただいた回答で、「ひとつのプロセスですべてのコアを占有するスレッド」とはどういうことでしょうか このことについて教えていただきたいです。スレッドとは、など部分部分での単語は調べてみましたが、 どういったように動いているのかが分かっていないせいか、上記質問のようなことが分かりません。 回答をせっかくいただいたのに自分の語彙力のせいで度重なる質問をさせていただくことを申し訳なく思いますが、みなさん回答の方よろしくおねがいします。

  • 並列処理

    並列処理と非同期処理を活用した、マルチスレッドを前提とするまったく新しいレンダリングエンジンが搭載されている。 http://www.forest.impress.co.jp/docs/news/20140213_635041.html 並列処理 と非同期処理の 違いはなにでしょうか?

  • 並列コンピューター 生物の脳

    並列コンピューター 生物の脳 こんにちは.生物の脳は並列コンピューターであり,現在のコンピュータとは情報処理の仕方が異なる,ということを聞いたのですが, これは,生物の脳は,情報処理を行う部門というか,処理をする個所が沢山あって,同時に色々なところで情報が処理されている,ということでしょうか. (1)ということでしたら,脳の情報処理の単位とは大きさが随分ことなると 思うのですが,凄く沢山のマイコンを並べて脳のまねごとはできないのでしょうか? ところで,もう一点質問が御座います. (2)そもそも,脳の情報処理の方式が,並列,ということはなぜ分かったのですか? なぜ,並列だ言えるのでしょうか.その根拠が知りたいです. とても基本的なことだと思いますが,どうかヒントでも 頂ければとても助かります.

  • 並列化での処理速度について

    実験でプログラムを並列化してその時の処理速度を測定しました。 その際に並列化をしなかった場合も測定したのですが… 1スレッドでの処理速度と並列化無しでの処理速度で並列化無しの方が早く処理は終わりました。 2スレッド以降は並列化した方が早くなったのですが… これは何かきちんとした理由があるのでしょうか? 少し自分で調べてみた結果オーバーヘッド?だかが関係しているようにも思えたのですが… 詳しい方回答よろしくお願いします!!

  • 並列処理について

    今現在Perlの並列処理について勉強しているのですが、分からない点があるのでご教授願います。 重並列が可能となるプログラムを作りたいと思い、以下のプログラムを作成しました。countには並列数(例えば3並列にしたいならば3)が入っています。これで重並列ができたと思ったのですが、よくよく考えてみると、このプログラムだと一つ目の子プロセスが終わらなければ、二つ目、三つ目の子プロセスが始まらないということに気付きました。同時に複数のプロセスを実行させるにはどのようなプログラムにすればよいでしょうか。お願いします。 while($count--){ $pid = fork; if(!defined $pid){die "fork failed";} elsif(!$pid){ &process;#子プロセス exit; } } wait; ・・・・・・#親プロセス

  • 並列処理と逐次処理

    現在大学院の講義で並列処理(スーパーコンピューティング)に関して勉強しています。 私本来の専攻は物理化学なので専攻外の科目ではあるのですが、単位を取得するため勉強しています。 そこで1つ分からないことがあるので教えてください。 身近な計算機利用の中で、並列処理が有効なものと有効でないものってどんなものでしょうか? 具体的に教えて下さい。お願いします。

  • MPIによる並列処理

    MPICH2を使ってCプログラムの並列処理を行おうとしております。 1台のPCを使用してPC内部の4つのコアで並列処理をさせようとしております。 http://pccluster.web.fc2.com/MPI.html のページを参考にMPICH2のインストールを行い、 mpdboot ~でMPIの起動、プログラムの並列実行は行えたのですが、 ~/mpd.hostsに PCのIP:4 を書き込み、mpdboot -n 1 -f mpd.hostsで起動し、 mpiexec -n 1 xxx.cpp を実行した場合、 n=1より2、3、4の場合のほうが速くはなるのですが、2の場合が4より速くなってしまいます。 これは何かがボトルネックになっていると考えられるのでしょうか? また、mpd.hostsのファイル内で「:4」として1台のPCですが4つのコアがあると指定しているにも関わらず、実行するときに mpiexec -n 5以上の数字 xxx.cpp という指定したコア数以上での実行ができてしまいます。これは何かインストール中の設定で間違いがあるのでしょうか。(mpiexec -n 10 hostnameとした場合なぜかちゃんと10個の応答が同じPC名でかえってきます) 理解がいまいちなので、質問の文章が分かりにくいところもありますが、教えていただけないでしょうか。 よろしくお願いします。

  • Perlの並列処理

    私は今Perlの並列処理について学んでいます。3並列で子プロセスが行う処理はa1、a2、a3、・・・ak(処理にかかる時間a1<a2<a3<・・・)で、親プロセスはa1、a2、a3、・・・の結果を判定するというものです。 a1、a2、a3と順に判定していきたいと考えているのですが、どのようなプログラムを書けばよいでしょうか。なお、並列処理にはforkを利用するつもりです。 一度以下のようなプログラムを考えたのですが、これだとa1→a3→・・・→ak→親プロセス→a2→a4→・・・→a(k-1)→親プロセスとなってしまいます。よろしくお願いします。 while($count--){ #$countは並列数を入力   my $pid =fork;   &child_process;   exit; } wait; 【親プロセス】 sub child_process{   while($n<k){     $n=1;     【処理a$nを行う】     $n=$n+$count;     }   exit; }

  • シングルコアでも並列処理は意味がありますか?

    複数台のサーバや、マルチコアCPUのマシンであれば、並列処理の意味が分かるのですが、 シングルコアのマシンで並列処理することはどれほどの意味があるのでしょうか? 例えば、同様の2つの処理を2台のサーバで処理させれば、処理時間は約半分になると思いますが、1台のマシン、1つのCPUに、分割した処理をお願いしても、処理時間が速くなるように思えません。 実際はどうなるのでしょう?

専門家に質問してみよう