マルチコアの基本

マルチコアの基本 · 2024/12/26
前回、並列階層に対する概念的な説明をしましたが、今回は読者の皆様に具体的なイメージをつかんでいただくため、誤解を恐れず大胆に数値を仮定してシミュレーションをしてみることにします。結果の様子はできるだけよくある状況に合わせたつもりですが、個々の数字などはそのまま一人歩きされると困るものばかりですのでご注意ください。

マルチコアの基本 · 2024/12/26
第19回(リンク)に説明したベクトル(SIMD)演算器や、本ブログの主題であるマルチコア、最近話題になることが多いチップレットなど、世の中には様々な並列実行ハードウェアがあります。

マルチコアの基本 · 2024/12/26
今回は、ベクトル演算器やSIMD演算器の例についてあげ、関連技術としてNVIDIA社のGPGPUについても簡単に紹介します。

マルチコアの基本 · 2024/12/26
前回紹介したベクトル(SIMD)演算器に向けたコンパイル技術が自動ベクトル化です。自動ベクトル化は自動並列化(第16回(リンク)参照)と似たような概念であり、広い意味では自動ベクトル化は自動並列化の一部ですが、狭い意味では異なります。

マルチコアの基本 · 2024/12/26
今回はベクトル演算、SIMD演算の話です。ベクトル演算とSIMD演算は並列計算としては同種の高速化で、配列計算の一括処理です。マルチコアとは別の概念ですが、重要な並列技術ですのでこのブログでも取り上げたいと思います。

マルチコアの基本 · 2024/10/17
掲題についてchatGPTを用いて作成した例を紹介します。なお例において、関数呼出の箇所で関数をインライン展開することにより依存の有無が判定できる場合もありますが、ここではコンパイラはそこまでのことをしないことを前提としています。また、文中に「静的」という言葉がでてきますが、コンパイラのようにプログラムを動作させることなく解析することを静的解析といいます。

マルチコアの基本 · 2024/10/17
コンパイラはプログラムを動作させることなく解析するため、実行時にならないとわからない情報の解析には限界があります。その代表例がC言語のポインタです。ポインタの値はOS等が割り当てるメモリ番地であるため、実行時にならないとわかりません。以下で詳しく説明しますが、ポインタを利用(特に演算)すると、処理の依存関係(データの読み書き順序などの理由で生じる処理の実行順序関係)の解析が難しくなり、2つの処理A、Bの依存関係が不明という状況が生じます。

マルチコアの基本 · 2024/10/17
シングルコア向けに書かれたソフトウェアを自動的にマルチコア向けにコンパイルするツールが自動並列化コンパイラです。 前回の動画で紹介したMBP (Model Based Parallelizer) (https://www.esol.co.jp/embedded/product/embp_overview.html )はMathworks社のSimulinkモデルを入力とする自動並列化ツールです。C/C++言語プログラムなどからの自動並列化ツールとしては、Intel社のコンパイラ...

マルチコアの基本 · 2024/10/17
前回、シングルコアで動かしていたマルチタスクアプリケーションを、そのままマルチコア上に移植しても性能が向上しないだけでなく、正しく動かない場合もあるという話をしました。それではマルチコア上で正しく動作し、性能も向上するアプリケーションに自動的に変換するツールはあるのでしょうか。 第7弾の動画をご参照下さい。

マルチコアの基本 · 2024/07/22
マルチコアに対してよく聞かれる質問です。第12回で書いたように、マルチタスクで記載されたプログラムはマルチコアでそのまま動作する可能性はありますが、そうでないプログラムはそのままでは一つのコアでしか動かないため、自動もしくは手動での並列化が必要です。...

さらに表示する