一、抽象
1),本教程的目标是说明如何使用HetCompute编程模型使用任务并行性和共享内存来处理图像。
二、图像处理过滤器
1),作为一个例子,应该探索非局部均值(NL-means)图像去噪算法。在该算法中,像素的估计值被计算为图像中所有像素的加权平均值。权重取决于像素对之间的相似性,相似性被定义为加权欧几里德距离的递减函数。具有类似灰度邻域的像素平均具有较大的权重。对于实际的计算算法,在SxS窗口中限制搜索类似的窗口。具有7x7相似性方形邻域的21x21搜索窗口被认为足够可靠地去噪,同时处理更精细的细节。
2),使用以下等式计算权重:
3), 其中Z(i)是归一化常数:
4),实现这个算法的伪代码如下:
三、使用HetCompute运行并行图形处理
1),上面提出的去噪算法是无序并行的。在这个实现中,不使用就地算法(输出是写在单独的图像中);因此,每个像素可以与所有其他像素并行处理。
2),比较简单的并行化
a,对于这种算法,简单的实现只需将去噪图像中最外层的循环并行化,为每个像素创建一个任务,然后异步启动它。
b),虽然这种并行化策略非常简单,而且易于在hetcompute中实现,但是这种实现的性能可能不是最佳的,原因有几 个,如并行处理教程中所讨论的。特别是,这个实现太细粒度了,无法克服并行开销,并且不利用缓存位置。