0

フォークを介して複数のプロセスを使用し、共有メモリを使用して小さなサイズの行列の 1 つの行を計算する各プロセスを使用して行列の乗算を実行したいのですが、サイズの大きい行列では、各行のプロセスを作成することはできません。したがって、サイズによって決定される行のブロックを計算する必要があります。たとえば、10行まではプロセスごとに1行を計算し、その後20行の場合、1つのプロセスはそれぞれ4行を計算する必要があります。行番号をプロセス数として取得できるため、プログラムできません。プロセス数を 8 と仮定すると、各ブロックには N/8 行が含まれます。ただし、マトリックスのサイズは 8 の倍数であり、プロセス数は可変である必要があります。6 つの CPU があるとします。プロセス数を取得できますか定数であること、すなわち 6 .何が正しいアプローチでしょうか? どのように書けばよいですか?

4

1 に答える 1

0

行列の倍算を示すサンプルコードを次に示します。pthreadで。私はそれを検索エンジンでほぼ瞬時に見つけました。それはあなたが説明することをするための方法を示しています。
http://www.cs.arizona.edu/classes/cs422/spring13/examples/matmult-dyn.c

おそらく、最善のアプローチを決定するために、微調整を行う必要があります。

おそらくこの記事も読む必要があります:http: //aristeia.com/TalkNotes/PDXCodeCamp2010.pdf

于 2013-03-12T23:37:37.630 に答える