英特尔工程师:多核平台编程优化入门指导

celineshi 2006-12-29 09:23:50
随着大赛进行, 我们收到了不少网友的优化报告, 其中许多网友取得非常好的优化成绩. 但是也许多网友通过各种渠道给我们反馈, 由于平时没有接触太大优化相关的工作,一时间对于提供的代码难以入手,希望我们针对大赛,提供一些学习的资源,掌握优化方面内容参加比赛. 所有我们提供了下面一些链接, 希望对一些没有没有太多优化经验的网友提供一些帮助.

1.多线程设计
由于多核技术的发展,多线程程序的调优会越来越为重要. 所有我们要求参赛网友对原有程序进行多线程设计. 程序多线程化是通过我们测试的一个条件.一般来说, 多线程设计主要有两种方法: 使用本地线程(Native Threading), OpenMP Threading.在大赛中,这两种方法都可以使用.

关于Windows本地的线程,大家可以去MSDN* 网站去学习.下面一个链接,提供提供一个简单的介绍,:
http://www.codeproject.com/threads/sync.asp

OpenMP threading 一些详细内容可以参考OpenMP的网站(www.openmp.org).下面一篇开始学习的文章:
Getting Started with OpenMP*: http://www3.intel.com/cd/ids/developer/asmo-na/eng/20365.htm

如果是使用OpenMP threading, 需要用Intel C++ Compiler 或 Microsoft .Net 2005* 编译器.

对程序的多线程化,需要要选择关键的代码(费时间的代码)进行多线程设计. 如果大家不能确定程序主要的计算部分, Intel® VTune™ Analyzers 可以帮助分析程序.

多线程化后, 下一步主要是对多线程的程序进一步优化. 

2.优化工具
学习英特尔的相关工具使用方法也是我们大赛的一个主要目的. 在大赛的参赛的主页上,大家可以下载到相关的工具. 这里我们简单对每个工具进行说明:

Intel® C++ Compiler: 我们建议使用Intel C++ 编译器进行编译程序, 安装完Intel C++ 编译器后, 大家可以在命令行下, 或在Microsoft .Net 2005* 编译环境中选择Intel C++ 编译器. Intel C++ 编译器提供不同的编译开关. 如果大家需要进一步学习这方面的内容可以去 Intel 软件学院在线学习网站:
Enhancing Performance with the Intel® Compiler: http://or1cedar.cps.intel.com/softwarecollege/CourseDetails.asp?courseID=105

Intel® Math Kernel Library (Intel MKL). Intel MKL 函数库中提供了VML 函数, 这些函数可以对超越函数(sin, cos, exp, log等)进行优化, 有关这方面的讨论,大家可以参见以前的一些帖子, 不少网友讨论VML函数的使用.

Intel Threading Checker & Intel Threading Profiler: Thread Checker 用于查找线程错误, 能够检测资源竞争、线程死锁等问题. 大家程序在多线程后,可以用Threading Checker 检测一下有没有多线程相关的错误. Thread Profiler是线程性能检测工具,多线程化有, 可能会有负载比平衡, 同步开销过大等等线程相关的性能问题。Thread Profiler 能够帮助定位这些问题的原因.
一些可以学习网站:
Getting Started with the Intel® Thread Checker: http://or1cedar.cps.intel.com/softwarecollege/CourseDetails.asp?courseID=178
Getting Started with the Thread Profiler: http://or1cedar.cps.intel.com/softwarecollege/CourseDetails.asp?courseID=179

这些只是是一个初步的介绍,大家遇到什么问题, 欢迎一起来讨论. 一些网友在优化方面也非常有经验,可以一起来交流学习.
...全文
5285 21 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
hony688 2007-03-13
  • 打赏
  • 举报
回复
个人感觉 intel的 c ++编译器 效率高
  • 打赏
  • 举报
回复
谈些与此无关又有些关系的话.
从很多方面,无疑可以看出,英特尔在广告方面投入了大量人力财力.
但我觉得,过份地强调这些多核硬件与软件产品的"英特尔"标牌,甚至喧宾夺主,这是个很大的错误策略.
在"多核"处于开拓市场占领市场的时候,过份强调一家的技术,会让人对这些宣传的份量产生置疑.在越来越多元化的今天,英特尔这个名字似乎不可能再象最初那样有号召力.
凡是垄断的东西,包括只是在宣传上让人感觉是垄断的东西,都容易让人有抵触情绪.
英特尔的宣传实际上也是把自己凌驾于技术和知识之上的一种错位的宣传观念.这种观念很难赢得好感.
英特尔应该做的是,在推广这些产品和技术的同时,"适当地"说明自己是目前最好或比较好的.不要搞成一家之言,一家之物.
李世东 2007-02-27
  • 打赏
  • 举报
回复
软件界和并行计算界在某些理解或关注的范围还存在太大的差异吧
yuanzh 2007-02-26
  • 打赏
  • 举报
回复
mark
Jiana 2007-02-23
  • 打赏
  • 举报
回复

thanks
syf7901 2007-02-16
  • 打赏
  • 举报
回复
支持.可惜我是一个新手.
wanglovec 2007-01-25
  • 打赏
  • 举报
回复
ding
李世东 2007-01-23
  • 打赏
  • 举报
回复
支持版主 呵呵
东东
李世东 2007-01-23
  • 打赏
  • 举报
回复
支持版主 呵呵
东东
zhqh7907 2007-01-23
  • 打赏
  • 举报
回复
路过.
愚鬼 2007-01-13
  • 打赏
  • 举报
回复
现在还能提交作品吗?
Kinpring 2007-01-12
  • 打赏
  • 举报
回复
现在做纯粹的并行开发,绝大部分都是用MPI(MPI+C/C++/Fortran)的啊,为什么Intel没有支持呢?
关注一下.
软件界和并行计算界在某些理解或关注的范围还存在太大的差异吧.
赖勇浩 2007-01-12
  • 打赏
  • 举报
回复
晕,各种库有各种库的好处,OpenMP是专用于共享内存的并行的,MPI多用于分布式并行,Intel的编译器应该还是支持的~
IntelPerLib 2007-01-12
  • 打赏
  • 举报
回复
Intel 并行计算方面一些工具:
http://www3.intel.com/cd/software/products/asmo-na/eng/244171.htm

-----------------
在做纯粹的并行开发,绝大部分都是用MPI(MPI+C/C++/Fortran)的啊,为什么Intel没有支持呢?
关注一下.
软件界和并行计算界在某些理解或关注的范围还存在太大的差异吧.
IntelPerLib 2007-01-11
  • 打赏
  • 举报
回复
我们则会在Windows下检测. 不会测试.pthead 程序
------------
pthread 呢??
IntelPerLib 2007-01-10
  • 打赏
  • 举报
回复
MSDN上关于asp.net threading的讨论:
http://msdn.microsoft.com/msdnmag/issues/03/06/Threading/default.aspx
luckbird 2007-01-10
  • 打赏
  • 举报
回复
asp.net的程序可以设计多线程吗?
gunsand 2007-01-10
  • 打赏
  • 举报
回复
pthread 呢??
chafox 2007-01-10
  • 打赏
  • 举报
回复
关注~

568

社区成员

发帖
与我相关
我的任务
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
  • 英特尔技术社区
  • shere_lin
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧