面向对象并行图像处理库与分布式计算调度策略
面向对象并行图像处理库
在设计面向对象并行图像处理库时,面临着在两种 C++ 参数化机制中做出选择的问题:
- 继承 :通用操作参数是对具有纯虚 Process() 方法的抽象基类(接口)的引用,该方法通过当前像素值计算像素的新值;具体算法类从基类派生并覆盖 Process() 方法。
- 模板 :通用操作是一个由具体算法类参数化的模板方法。
从性能和通用性考虑,SSCC_PIPL 采用了第二种方法。这种选择将计算模型抽象级别提高所带来的开销从程序执行时间转移到了编译时间。此外,该方法允许所谓的函数嵌入,即将函数体的副本插入到函数调用的每个位置,但虚拟函数无法实现嵌入。因此,该库必须以源代码形式分发,用户程序编译时间会变长,但执行速度会更快。
以下是一个简化的程序,展示了该库的典型用例,定义了用户算法并将其作为参数传递给相应的 Image 模板方法:
class Laplasian {
int LeftMargin() { return 1; }
int RightMargin() { return 1; }
int TopMargin() { return 1; }
int BottomMargin(){ return 1; }
int Process(NeighborhoodManipulator& nm) {
超级会员免费看
订阅专栏 解锁全文
691

被折叠的 条评论
为什么被折叠?



