void operator()( const blocked_range2d<size_t>& r ) const { for( size_t x=r.rows().begin(); x!=r.rows().end(); ++x ) { for( size_t y=r.cols().begin(); y!=r.cols().end(); ++y ) { if(my_cam->isYellow_small(x, y)) returnPixel1C(my_seg_yellow, x, y) = 255; else returnPixel1C(my_seg_yellow, x, y) = 0; // if(my_cam->isGreen_small(x, y)) // returnPixel1C(my_seg_green, x, y) = 255; // else // returnPixel1C(my_seg_green, x, y) = 0; // if(my_cam->isBlue_small(x, y)) // returnPixel1C(my_seg_blue, x, y) = 255; // else // returnPixel1C(my_seg_blue, x, y) = 0; if(my_cam->isRed_small(x, y)) returnPixel1C(my_seg_red, x, y) = 255; else returnPixel1C(my_seg_red, x, y) = 0; } } }
void operator()(const blocked_range2d<int>& r) const{ int begin1 = r.rows().begin(), end1 = r.rows().end(); int begin2 = r.cols().begin(), end2 = r.cols().end(); for (int i = begin1; i < end1; i++){ for (int j = begin2; j < end2; j++){ dst[i * wN + j] = src[j * hN + i]; } } }
void operator()(const blocked_range2d<int>& r) const{ int begin1 = r.rows().begin(), end1 = r.rows().end(); int begin2 = r.cols().begin(), end2 = r.cols().end(); for (int i = begin1; i < end1; i++){ for (int j = begin2; j < end2; j++){ const double *vec1, *vec2; vec1 = &(A[i*src1w]); vec2 = &(B[j*src1w]); dst[i * src2w + j] = TBBSclMlt(vec1, vec2, src1w); } } }
void operator()( const blocked_range2d<size_t>& r ) const { float (*a)[L] = my_a; // a,b,c used in example to emphasize float (*b)[N] = my_b; // commonality with serial code float (*c)[N] = my_c; for( size_t i=r.rows().begin(); i!=r.rows().end(); ++i ){ for( size_t j=r.cols().begin(); j!=r.cols().end(); ++j ) { float sum = 0; for( size_t k=0; k<L; ++k ) sum += a[i][k]*b[k][j]; c[i][j] = sum; } } }
// Block operation void TBBMatrix_Add_Parallel::operator()(const blocked_range2d<size_t> r) const { TBBMatrix& A=my_A; TBBMatrix& B=my_B; TBBMatrix& C=my_C; for (size_t i = r.rows().begin(); i != r.rows().end(); ++i) { for (size_t j = r.cols().begin(); j != r.cols().end(); ++j) { double sum=A.Get(i,j)+B.Get(i,j); C.Set(sum,i,j); } } }
void operator()( const blocked_range2d<size_t>& r ) const { ContextPtr context = new Context( *m_parentContext ); const Box2i operationWindow( V2i( r.rows().begin()+m_dataWindow.min.x, r.cols().begin()+m_dataWindow.min.y ), V2i( r.rows().end()+m_dataWindow.min.x-1, r.cols().end()+m_dataWindow.min.y-1 ) ); V2i minTileOrigin = ImagePlug::tileOrigin( operationWindow.min ); V2i maxTileOrigin = ImagePlug::tileOrigin( operationWindow.max ); size_t imageStride = m_dataWindow.size().x + 1; for( int tileOriginY = minTileOrigin.y; tileOriginY <= maxTileOrigin.y; tileOriginY += m_tileSize ) { for( int tileOriginX = minTileOrigin.x; tileOriginX <= maxTileOrigin.x; tileOriginX += m_tileSize ) { for( vector<string>::const_iterator it = m_channelNames.begin(), eIt = m_channelNames.end(); it != eIt; it++ ) { context->set( ImagePlug::channelNameContextName, *it ); context->set( ImagePlug::tileOriginContextName, V2i( tileOriginX, tileOriginY ) ); Context::Scope scope( context.get() ); Box2i tileBound( V2i( tileOriginX, tileOriginY ), V2i( tileOriginX + m_tileSize - 1, tileOriginY + m_tileSize - 1 ) ); Box2i b = boxIntersection( tileBound, operationWindow ); ConstFloatVectorDataPtr tileData = m_channelDataPlug->getValue(); for( int y = b.min.y; y<=b.max.y; y++ ) { const float *tilePtr = &(tileData->readable()[0]) + (y - tileOriginY) * m_tileSize + (b.min.x - tileOriginX); float *channelPtr = m_imageChannelData[it-m_channelNames.begin()] + ( m_dataWindow.size().y - ( y - m_dataWindow.min.y ) ) * imageStride + (b.min.x - m_dataWindow.min.x); for( int x = b.min.x; x <= b.max.x; x++ ) { *channelPtr++ = *tilePtr++; } } } } } }
void operator()( const blocked_range2d<size_t, size_t>& r ) { double value; DoubleVector args(2); // r is a 2-dimensonal range for( size_t i=r.rows().begin(); i!=r.rows().end(); ++i ){ //pData1 = (m_pGrid1->data) + (m_stride1 * i); for( size_t j=r.cols().begin(); j!=r.cols().end(); ++j) { //pData2 = (m_pGrid2->data) + (m_stride2 * j); double arg1, arg2; arg1 = * (double*) PyArray_GETPTR1(m_pGrid1, i); arg2 = * (double*) PyArray_GETPTR1(m_pGrid2, j); args[0] = arg1; args[1] = arg2; //value = (*m_pFn)(arg1, arg2, m_pArgs); value = m_params.objectiveFunction(args); if (m_value_of_max == -DBL_MAX || value > m_value_of_max) { m_value_of_max = value; m_argmax1 = args[0]; m_argmax2 = args[1]; } } } }