C 图像直方图的串行和并行(使用mpi)代码
有人能帮我用c语言编写生成图像直方图的代码吗?我知道基本逻辑,但不会写代码。我想要一个同样的并行程序C 图像直方图的串行和并行(使用mpi)代码,c,parallel-processing,mpi,C,Parallel Processing,Mpi,有人能帮我用c语言编写生成图像直方图的代码吗?我知道基本逻辑,但不会写代码。我想要一个同样的并行程序 for(i=0; i<256;i++) histogram[i]=0; for(i=0;i<m;i++) for(j=0;j<n;j++) { color=image[i][j]; histogram[color]++; } for(i=0;i我想我应该使用线程(vs.进程)来并行化这个任务(Unix上的pthreads)。这
for(i=0; i<256;i++)
histogram[i]=0;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{
color=image[i][j];
histogram[color]++;
}
for(i=0;i我想我应该使用线程(vs.进程)来并行化这个任务(Unix上的pthreads)。这样,所有线程都可以共享相同的数据池(而不必跨进程边界复制大量的图像数据)
一种方法是查询系统调用以确定系统有多少CPU线程(n)。然后,分配(n)个单独的直方图数组。将图像划分为(n)个水平切片。然后,创建(n)个线程并传递不同的数字(1..n)每个线程将处理不同切片的直方图数据,并将结果放入不同的直方图数组中
主线程等待(n)个工作线程完成,然后将(n)个直方图数组添加到最终的直方图数组中
这是解决问题的一种方法。使这一点变得简单明了:
#pragma omp for
for(i=0; i<256;i++)
histogram[i]=0;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{
color=image[i][j];
histogram[color]++;
}
#pragma omp for
for(i=0;ithnx)谢谢你的帮助。我必须在windows操作系统上使用mpi实现它。