最終更新:
mikk_ni3_92 2008年07月17日(木) 18:00:05履歴
現在地 >> メニュー >> TBB >> TBB::基本編05::多重ループ
この場合、「ループA」と「ループB」が並列になる。
※例えば、画像に対しループをかけ、各ピクセルでRGB値の合計を出す場合、
つまり、ピクセルで言うと
(x,y)=(0,0) , (0,1) , (1,0) , (1,1)
の4つが並列という事になる(っぽい)
blocked_range2d< mのの型 , nの型>(開始位置 m0, 終了位置m1 , 開始位置n0, 終了位置n1)
または、
blocked_range2d< mの型 , nの型>(開始位置 m0, 終了位置m1 ,mのgrainsize, 開始位置n0, 終了位置n1, nのgrainsize)
を記述する。
[例]
const int M = 256;
const int N = 256;
blocked_range2d<int,int>(0,M,0,N)
サンプル >> TBB::多重ループ、CV+TBB::2値化(多重ループ)
for(... ...) //ループA { for(... ...) //ループB { for(... ...) //ループC { ... ... } } }
この場合、「ループA」と「ループB」が並列になる。
※例えば、画像に対しループをかけ、各ピクセルでRGB値の合計を出す場合、
for(int y = 0; y < height; ++y) { for(int x =0 ; x < width;++x) { for(int pixel = 0; pixel < 3; ++pixel ) { SUM_RGB_FUNC( image[y][x][pixel] ); } } }もし、「y = 0」と「y =1」の並列の時、
- 「y = 0」の中で「x = 0」と「x = 1」で並列
- 「y = 1」の中で「x = 0」と「x = 1」で並列
つまり、ピクセルで言うと
(x,y)=(0,0) , (0,1) , (1,0) , (1,1)
の4つが並列という事になる(っぽい)
blocked_range2d< mのの型 , nの型>(開始位置 m0, 終了位置m1 , 開始位置n0, 終了位置n1)
または、
blocked_range2d< mの型 , nの型>(開始位置 m0, 終了位置m1 ,mのgrainsize, 開始位置n0, 終了位置n1, nのgrainsize)
を記述する。
[例]
const int M = 256;
const int N = 256;
blocked_range2d<int,int>(0,M,0,N)
サンプル >> TBB::多重ループ、CV+TBB::2値化(多重ループ)