質問: マルチコアcpuをシングル化 表題の通り、マルチコアcpuを仮想的にシングルコアに統合して扱える様にするソフトウェアを探しています。 有料ソフトでもご存知であれば情報を教えてください。 求める要件 1.統合した単一コアは、cpu本来の単一コア性能の1.5倍以上であること →例えば2.6ghz*4のcpuから2コアを統合した場合は、4ghz以上の性能を持つ単一コアになる。 2.統合した単一コアに向ける処理の順序が狂わないこと。 →例えばabcdという命令を順番に発行したとして、その結果がacbdの様にならないこと。 理屈的に難しい事は知っておりますが、もし存在していれば教えてください。
回答: バイナリしか無いのでしたら皆さんが書かれているように、多分存在しないと思います。 実行前にバイナリを並列化できるように自動的に書き直してということでしたら、原理的にはできそうに思いますが、実用的かどうかは疑問があります。 cやfortranのソースコードがあれば、多くの市販コンパイラに備わっている自動並列化機能をつかえば、そこそこの速さにはなってくれます。また、openmp対応のライブラリに変えれば速くはなってくれます。これらの機能には、私も結構お世話になっています。ループを多用してる数値計算などのプログラムではプログラムを書き換えることなくそこそこの効果があります。 2についてですが、 どのレベルで順番を入れ替えないというこということでしょうか。 仮にマシン語レベルだとしますと、cpuが読み込むのはその通りですが実行は読み込んだ通りにやっているとは限りません。基本的には正しい結果が得られる範囲で、速度が速くなるようにハードウエアで実行順を入れ替えています。 コンパイラでも同じように命令の入れ替えをおこなうことがよく有ります。いずれにしても、内部的に入れ替えているだけで、外から見える入出力などは入れ替えることはありません。