Archives

帖子来自 Wu Xiaochang 吴晓昶 (Intel) RSS

Wu Xiaochang 吴晓昶 (Intel)

吴晓昶是英特尔软件与服务集团开发者关系部的应用工程师。他毕业于厦门大学计算机系,具有计算机科学硕士学位。于2006年加入英特尔,当前致力于利用最新的英特尔技术开发和优化创新的应用程序,同时面向独立软件开发商提供针对英特尔平台的性能优化技术咨询和解决方案。主要技术方向为多核技术,数字内容创建,多媒体和3D图形渲染的开发和优化技术。

北京IDF完成AVX课程讲解归来

作者: Wu Xiaochang 吴晓昶 (Intel) (8 篇文章) 日期: 四月 15, 2010 在 6:03 下午
评论 (1)

从北京IDF完成AVX介绍课程的讲解,乘航班回到上海的家中已是凌晨。我在讲授的过程中做了一个调查,发现在座的许多人都写过SSE代码,都知道Intel即将在下一个平台上引入AVX指令集。国内的开发者对于最新技术的跟踪已经达到和国外同步的水平,这也得益于互联网对知识的传播和越来越开放的技术交流。每年的IDF都是春季首先在中国举行的,这使得中国能更快地接触到最新的技术,产业的潮流。相信这次IDF之后,对AVX编程感兴趣的开发者,就会率先在模拟器上来尝试开发AVX加速的应用。 遥想当年,国内最早应用SIMD技术进行优化的著名软件是梁肇星先生的超级解霸,当初号称使用Pentium MMX指令集可以软解MPEG,借助CPU内置的多媒体指令集能够实现用专用解压卡能实现的性能。那个时候互联网并没有现在这么发达,梁先生为了应用MMX需要付出多大的努力!这么多年过去,MMX早已过时,SSE系列指令集也已经发展了若干代,终于到了该升级换代的时候了! AVX是Intel在这么多年SIMD技术应用和发展的实践中诞生的。它引入了256位向量处理能力,丰富的数据重排新指令,直观的3、4操作数指令,完整的源和目的操作数Mask体系等,将SIMD指令集的成熟度提升到一个新的水平!更高带宽、更低延时、更小代码!Intel在未来CPU里面将会增加更多面向应用的加速指令,使得软件和硬件的结合更加紧密,更方便开发者构建基于硬件能力的创新的应用。

继续 ›

分类: 其他

SSE优化中_mm_set_* 的陷阱

作者: Wu Xiaochang 吴晓昶 (Intel) (8 篇文章) 日期: 十二月 6, 2009 在 11:18 下午
评论 (0)

我们在利用SSE指令集进行向量优化时,初始都要把常量或内存数装入到XMM寄存器中,然后再进行操作。为方便使用SSE指令,编译器将指令封装成intrinsic形式方便程序员以C语言函数的方式来调用这些指令。 但是intrinsic和指令并不是一一对应的,对于一些简单的操作,intrinsic对应于一条指令,而对一些复杂操作,intrinsic对应若干条指令,在这种情况下选择合适的intrinsic就显得十分重要。 这是我在一个优化项目过程中碰到的一个例子,我们的客户是这样使用的: p = _mm_set_epi32(*(srcData), *(srcData+1), *(srcData+2), *(srcData+3)); 这样有什么问题呢?如果打开调试器查看Assembly功能可以看到这句话翻译成7条SSE2指令: movd xmm3, DWORD PTR [12+edx] movd xmm0, DWORD ...

继续 ›

分类: 并行计算
标签:

用Parallel Inspector检测出一个项目的内存错误

作者: Wu Xiaochang 吴晓昶 (Intel) (8 篇文章) 日期: 十一月 20, 2009 在 1:19 上午
评论 (3)

最近在做项目开发中,使用了一个开源的代码框架,Debug编译的时候一切正常,但是在Release时候就挂了。找了老半天也没找出哪里错,因为一下就跳到系统DLL,然后就崩溃了,连call stack都看不到了,应该是堆栈被破坏了。根据经验判定可能是内存分配释放问题,因为Release版本可能暴露出一些Debug版本的内存使用问题。 这时想起不是Intel Parallel Inspector能找内存错误吗?就开到它的最大内存错误检查模式试着跑一把。结果大有收获!原来是使用的框架中犯了一个经常犯的错误: p = new Foo [100] 必须用 ...

继续 ›

分类: 并行计算
标签:

代码优化的第一步是判定程序热点

作者: Wu Xiaochang 吴晓昶 (Intel) (8 篇文章) 日期: 十一月 7, 2009 在 12:13 下午
评论 (18)

我们在做性能优化的时候,第一步需要判定哪部分程序最需要做优化,一般来说程序运行最耗时的那部分,也就是程序热点(Hotspots)是我们的候选,而优化热点函数后性能提升效果也最明显。 为什么要提这个问题呢?因为最近做过一些项目,很多人一上来看到程序中这里适合用多线程,那里适合用SSE,但是有没有先考虑过这部分程序优化后性能提升的比例能有多少?一般我们在做优化之前都需要有一个基本的估计,需要优化的代码占程序总运行时间的多少,用不同的手段最多能达到怎么样的优化效果,达到这样的效果后是否满足我的既定目标?这样分析下来后才开始分配人力和时间资源。 有些人觉得,我自己心里很清楚程序哪里最耗时。但是感觉往往不是那么精确的,现在寻找热点的工具有很多, VTune,Parallel Amplifier等都可以做到。既然有工具,我们就借助工具定量地进行分析,做为我们开始的第一步。  

继续 ›

分类: 并行计算
标签:,

使用Intel Compiler 11.1和SDE模拟器进行AVX开发

作者: Wu Xiaochang 吴晓昶 (Intel) (8 篇文章) 日期: 七月 6, 2009 在 3:17 下午
评论 (0)

Intel® Advanced Vector Extensions (Intel® AVX) 在浮点运算上扩展了Intel® SSE的能力。Intel® AVX使用256位寄存器(SSE为128位)并对指令集进行了扩展。每条指令可以同时处理8个float或4个double数据。   对于浮点处理密集型的应用,非常适合于进行AVX优化。Intel支持AVX的Sandy Bridge平台还未发布,在发布之前我们如何进行AVX开发呢?答案是通过Intel® ...

继续 ›

分类: 并行计算
标签:

Direct3D的浮点精度问题

作者: Wu Xiaochang 吴晓昶 (Intel) (8 篇文章) 日期: 六月 8, 2009 在 11:49 上午
评论 (6)

Direct3D的浮点精度问题 最近编写一个Firefox的小插件,里面利用D3D进行Render,结果导致Firefox的UI渲染错误(插件后面的主窗口背景变成黑色),检查了好几天发现程序逻辑并没有问题,窗口函数和消息处理都正常。后来偶然发现同样用OpenGL渲染没有问题,再三查找发现问题出在D3D的浮点精度上面。从D3D的文档D3DCREATE条目中查到的: D3DCREATE_FPU_PRESERVE Set the precision for Direct3D floating-point calculations to the ...

继续 ›

分类: 图形和视觉计算
标签:,

多核时代的游戏体验

作者: Wu Xiaochang 吴晓昶 (Intel) (8 篇文章) 日期: 八月 4, 2008 在 1:33 上午
评论 (3)

ISN上的博客文章 looks aren't everything -- making games act real (http://software.intel.com/en-us/blogs/2008/06/06/looks-arent-everything-making-games-act-real/) 谈到多核时代的游戏不仅仅是看起来真实(look real),而且要动起来真实(act ...

继续 ›

分类: 游戏

Intel 45nm制程处理器上的SSE4指令集简介

作者: Wu Xiaochang 吴晓昶 (Intel) (8 篇文章) 日期: 三月 25, 2008 在 8:24 下午
评论 (3)

Intel 45nm制程处理器上的SSE4指令集简介  Intel的SSE(Streaming SIMD Extensions, 流式单指令多数据扩展)技术有效增强了CPU的向量运算能力。支持该指令集的处理器有8个128位xmm寄存器,每一个寄存器可以同时存放4个32位整数(int), 4个32单精度浮点数(float) 或2个64位双精度浮点数(double)。比如我们在3D开发中常见的4元组32位浮点数结构<x, y, z, w>, ...

继续 ›

分类: 并行计算