私は、スレッドが互いにブロックしないように適切なアルゴリズムを考え出したり、必要に応じてスレッド間で適切な同期をとったりするなど、マルチスレッド アプリケーションの作成を改善しようとしています。これは C/Linux になります。
マルチコアCPUでマルチスレッド対シングルスレッドとして実行した場合のパフォーマンス/スループットの向上を明確に示すことができる、私が作成できる簡単なアプリケーションを誰でも提案できますか?
ありがとう。
私は、スレッドが互いにブロックしないように適切なアルゴリズムを考え出したり、必要に応じてスレッド間で適切な同期をとったりするなど、マルチスレッド アプリケーションの作成を改善しようとしています。これは C/Linux になります。
マルチコアCPUでマルチスレッド対シングルスレッドとして実行した場合のパフォーマンス/スループットの向上を明確に示すことができる、私が作成できる簡単なアプリケーションを誰でも提案できますか?
ありがとう。
行列の乗算は、かなり良い出発点です。これは並列化可能であり、削減ステップのためにある程度の同期も必要です。
Intel Threading Challenges は、スキルを磨きたい場合に興味深いパズルを提供します。問題の例を次に示します。
http://software.intel.com/en-us/contests/threading-challenge-students-2011/codecontest.php
画像を読み込んで、複数のスレッドでいくつかの単純なピクセル操作を実行できます。たとえば、RGB から HSV への変換、またはそのようなもの...
これは単純ですが、実際の実践と非常によく調和しています。
独立した計算により、複数のスレッドで最高の利益が得られます。マルチスレッドのパフォーマンスを簡単に示すには、簡単な計算 (たとえば、N 番目のフィボナッチ数を見つける) を数回実行します。それは単純すぎますか?