软件开发实训报告

软件开发实训报告

ID:12824632

大小:78.00 KB

页数:6页

时间:2018-07-19

软件开发实训报告_第1页
软件开发实训报告_第2页
软件开发实训报告_第3页
软件开发实训报告_第4页
软件开发实训报告_第5页
资源描述:

《软件开发实训报告》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、软件开发实训报告课程名称:软件开发实践班级:完成日期:2011/6/27姓名:学号:指导教师:实验名称:矩阵乘优化软件实验序号:实验成绩:一、实验名称矩阵乘优化软件二、实验目的及要求1.C语言实现矩阵x向量算法2.矩阵要求CSR压缩存储格式,测试集选用佛罗里达州立大学测试集http://www.cise.ufl.edu/research/sparse/matrices//3.SSE优化,LOOPunrolling,softwareprefetch软件预取,多线程并行4.给出测试界面,运行时间及加速比结果三、实

2、验环境操作系统(开发):Windows7/WindowsXP编程软件(开发):MicrosoftVisualStudio2008操作系统(测试):Windows7硬件环境(测试):Acer4741G,i5双核处理器460M四、实验内容根据实验要求,按照路径组合的形式将其分为三类:(1)读入数据至内存方式:单线程读取文件、多线程读取文件、CSR格式读入(2)乘法计算:单线程、多线程(3)SSE优化:有SSE优化、无SSE优化3*2*2=12种再加上传统算法一共13种算法组合五、算法描述及实验步骤 (1)程序使用

3、WIN32提供的多线程编程的接口(windows.h)函数实现,实验中用到的函数如下:HANDLEh=CreateThread(NULL,0,MulThread,pParam,0,NULL);//创建多线程DWORDWINAPIMulThread(LPVOIDpParam);//线程函数WaitForSingleObject(h,INFINITE);//等待线程完成MulParam*pParam=(MulParam*)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,si

4、zeof(MulParam));//为线程分配数据,实现传参MulParam*p=(MulParam*)pParam;//线程内读取参数HeapFree(GetProcessHeap(),0,pParam);//线程内结束后销毁参数HANDLEhMutex=CreateMutex(NULL,FALSE,NULL);//创建互斥变量6WaitForSingleObject(hMutex,INFINITE);//进入临界区ReleaseMutex(hMutex);//退出临界区HANDLEinputSemapho

5、re;//创建信号量WaitForSingleObject(inputSemaphore,INFINITE);//查看临界资源是否剩余ReleaseSemaphore(inputSemaphore,1,NULL);//释放临界资源(2)使用消费者模型实现文件预取,具体实现是在内存中申请一块区域作为缓存,分别被读写线程共享,读数据与模型中的消费者对应,写数据与模型中的生产者对应。使用信号量机制实现读写同步,读写操作时均要获得读锁或写锁才能操作,以实现互斥访问。具体算法实现如下:queueinput;q

6、ueueoutput;HANDLEinputMutex=CreateMutex(NULL,FALSE,NULL);HANDLEoutputMutex=CreateMutex(NULL,FALSE,NULL);/**缓存数据使用后,将其设为可写状态*/voidPushInput(int_i){WaitForSingleObject(inputMutex,INFINITE);input.push(_i);ReleaseMutex(inputMutex);ReleaseSemaphore(inputSem

7、aphore,1,NULL);}/**缓存数据写满后,将其设为可读状态*/voidPushOutput(int_i){WaitForSingleObject(outputMutex,INFINITE);output.push(_i);ReleaseMutex(outputMutex);ReleaseSemaphore(outputSemaphore,1,NULL);}/**获缓存写位置*/intPopInput(){intvalue;WaitForSingleObject(inputSemaphore,INF

8、INITE);6WaitForSingleObject(inputMutex,INFINITE);value=input.front();input.pop();ReleaseMutex(inputMutex);returnvalue;}/**获取缓存读位置*/boolisRight=true;intPopOutput(){intvalue;WaitForSingleObject(outputSem

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。