多核程序设计实验之一_第1页
多核程序设计实验之一_第2页
多核程序设计实验之一_第3页
多核程序设计实验之一_第4页
多核程序设计实验之一_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Multicore

ProgrammingInstructor:

Zhang

Weizhe

(

)Computer

Network

and

Information

Security

TechniqueResearch

Center

,

School

of

Computer

Science

andTechnology,

Harbin

Institute

of

TechnologyLab

1.1:

In

CompilerSwitchesC++编译器英特尔C++编译器的主要功能与优点:支持英特尔多处理器以及现有的英特尔处理器与体系结构,针对英特尔处理器的先进优化功能可以帮助产生出众的应用程序性能。与针对

IA-32

VisualC++、Visual

C++

6.0

代码以及

VisualC++

.NET

保持跨体系结构的兼容性。针对

英特尔处理器的先进优化功能可以帮助产生出众的应用程序性能。LinuxWindows作用-O0/Od优化-g/Zi生成标记-O1/O1优化二进制代码-O2/O2优化速度(默认)-O3/O3优化数据缓存LinuxWindows作用-ip/Qip优化编译单个文件-ipo/Qipo通过内联函数优化交叉编译多个文件高级开关LinuxWindows作用-Xw/QxW为Pentium

4等支持MMX、SSE和SSE2指令的处理器专门优化-xP-axP/Qxp/Qaxp为酷睿等支持MMX

、SSE

、SSE2和SSE3指令的处理器专门优化高级开关LinuxWindows作用-openmp/Qopenmp打开OpenMP优化开关-openmp_report/Qopenmp_report提供优化报告、错误LinuxWindows作用-tckeck/Qtcheck支持线程检查器监测线程C++编译器(续)英特尔C++编译器支持以下语言标准:ANSI/ISO

标准,用于

C

语言编译

(ISO/IEC

9899:1990)ANSI/ISO

标准(ISO/IEC

14882:1998)用于C++语言OpenMP*

规范

2.5

版英特尔C++编译器与其他常用工具保持兼容,可以集成到广泛使用的开发环境,并且同其他广泛使用的编译器保持着特性源与二进制方面的兼容性。集成了

Visual

Studio

2005、VisualStudio.NET*

2002/2003

以及Visual

Studio

98提供扩展32

位和64

位多核英特尔处理器支持。C++编译器实验实验要求硬件英特尔多核处理器512

MB内存20

GB

硬盘支持32位像素显卡■Windows

Server2003Visual

Studio*.NET

2003英特尔C++编译器10.0或更高版本英特尔VTune性能分析器9.0或更高版本英特尔Thread

Checker

线程检查器3.1

或更高版本英特尔

Thre rofiler

线程

3.1

或更高版本实验代码C++编译器实验——高阶优化使用高阶优化编译开关(-O3)先清理以前生成的文件:nmake

/f

raytrace2.mak

clean打开-O3开关编译文件:nmake

/f

raytrace2.mak

CF="-O3"运行渲染图像程序:raytrace2

320

240Press

‘g

to

beginthe

renderPress

‘q

to

quit

the

application将屏幕上显示的运行时间记录下来

。C++编译器实验——原始编译用微软C++编译器编译将光盘内的code文件夹整个到硬盘,如E盘根 ,在上面令行界面输入:如下命令跳转到RayTrace2cd

E:\code\CompilerSwitches\raytrace2\source\RayTrace2\然后清理以前生成的文件:nmake

/f

raytrace2.mak

clean编译文件:nmake

/f

raytrace2.mak

CPP=cl.exe运行渲染图像程序:raytrace2

320

240Press‘g

to

begin

the

renderPress

‘q

to

quit

the

application将屏幕上显示的运行时间记录下来

。用英特尔C++编译器编译先清理以前生成的文件:nmake

/f

raytrace2.mak

clean编译文件:nmake

/f

raytrace2.mak运行渲染图像程序:raytrace2

320

240Press‘g

to

begin

the

renderPress

‘q

to

quit

the

application将屏幕上显示的运行时间记录下来

。C++编译器实验——过程间优化使用过程间优化开关(-Qipo)先清理以前生成的文件:nmake

/f

raytrace2.mak

clean打开-O3开关编译文件:nmake

/f

raytrace2.mak

CF="-Qipo"

LF="-Qipo"运行渲染图像程序:raytrace2

320

240Press

‘g

to

beginthe

renderPress

‘q

to

quit

the

application将屏幕上显示的运行时间记录下来

。C++编译器实验——

导引优化使用

导引优化开关(-Qprof_gen,

-Qprof_use)先清理以前生成的文件:nmake

/f

raytrace2.mak

clean编译产生 导引优化二进制指令:nmake

/f

raytrace2.mak

CF="-Qprof_gen

-Qprof_dir

..\RayTrace2"运行渲染图像程序:raytrace2

320

240Press

‘g

to

begin

the

renderPress

‘q

toquit

the

application将屏幕上显示的运行时间记录下来

。注:因为要生成使用刚才生成的导引优化的记录信息,会消耗大量时间。导引优化信息再次编译:nmake

/f

raytrace2.mak

cleannmake

/f

raytrace2.mak

CF="-Qprof_use

-Qprof_dir..\RayTrace2"注:可忽略“no.dpi

information”提示。运行渲染图像程序:raytrace2

320

240Press

‘g

to

begin

the

renderPress

‘q

toquit

the

application将屏幕上显示的运行时间记录下来

。C++编译器实验——矢量化优化用矢量化开关优化(-QxP)先清理以前生成的文件:nmake

/f

raytrace2.mak

clean打开-O3开关编译文件:nmake

/f

raytrace2.mak

CF="-QxP"运行渲染图像程序:raytrace2

320

240Press

‘g

to

beginthe

renderPress

‘q

to

quit

the

application将屏幕上显示的运行时间记录下来

。C++编译器实验——综合优化使用上述所有优化开关(-O3,-QxP,

IPO

and

PGO)先清理以前生成的文件:nmake

/f

raytrace2.mak

clean打开-O3开关编译文件:nmake

/f

raytrace2.mak

CF="-O3

-QxP

-Qipo

-Qprof_use

-Qprof_dir

..\RayTrace2"

LF="-Qipo"导引优化信息,使用之前第四小节生成的信息即注:不必再次收集可。运行渲染图像程序:raytrace2

320

240Press

‘g

to

begin

the

renderPress

‘q

to

quit

the

application将屏幕上显示的运行时间记录下来

。Lab

1.2:

Vtune

PerformanceyzerVTune性能分析器英特尔VTune性能分析器的主要功能包括:取样功能、调用图功能、计数器监视器以及经过改进的In

调优助手在Windows下同时提供图形化与命令行界面允许选择是否与Visual

Studio

.NET

集成为基于IA-32与英特尔安腾处理器的Linux应用程序提供

支持可以对基于In

PXA250、PXA255

与PXA26x

处理器的应用程序进行取样VTune性能分析器——取样VTune性能分析器中的取样功能可以帮助开发者分辨程序中最消耗时间的函数和模块,并给出操作系统和应用程序的详细视图。VTune性能分析器——调用曲线图调用曲线图通过分析程序运行时函数的 点和出口点,生成一张调用曲线图并且确定调用顺序和显示关键路径。VTune性能分析器——计数器器计数器 器在运行时 系统活动,确定是否会因为可用内存减少或文件输入/输出性能问题而导致应用程序速度变慢。VTune性能分析器——调优助手根据丰富的知识库分辨性能问题,自动

代码改进办法,帮助提高开发者的工作效率。它提供了基于性能计数器的视图,以及关于Windows操作系统和英特尔

处理器的建议,以及源代码的改进建议。性能分析器实验——寻找热点区域问题:gzip.exe中哪个函数消耗了最多的时间?gzip.exe中哪个函数CPI最高?

gzip.exe源代码中哪一行时钟周期最多?gzip.exe是多线程程序吗?Lab

1.3:

In

MKLMKL数学 函数库英特尔数学 函数库(MKL)是一套经过高度优化的、线程安全的数学例程、函数,并在此基础上加入了在

Linux集群环境下的ScaLAPACK(Scalable

LAPACK),它们专门针对计算性能要求很高的科学、工程及金融等领域的应用程序而设计。此内核库的功能领域包括:线性代数——BLAS、LAPACKScaLAPACKPARDISO稀疏矩阵解算器离散

变换(Discrete

Fouriertransforms,DFTs)矢量数学库(Vector

Math

Library,VML)矢量统计库(Vector

Statistical

Library,VSL)——随机数生成器MKL数学函数库性能英特尔安腾2

处理器FFT单双精度,1维实数FFT

在n=2、4、8、16、32、64

和128时速度最多提高了3

倍VMLLn、Log10、Asin、Acos、Sinh、Cosh

函数的性能提高了25-83%长矢量(双精度n>250,000

或单精度n>500,000)的性能平均值提

高了60%以上。这使每个元素的性能限定在小矢量性能的20%以内。VSL和多元 分布 的性能分别提高了

35%

和15%。MKL数学函数库性能(续)英特尔酷睿2

双核处理器BLASZDOTU、ZDOTC-缓存数据的性能提高了10-35%VSL性能提高了大约13%VMLVML

中Div

和Inv

函数的性能提高了2.7

倍Asin

和Acos

函数的性能提高了5-20%其他提升MKL数学函数库实验——矩阵乘法演示了原始计算、一级BLAS、二级BLAS、三级BLAS的性能特征和它们之间的差异。请按照以下实验步骤执行:定位到文件夹code\MKL_Overview\DGEMM,打开文件mkl_lab_solution.c,仔细查看4段不同方法实现同一矩阵乘法的代码;检查文件Makefile中的include和library路径,修改为与本机一致;打开开始菜单->所有程序->In

(R)

Software

Development

Tools->In(R)

C++

Compiler

9.0->Build

Environment

forIA-32Applications,输入:nmake,编译完成后

下会生成一个matrix.exe文件,输入:matrix.exe运行程序,会提示输入矩阵的维数(输入的数字尽量大些,如1000),记录运行结果并观察它们的差异:roll_your_own:

DDOT:

DGEMV:

DGEMM:

MKL默认使用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论