欢迎来到天天文库
浏览记录
ID:9021521
大小:71.00 KB
页数:4页
时间:2018-04-15
《实验三:多线程编程方法学》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、实验三:多线程编程方法学模块一:IntelParallelStudio基本使用一ParallelAmplifier的应用4确保编译正确通过。Ctrl+F5运行记录运行时间s。9选择“Bottom-up”选项,将会看到函数运行情况和CPU使用情况。-4-在本项目中threadFunction()函数执行时间最长,执行时间s。10结论:如果将本项目并行化,则应将threadFunction()函数并行化。二ParallelInspector的应用6在“summary”选项中将会看到项目中存在的问题是创建
2、线程函数出错7双击错误提示,进入源代码,有问题的代码是threadHandles[i]=CreateThread(NULL,0,threadFunction,(LPVOID)&tNum[i],0,NULL);9编译执行,运行时间________。此时,虽然代码执行结果正确,但是运行效率极低。13选择“Bottom-up”选项,将会看到项目中的线程同步过程。分析线程同步过程中存在的问题是多个线程同时访问和离开临界区时,会出现长时间的等待14继续优化代码,达到满意优化效果。优化代码后,运行时间_____
3、___。代码如下:-4-staticlongnum_steps=10000000;//将迭代的次数适当的缩减EnterCriticalSection(&gCS);sum=sum+4.0/(1.0+x*x);//computepartialsumsateachthLeaveCriticalSection(&gCS);模块二:多线程编程综合练习一编译执行串行代码2编译PrimeSingle项目成功后,打开项目属性对话框,通过ConfigurationProperties中的Debugging,在Comm
4、andArguments参数中输入12000,如下图所示。记录执行结果,质数个数:303,执行时间:0.03s3将CommandArguments参数中输入15000000,记录执行结果,质数个数:669,执行时间:0.06s二用ParallelAmplifier工具查找PrimeSingle项目的热点8选择“Bottom-up”选项,将会看到函数运行情况和CPU使用情况。在本项目中ShowProgress()函数执行时间最长,执行时间0.015s。9结论:如果将本项目并行化,则应将ShowProg
5、ress()函数并行化。三编译执行并行代码2打开OpenMP开关,编译PrimeOpenMP项目,确认编译通过后,将CommandArguments参数修改为15000000。多次执行记录执行结果,质数个数:348513,执行时间:56.57s质数个数:348513,执行时间:66.57s执行结果的不唯一,说明程序存在问题。四用ParallelInspector工具查找PrimeOpenMP项目中存在的问题4在“summary”选项中将会看到项目中存在的问题是_数据有冲突7修正后程序输出结果(参数为
6、15000000):质数个数:348513,执行时间:7.97s加速比:8.50五性能提升——减少printf语句的调用次数2修正后程序输出结果(参数为15000000):-4-质数个数:348513,执行时间:6.81s加速比:10.15六性能提升——用InterlockedIncrement代替critical2修正后程序输出结果(参数为15000000):质数个数:348513,执行时间:4.45s加速比:15.13简答与思考实验总结-4-
此文档下载收益归作者所有