• ベストアンサー

並列化について

計算処理において、並列に出来ることと出来ないことが あるとわかったのですが、具体的にはどういったことでしょうか? 例えば、重ねあわせが可能なら、並列化が可能といったような感じでしょうか? ご面倒かと思いますが詳しく教えてください。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • trytobe
  • ベストアンサー率36% (3457/9591)
回答No.1

「何か計算した結果を使わないと、次の計算ができない」という場合には、並列にできません。 でも、うまく式を変形すれば、その計算待ちの回数(段数)を減らして、同時並行で計算を分担させることができます。 人間が作業するときと同じで、分担して各部品をつくっておき、最後に持ち寄って組み立てれば完成できることがあるのです。 例えば、1+2+3+4+5+6+7+8= を計算するときに、一つずつ足していくと、 (((((((1+2)+3)+4)+5)+6)+7)+8)= と7段階の結果待ちになります。一方で、 (((1+2)+(3+4))+((5+6)+(7+8)))= と最初にペアを作って分担させれば、3段階で済みます。(そのかわりに最初の1段階目は計算を4系列に並列できなければなりません) なお、上記は掛け算という回路を使わない前提で、足し算という同じ機能しかない場合、いくつか計算機を同時に稼動させると時間短縮ができるか、という例です。1機しかなければ、上のように順番に計算することになり、4機あれば下のように枝分かれするように分担させられるのです。 このように、計算方法=アルゴリズムを見直すことで、並列化=同時計算・分散コンピューティングができる可能性が生まれるわけです。

関連するQ&A

  • PC(並列化)の処理能力について

    現在、linux環境下で並列計算機を用いて、電子状態計算等の並列処理を行っています。 処理速度、処理能力についてですが、 計算ホストを1台から2台に増やすと、倍の処理能力を持つようになりました。 しかし2から3、3から4台にしていくと、今度は比例的にではなく、 ある処理速度に収束するような結果となりました。 これは、何が原因と考えられるのでしょうか? もしくは計算規模が小さいために、このような結果となるのでしょうか? 例えば、計算する空間を増大すると比例的に処理能力が 向上するのでしょうか? ご面倒かと思いますが、回答お願いします。

  • 並列処理と逐次処理

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

  • 個人PCで並列計算ができるか?速くなるか?

    並列計算を個人のPCで行って計算速度が上昇するか、また容易に並列計算ができるかについて伺いたいです。特に知りたいことは (1)プロセッサによらず並列計算をすると速くなるものか?どのプロセッサが速くなりやすいとかありますか? (2)初心者でもとっつきやすい並列計算ができるソフト、ライブラリは何か?(いくつか候補をあげてそれぞれの利点を説明して下さると有り難いです) (3)計算がどれくらい速くなるか? 以下状況と質問内容を具体的に説明します。 現在私の利用可能なプロセッサがCoreDuoのノートPC1つ、Core2Duoのデスクトップが1つです。(後者は学校にあるものなので、勝手にノートとつないで両方で計算させることができるかは不明ですが。。。)(1)についてはこのプロセッサではどうかを特に教えて頂きたいです。 今現在数値的にやらなくていはいけない処理は、行列の積、逆行列、および固有値を求めることです。行列が複素数であり、疎でもないですし、かなり行列のサイズが大きい(100×100以上にはなる)ので困ってます。 将来的にはモンテカルロ法にもお世話になるので、「行列演算」「モンテカルロ」について並列計算でどれくらい速くなるか(3)で教えて下さると助かります。 何卒よろしくお願い致します。

  • 並列処理?

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

  • 直列・並列処理の具体例

    ・ペンを持ち0と1を書きます。  普通は0-1と順に書きます。これが直列処理で  0-1と(判子のように)同時にかけるのが並列処理です。   ・人は、車を運転しながら助手席の人と話をすることができます。  車を運転するという処理と、助手席の人と話をするという処理を同時に行っていますから  並列処理です。 ・先生の話している言葉を聞きながら、ノートに書き込む。  先生が話していることを聞くという処理と、ノートに書き込むという処理を同時に行っていますから  並列処理です。 上記の3点の具体例は正しいですか。 また、日常生活の具体例も教えてください。

  • 並列処理

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

  • 並列処理プログラム

    並列処理について。 画像imageの値が0より大きい場合に、managerを実行しますが、managerの計算時間が長いです。 そこで、4つのコアでpthreadにより、並列処理をさせたいんですが、 どのようにプログラムを書けばいいかすみませんが教えてください。 あるボクセルを計算中に、次のボクセルを計算するようなプログラム。。。 for (int z=0; z<32; z++){  for (int y=0; y<32; y++){   for (int x=0; x<32; x++){    if(image(x,y,z) > 0){     total += manager(x,y,z);    }   }  } }

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

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

  • Javaで並列計算

    並列計算クラスタの購入を勧められられています。 ところで、Javaで並列計算をやる方法ってあるのでしょうか?簡単でしょうか? 今のところ、シリアルの計算を複数流す、くらいしか使う方法が思いつかないのですが、並列計算がJavaで簡単に出来るのなら、ソースコードを作り直そうと思っています。 経験者の方か、知識がある方ががいらっしゃったらうれしいです。

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

    並列処理についてですが、 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初心者なもので、あまり理解することができません。 ここからが質問です。 ・「スレッド切り替え」とは一体どういったものなんでしょうか ・いただいた回答で、「ひとつのプロセスですべてのコアを占有するスレッド」とはどういうことでしょうか このことについて教えていただきたいです。スレッドとは、など部分部分での単語は調べてみましたが、 どういったように動いているのかが分かっていないせいか、上記質問のようなことが分かりません。 回答をせっかくいただいたのに自分の語彙力のせいで度重なる質問をさせていただくことを申し訳なく思いますが、みなさん回答の方よろしくおねがいします。