共 1,393 篇文章
共 6,621 篇文章及评论
- Association for Computing Machinery TechNews (ACM)
- Go Parallel! (Dr. Dobbs)
- HPCwire (Tabor Communications, Inc.)
- insideHPC (John West)
- Joe Duffy's Weblog (Microsoft)
- Microsoft Parallel Programming Development Center (Microsoft Germany)
- MultiCoreInfo.com
- scalability.org (Scalable Informatics)
- Software Dev Blog (Intel Germany)
- Soft Talk Blog (Intel United Kingdom)
- The Moth (Microsoft)
Archives
帖子来自 softarts11 
多核程序探秘 (续): false sharing 及使用 vtune 验证
作者: softarts11 (3 篇文章) 日期: 八月 13, 2009 在 5:14 下午
评论 (1)
感谢网友对前一篇文章 -“多核程序探秘- false sharing及使用vtune验证”的支持。本篇文章在原先文章的基础上添加了图片,欢迎网友继续评论并提出宝贵意见。 多核开发中常见的一个问题是false sharing(失效共享),这个问题让我们用一个全新的角度来看待多核程序的编写,这个角度就是硬件的角度。 Intel Core 2 Duo处理器平台上, L2 cache是由两个core共享的,而L1 ...
分类: 博客征文专栏
标签:false sharing, 多核
TBB: concurrent_queue 高性能的奥秘
作者: softarts11 (3 篇文章) 日期: 八月 13, 2009 在 11:49 上午
评论 (3)
在如今的多线程开发的滚滚浪潮中,线程安全会是一个充满正面色彩的广告语,还是一个隐含性能低下令人不安的信息?众所周知,STL库所提供的容器均不能保证线程安全,所有的工作都要需要开发者来承担。最简单的实现线程安全的手段便是使用锁来同步对容器的访问,只需要lock和unlock两行语句,容器就变成线程安全了,很简单,不是吗?不过,这时候"线程安全"就成了性能低下的同名词,期望的并发操作成了对容器的串行访问,我们不仅仅需要安全,还需要高性能。 TBB::concurrent_queue令人惊异地同时做到了这两点,在让开发者放心地得到线程安全的同时,还可以心安理得的享受高性能的并发访问。这其中会有什么奥秘?作为普通的开发者,我们可以从中学到什么东西? Herb Sutter在DDJ 一文中抛出并行编程的三个简单论点,一是分离任务,使用更细粒度的锁或者无锁编程;二是尽量通过并行任务使用CPU资源,以提高系统吞吐量及扩展性;三是保证对共享资源访问的一致性。 传统的STL:queue 加锁的方案,Intel Thread Profilec测量,图的上半部分 fully utilized 只有9%(绿色部分),下半部分有大段时间处于串行执行状态(黄色),并行运算度很低 这三个论点各有侧重,我们看看concurrent_queue是怎么做的。 所谓分解任务,以尽可能细的粒度执行,这样就可以让每个任务运行而不互相干扰。并行编程中有一个对应的重要概念,就是尽量使用thread的private/local数据,例如ptmalloc中采用了好几个private heap,以降低多个线程同时请求分配内存,造成访问global ...
分类: 博客征文专栏
标签:TBB, 高性能
多核程序探秘- false sharing及使用vtune验证
作者: softarts11 (3 篇文章) 日期: 六月 10, 2009 在 11:58 上午
评论 (6)
多核程序探秘(1) false sharing及使用vtune验证 多核开发中常见的一个问题是false sharing(失效共享),这个问题让我们用一个全新的角度来看待多核程序的编写,这个角度就是硬件的角度。 Intel Core 2 Duo处理器平台上, L2 cache是由两个core共享的,而L1 data ...
