Archives

帖子来自 erwincv RSS

多核编程技术 - 4

作者: erwincv (4 篇文章) 日期: 九月 9, 2009 在 3:07 下午
评论 (2)

4 每层中,对每个节点建立barrel,为了达到负载均衡,通常对任务进行排序,np难题。如:80,30,10,5,2.可以分两个线程,80,30+10+5+2. 动态任务调度模式本地队列->共享队列。从共享队列中“偷”任务来完成,太高负载均衡的目的。实现算法简介:快排。动态内存排序时,将总任务分为两部分,即两个子任务,放入分布式队列中。如此往复迭代,知道分解为足够小的串行任务,再执行。 /\ /\ /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ | | | \/ ...

继续 ›

分类: 博客征文专栏
标签:

多核编程技术 - 2

作者: erwincv (4 篇文章) 日期: 九月 9, 2009 在 3:06 下午
评论 (3)

$2 死锁与数据竞争:死锁:互相等待对方的资源。请看周伟明的《软件测试实践》;)尽量避免嵌套锁。数据竞争:比较烦,与死锁比较,更难避免。多线程推出与资源释放:以计数的方式统计各个线程已经结束。共享资源并行遍历:线程控制:Set_ ThreadAffinity指定内核,执行指定线程。不同编程模型的对比与适用场景: OpenMP:简单的并行执行。缺点:容易出现数据竞争。 TBB:分布式内存管理,动态任务调度。有正式版本可用。(有数据竞争的bug) CAPI:mr周所写。 OpenMP编程模型。 Fork-Join模型,在串行期之前,等待所有线程都结束。barrier栅障。一般格式为: #progma omp ...

继续 ›

分类: 博客征文专栏
标签:

多核编程技术 - 1

作者: erwincv (4 篇文章) 日期: 九月 9, 2009 在 3:06 下午
评论 (17)

串行比例f 串行时间k,把f看做n的函数,由于摩尔定律n上升, f下降,串行时间近似为常数。 Gustafson定律: S(n) = n + (1-n)K = ...

继续 ›

分类: 博客征文专栏
标签:

多核编程技术 - 3

作者: erwincv (4 篇文章) 日期: 九月 5, 2009 在 3:07 下午
评论 (1)

$3 数据处理: private firstprivate lastprivate reduction copyin copyprivate 数据竞争的例子,j在循环外面,会出现数据竞争。 可以转为循环内部,或者在外部声明为const。图像放缩的实例。 ...

继续 ›

分类: 博客征文专栏
标签: