ブロック分割とサイクリック分割の違いを教えてください

投稿者: Anonymous

データ並列化の用語のようですがブロック分割とサイクリック分割の違いを教えてください

解決

1次元のデータの分割方法です. 1次元配列を分割する例で示します. 長さNの配列aMブロックに分割するとき
m番目のブロックの要素が, a[i+N/M*m]で指定されるのがブロック分割,
a[N/M*i+m]なのがサイクリック分割です.
ここでiはどちらも0~N/M-1をとります.また簡単のためにNMでわりきれると仮定しています. 図がわかりやすいのでのせます
画像の説明をここに入力

[0,0,0,0,0,1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4] //ブロック
[0,1,2,3,4,0,1,2,3,4,0,1,2,3,4,0,1,2,3,4,0,1,2,3,4] //サイクリック

N=30,M=6の場合をのせました. 上がブロック分割,下がサイクリック分割です.ここで各色はブロックに対応しています.
画像処理やcudaでスレッドに分割する場合は2または3次元のデータを考える場合が多いですが,その場合には各次元それぞれブロックまたはサイクリックで分割します.

回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *