预览加载中,请您耐心等待几秒...
1/7
2/7
3/7
4/7
5/7
6/7
7/7

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

《多核架构及编程技术》设计报告 基于OpenMP的二维方阵相乘及 基于IPP的函数DFT及反变换 学 院:电子信息学院 专 业:通信工程 学 号:2011301200237 姓 名:叶子童 指导老师:谢银波 时间:2013年6月 基于OpenMP的二维方阵相乘 姓名:叶子童专业:通信工程学号:2011301200237 指导教师:谢银波 [设计原理] 声明3个800阶的矩阵,用srand函数对A,B矩阵随机赋值,在主程序中用3个for循环来进行计算,用OpenMP实现循环并行化,用clock()函数统计运算时间并输出时间及C矩阵。 [主要功能] 计算2个随机生成的800阶二维矩阵相乘的结果,统计运算时间并输出结果矩阵。 [设计的主要内容] 实验代码为: #include"stdafx.h" #include<omp.h> #include<stdio.h> #include"stdlib.h" #include<time.h> #include<windows.h> inta[800][800],b[800][800],c[800][800]; intmain() { inti,j,t,k; doubleduration; clock_tstart,finish; for(inti=0;i<800;i++) for(intj=0;j<800;j++) a[i][j]=rand()%100;//随机产生-100的随机整数 for(inti=0;i<800;i++) for(intj=0;j<800;j++) b[i][j]=rand()%100; start=clock(); #pragmaompparallelshared(a,b,c)private(i,j,k) #pragmaompforschedule(dynamic)//循环动态分割成大小为chunk的块,动态分割给线程 for(i=0;i<800;i++) {for(j=0;j<800;j++) {c[i][j]=0; for(k=0;k<800;k++) { c[i][j]+=a[i][k]*b[k][j]; } } } printf("Timetodothecalculateis"); finish=clock(); duration=(double)(finish-start)/CLOCKS_PER_SEC; printf("%2.6fseconds\n",duration); Sleep(2000); for(i=0;i<800;i++) { for(j=0;j<800;j++) { printf("%d",c[i][j]); } printf("\n"); } return0; } 输出的运算时间为3.483s。 基于IPP的函数DFT及反DFT变换 [设计原理] 用DFT_RToC_32f32fc(Ipp32f*pSrc,Ipp32fc*pDst,intlen)函数实现DFT,用DFTInv_CToR_32f32fc(Ipp32f*pSrc2,Ipp32fc*pDst,intlen)实现IDFT,在主程序中用ippsVectorJaehne_32f(pSrc,len,1.0);产生函数y=|sin(ex)|,直接调用2个函数进行运算,用spview显示图像。 [主要功能] 求函数y=|sin(ex)|在区间(0—5120)做单位采样后的DFT及IDFT变换结果,并输出图像。 [设计的主要内容] 实验代码为: #include"stdafx.h" #include"ipp.h" #include"tools.h" #include"stdio.h" #include"math.h" #include"time.h" voidDFT_RToC_32f32fc(Ipp32f*pSrc,Ipp32fc*pDst,intlen) { IppsDFTSpec_R_32f*pDFTSpec; ippsDFTInitAlloc_R_32f(&pDFTSpec,len,IPP_FFT_DIV_INV_BY_N, ippAlgHintFast); ippsDFTFwd_RToCCS_32f(pSrc,(Ipp32f*)pDst,pDFTSpec,0); ippsConjCcs_32fc_I(pDst,len); ippsDFTFree_R_32f(pDFTSpec); } voidDFTInv_CToR_32f32fc(Ipp32f*pSrc2,Ipp32fc*pDst,intlen) { IppsDFTSpec_R_32f*pDFTSp