Parallel processing hough变换MPI的并行编程

Parallel processing hough变换MPI的并行编程,parallel-processing,mpi,hough-transform,Parallel Processing,Mpi,Hough Transform,如何将该算法与mpi并行。我刚开始学习并行编程,我想尝试并行这个算法,但我不知道我应该在这个算法中用MPI并行什么 for (size_t i = 0; i < lines.size(); i++) { float rho = lines[i][0], theta = lines[i][1]; double a = cos(theta), b = sin(theta); double x0 = a * rho, y0 = b * rho;

如何将该算法与mpi并行。我刚开始学习并行编程,我想尝试并行这个算法,但我不知道我应该在这个算法中用MPI并行什么

for (size_t i = 0; i < lines.size(); i++)
{
    float rho = lines[i][0], theta = lines[i][1];

    double a = cos(theta), b = sin(theta);
    double x0 = a * rho, y0 = b * rho;

    
        pt1.x = cvRound(x0 + 1000 * (-b));
        pt1.y = cvRound(y0 + 1000 * (a));
    
        pt2.x = cvRound(x0 - 1000 * (-b));
        pt2.y = cvRound(y0 - 1000 * (a));
    
    line(cdst, pt1, pt2, cv::Scalar(0, 0, 255), 3, 8);

}
for(size_t i=0;i
我就是这样尝试的

for (size_t i = 0; i < lines.size(); i++)
{
    float rho = lines[i][0], theta = lines[i][1];
    cv::Point pt1, pt2;
    double a = cos(theta), b = sin(theta);
    double x0 = a * rho, y0 = b * rho;

    if (rank == 0) {
        pt1.x = cvRound(x0 + 1000 * (-b));
        pt1.y = cvRound(y0 + 1000 * (a));
    }
    if (rank == 1) {
        pt2.x = cvRound(x0 - 1000 * (-b));
        pt2.y = cvRound(y0 - 1000 * (a));
    }
    line(cdst, pt1, pt2, cv::Scalar(0, 0, 255), 3, 8);
    MPI_Barrier(MPI_COMM_WORLD);

}
for(size_t i=0;i
我正常运行的速度约为2.5秒,我尝试使用mpi运行效果仍在2.5秒左右

错误

程序过早结束,可能已崩溃。退出代码-529697949


假设所有迭代都是独立的,并且所有列组上都有
,通常会在第一列组上计算第一个
行.size()/2
行,在第二列组上计算其余的行。然后,您可能需要从所有级别收集结果。