並列計算を使用して画像のヒストグラムを計算するにはどうすればよいですか?シリアルでの画像のヒストグラムは簡単ですが、パラレルで計算することについてはわかりません。
任意のアイデア、アルゴリズム、ソースコード、または役立つリンクをいただければ幸いです。
私はMPIを使用しています。
並列計算を使用して画像のヒストグラムを計算するにはどうすればよいですか?シリアルでの画像のヒストグラムは簡単ですが、パラレルで計算することについてはわかりません。
任意のアイデア、アルゴリズム、ソースコード、または役立つリンクをいただければ幸いです。
私はMPIを使用しています。
これがアイデアです:
まず、イメージを行方向 (C でプログラムする場合) または列方向 (Fortran でプログラムする場合) にMPI_Scatter()
分散MPI_Scatterv()
させます。 )。
次に、すべてのプロセスが画像のその部分のヒストグラムを計算します。local_histogram
ヒストグラムを 256 要素の整数配列に格納します (画像はグレースケールであると想定しています)。
最後のステップで、総和を伴う全体的な削減が次のように実行されMPI_Reduce()
ます。
MPI_Reduce(local_histogram, histogram, 256, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD);
その後、完全なグローバル ヒストグラムはhistogram
、ランク 0 のプロセスの配列になります。
I can only guess what exactöy you are looking for. Let me give you the brief outline of an algorithm for you:
Each node computes a histogram. In the final step, all of them are reduced by adding them together. The final summation could be split again, and again and again, depending on the workload.
This approach is similar to map/reduce.