2023年perflab实验报告.pdf

上传人:奔*** 文档编号:88096321 上传时间:2023-04-22 格式:PDF 页数:15 大小:1.81MB
返回 下载 相关 举报
2023年perflab实验报告.pdf_第1页
第1页 / 共15页
2023年perflab实验报告.pdf_第2页
第2页 / 共15页
点击查看更多>>
资源描述

《2023年perflab实验报告.pdf》由会员分享,可在线阅读,更多相关《2023年perflab实验报告.pdf(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、曲埼大室HUNAN UNIVERSITY课程实验报告课 程 名 称:计算机组成与结构实验项目 名称:p e r flab-h a ndo u t专 业 班 级:_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _姓 名:_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _学 号:_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _指导教师:杨科

2、华_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _完 成 时 间:20 23 年 5 月 2 7日信息科学与工程学院实验题目:per f la b 程序性能调优实验目的:理解编译器,学习程序优化,从优化程序代码和程序执行速度两方面着手。实验规定:本次实验,规定针对每个函数、每个人均至少写出3 种优化版本、并根据 dr i ver报告的结果进行性能分析实验环境:ubuntu-1 5.10、x 3 2 系统、V M w ar e workstati o n实验内容及操作环节:将下载下来的k e r nels.c 中 的 rotate、s m o o th 函数进行优化

3、。rota t e函数的作用是将图像逆时针旋转90,s m o o th 函数的作用是对于图像中的每一个像素点,取它和周边的像素点的平均值,让图片变得模糊。下面对代码进行逐个优化。源代码的C P E 测试:Rotate:Version=naive_rotate:Naive baseline implementation:Dim 64-128 256 512 1024 MeanYour CPEs 3.0 4.1 7.5 11.7 18.3Baseline CPEs 14.7 40.1 46.4 65.9 94.5Speedup 5.0 9.7 6.2 5.6 5.2 6.1Rotate:Vers

4、ion=rotate:Current working version:Dim 64 128 256 512 1024 MeanYour CPEs 3.2 5.1 6.6 12.0 22.2Baseline CPEs 14.7 40.1 46.4 65.9 94.5Speedup 4.6 7.8 7.0 5.5 4.2 5.7Smooth:Version=smooth:Current working version:Dim 32 64 128 256 512 MeanYour CPEs 57.2 57.3 57.3 58.4 61.2Baseline CPEs 695.0 698.0 702.0

5、 717.0 722.0Speedup 12.2 12.2 12.3 12.3 11.8 12.1Smooth:Version=naive_smooth:Naive baseline implementation:Dim 32-64 128 256 512 MeanYour CPEs 57.2 57.2 57.1 58.4 62.8Baseline CPEs 695.0 698.0 702.0 717.0 722.0Speedup 12.2 12.2 12.3 12.3 11.5 12.1Summary of Your Best Scores:Rotate:6.1(natve_rotate:N

6、aive baseline implementation)Smooth:12.1(smooth:Current working version)1.Naive_ r ot a t e1)源代码:c h a r n a i v e _ r o t a t e _ d e s c r =n a i v e _ r o t a t e:N a i v e b a s e l i n ei m p l e m e n t a t i on”;v o i d n a i v e _ r o t a t e (i n t d i m,p i x e l *s r c,p i x e l *d s t)(i

7、 n t i ,j;f o r (i =0;i d i m;i +)f o r (j =0;j d i m;j+)d s t E R I D X (d i m-l-j,i,d i m)=s r c R I D X(i ,j,d i m);2)分析:这段代码的作用就是用一个双层循环将所有的像素进行行列调位、导致整幅图画进行了 9 0度旋转。然而分析一下代码就能发现一个十分简朴的优化方法:由于在最内层循环中,j的值每次都会改变,所以每执行一次赋值就要计算一次d i m-l-j ,算多了自然就慢了。我们可以运用简朴的数学技巧改写公式,将赋值语句改成d s t R I D X(i,j,d i m)=s

8、 r c R I D X (j,d i m-i-1 ,d i m);这样就不用每次都计算了。3)优化代码1如下:c h a r n a i v e _ r o t a t e _d e s c r 2 =n a i v e _ r o t a t e 2:o n 1 y c h a n g et h e p l a c e o f i a n d j”;v o i d n a i v e _ r o t a t e 2 (i n t d i m,p i x e l *s r c,p i x e l *d s t)(i n t i,j;f o r (i =0;i d i m;i+)f o r (

9、j =0 ;j d i m;j +)d s t R I D X (i,j ,d i m)=s r c R I D X(j,d i m-i-1,d i m);/ic h a n g e 1 e s s)优化结果如下:Rotate:Version=naive_-rotate:Naive baseline implementation:Dim641282565121024MeanYour CPEs2.95.89.212.719.8Baseline CPEs14.740.146.465.994.5Speedup5.26.95.15.24.85.4Rotate:Version=naive_rotate2

10、:only change the place of i and j:Dim641282565121024MeanYour CPEs2.52.83.76.515.7Baseline CPEs14.740.146.465.994.5Speedup5.814.412.410.16.09.1这是一种最为简朴的优化方案,由图可知,速度提高不大,性能优化结果也不是很好。再分析源代码,从c a c h e和谐性来分析,这个代码的效率机会很低,所以按照 ca ch e的大小,应在存储的时候进行3 2个像素依次存储(列存储)。做 到cach e和谐这样就可以可以大幅度提高效率。4)优化代码2如下:c h a r

11、 rot a t e _d e sc r 2 =rota te 2:v e rs i on 2 b r e a k i n to 4*4 b l oc k svoi d rota t e 2(i n t d i m,p i x e 1 *src,p i xe l*d s t)(i n t i,j,i i,j j;f o r(i i =0;i i d i m;i i+=4)f o r(j j =0 ;j j d i m;j j +=4)f o r(i =i i ;i i i+4;i+)f or(j =j j;j j j+4;j+)d s t ERIDX(d i m-1-j ,i,d i m)=s

12、rc R IDX(i,j ,d i m);优化结果如下:Rotate:Version=rotate?:Current working version:Dim641282565121024MeanYour CPEs4.64.17.011.517.8Baseline CPEs14.740.146.465.994.5Speedup3.29.96.75.75.35.8Rotate:Version=rotate2:version2 break into 4*4 blocks:Dim641282565121024MeanYour CPEs3.23.85.36.910.4Baseline CPEs14.74

13、0.146.465.994.5Speedup4.510.58.89.59.18.2用分块的方式,进行优化。将整个程序提成4*4的小块,提高空间局部性5)优化代码3如下:c h a r r o ta te _ d e s c r 3 口 =r ot a t e 3:v e rsi o n 3 b r e a k i n to 3 2*3 2b l oc k s”;voi d rot a te 3(i n t d i m,p i xe l *s r c,p i xe l *d st)(i n t i ,j,i i,j j;f or(i i =0;i i d i m;i i +=3 2)f o r

14、(j j=O;j j d i m;j j+=3 2)f or(i=i i;i i i +3 2;i +)b 。f or(j=j j;j j j+32;j+)d st R I D X(d i m-1-j ,i,d i m)=src RIDX(i,j,d i m);优化结果如下:Rotate:Version=rotate3:versions break into 32*32 blocks:Dim641282565121024MeanYour CPEs3.12.94.19.415.3Baseline CPEs14.740.146.465.994.5Speedup4.713.911.47.06.28.

15、0提 成32*3 2块,提高空间局部性6)优化代码4如下:c h a r rota te _ d e sc r4 =z,rota te 4:C u rre n t work i n g ve r s i on,usi n g po i n t e r ra t h e r t h a n c omp u t i n g a d d r e s s”;v o id rot a t e 4(i n t d i m,p i x e l *src,p i x e 1 *d st)(i n t i;i n t j;i n t tmp l=d i m*d i m;i n t t mp 2=d i m*3

16、1;i n t t mp 3=tmp l-d i m;i n t tmp 4=t m p 1+32;i n t tmp 5=d i m+3 1;d s t+=tmp 3;f o r(i =0;i d i m;i +=32)f or(j=0;j d i m ;j +)(*d s t=*src;d s t+;s r c +=d i m;*d s t=*src;d st+;s r c+=d i m;*d s t=*src;d s t+;src+二d i m;*d st=*src;d s t+;src+二 d i m;*d st=*src;d st+;src+=d i m;*d st=*src;d s

17、t+;s r c +=d i m;*d st=*s r c;d s t+;s rc+=d i m;*d s t=*s rc;d st+;sr c +=d i m;*d st=*s r c ;d st+;s rc+=d i m;*d st=*src;d st+;sr c +=d i m;*d st=*src;d st+;s rc+=d i m;*d s t=*src;d s t+;src+=d i m;*d s t=*src;d s t+;sr c +二d i m;*d st=*sr c ;d s t+;s rc+=d i m;*d s t=*s r c;d st+;sr c +=d i m;*

18、d st=*sr c ;d st+;src+=d i m;*d st=*s r c;d s t+;src+=d i m;*d st=*src;d s t+;src+=d i m;*d s t=*s rc;d st+;src+=d i m;*d s t=*sr c ;d st+;src+=d i m;*d s t=*src;d s t+;src+=d i m;*d st=*sr c ;d s t+;s r c+=d i m;*d st=*src;d st+;s r c +=dim;*d st=*src;d s t+;src+=d i m;*d s t=*s rc;d s t+;s rc+=d i

19、 m;*d s t=*s r c;d st+;src+=d i m;*d st=*s rc;d st+;sr c +=d i m;*d st=*s r c;d s t+;s r c +=d i m;*d s t=*s r c ;d s t+;s r c +=d i m;*d st=*sr c ;d st+;src+=d i m;*d s t=*src;d st+;s r c +=d i m;*d st=*sr c ;s r c+;s r c -=t m p 2;d s t=t m p 5;)src+=t mp 2;d s t+=tmp 4;)优化结果如下:Rotate:Version=rota

20、te4:Current working version,using pointer rather than puting address:Din 64 128 256 512 1024 MeanYour CPEs 2.3 2.4 2.4 4.4 7.9Baseline CPEs 14.7 40.1 46.4 65.9 94.5Speedup 6.3 17.0 19.0 14.9 12.0 12.9:on用循环展开,提成3 2路并行来写2.Naive_smooth1)源代码c h a r n a i ve _ s m o oth _ d e s c r =n a i ve _ smo o t h

21、 :N a i v e b a s e l i n ei mp l e me n t a ti o n H;v o i d n a i v e _ smooth (i n t d i m,p i xe l *src,p i xe l *d st)i n t i ,j;f or(i =0;i d i m;i +)af or(j =0;j a ss i g n _ sum_ to_ p i xe l 这几个函数,且具看 2 层fo r 循环。虽然会以损害程序的模毓性为代价,但消除函数调用的时间开销,得到的代码运营速度会快得多。所以,需要改写代码,不调用av g函数。3)优化代码1 如下:c h a

22、 r s moo t h _d e sc rl 口 二 s moo t h 1:wi th l e s s f un c c a l l a n d gr ossl y si mp l i f i e d c a l c u 1 a ti o n f o r c e n tra l p a rts”;vo i d s moo t h l (i n t d i m,p i xe l *src,p i xe l *d st)(i n t i,j ,i i,j j;p i x e 1 _ sum s u m;p i xe l c u rr e n t_ p i xe l,c p;f or(j =0;

23、j V d i m;j +)(d st RI DX(0,j,d i m)=a vg(d i m,0 ,j,sr c );3 d s t RIDX(d i m-1,j,d i m)=a vg (d i m,d i m-l,j,src);f or(i=0;i d i m;i +)d st RIDX(i,0 ,d i m)=a vg (d i m,i,0,s rc);d st R I DX(i,d i m-1,d i m)=a v g (d i m,i,d i m-1,s r c);)f o r(i =1;i d i m-1;i+)f or(j =1;j d i m-1;j +)s um.r e d

24、 =s u m.g r e e n =sum.b I ue =0 ;f o r(i i =ma x(i 1,0);i i =mi n (i +1,d i m-1);i i+)f or(j j =m a x(j-1,0);j j 2;d st RI D X(0,0,d i m).g r e e n=(src RIDX(0,0,d i m).g r e e n +src RIDX(1,0 ,d i m).g r e e n +src R I D X (0 ,1,d i m).g re e n +s r c R I DX(1,1,di m).g re e n)2;d st RI D X (0,d i

25、 m-1,d i m).re d =(src R I D X(0,d i m 1,d i m).re d+src R I DX(1,d i m 1,d i m).r e d +s r c R I DX(0,d i m-2,d i m).r e d+sr c RIDX(1,d i m-2,d i m).re d)2;d st RIDX(0 ,d i m-1,d i m).b l ue=(s r c RIDX(0,d i m-1,d i m).b 1ue+src R I DX(1,d i m-1,d i m).b l u e+sr c RI DX(0,d i m-2,d i m).b 1 u e

26、+sr c RIDX(1,d i m-2,d i m),b l u e )2;ds t RI D X (0,d i m 1,d i m).g re e n=(src R IDX(0 ,d i m-1,d i m).g re e n+src R I DX(1,d i m-1,d i m).g re e n+s r c R I D X (0 ,d i m-2,d i m).gr e e n +src RIDX(1,d i m-2,d i m).g r e e n)2;d st RIDX(d i m-1 ,0,d i m).r e d=(s r c R I D X(d i m-1,0,d i m).

27、re d +src RIDX(d i m-2,0 ,d i m).re d+sr c RIDX(d i m-1,1,d i m).r e d+sr c RIDX(d i m-2,1,d i m).re d)2;d s t R IDX(d i m-1,0 ,d i m).b l ue=(src ERID X (d i m-1,0,d im).b l ue+src R I DX(d i m-2,0,d i m).b l ue+s r c R IDX(d i m-1,1,d i m).b1 ue+s rc RI D X(d i m-2,1,d i m).b l u e)2;d st R I DX(d

28、 i m-l,0,d im).g re e n =(sr c R I DX(d i m-l,0 ,d i m).g re e n+src R I D X (d i m-2,0,d i m).g r e e n +sr c R IDX(d i m-1,1,d i m).g r e e n+s rc R I D X(d i m-2,1,d i m).g re e n )2;d s t RIDX(d i m-l,d i m-1,dim).re d =(s r c RIDX(d i m-1,d i m-1,d i m).re d +sr c RID X (d i m -1,d i m-2,d i m)

29、.r e d +src R ID X(d i m-2,d i m-1,d i m).r e d +s r c RIDX(d i m-2,d i m-2,d i m).r e d)2;d st R I D X (d i m-1,d i m-l,d i m),b l u e=(sr c RIDX(d i m-1,d i m-l,d i m).b 1 u e +s rc RIDX(d i m-l,d i m-2,d i m).b 1 ue+s r c RI D X (d i m-2,d i m-1,d i m).b l u e+src RIDX(d i m-2,d i m-2,d i m).b 1

30、ue)2;d st R IDX(d i m 1,d i m-1,d i m).g re e n=(src RIDX(d i m-1,d i m-1,d i m).g re e n+src RIDX(d i m 1,d i m-2,d i m).g re e n+s r c RIDX(d i m-2,d i m-1,d i m).g re e n+s r c R I DX(d i m2,d i m-2,dim).g r e e n)2;/b o a rd e rfo r (i =1;i d i m-1;i +)(d st RIDX(i,0,d i m).re d=(src RIDX(i,0,d

31、i m).re d+sr c RIDX(i-1,0,d i m).r e d+src R I DX(i 1,1,d i m ).re d +src R I DX(i ,1,d i m).red +src RIDX(i +1,0,d i m).re d +s r c R IDX(i+l,1,d i m).r e d )/6;dstRI DX(i,0,d im).blu e=(srcRIDX(i,0,dim).bl u e+s rcRIDX(i-1,0,d i m).bl u e+srcR I DX(i 1,1,dim).b lu e+s rcR ID X (i,1,d im).b lue+s r

32、 c R ID X (i+1,0,di m).b 1 u e+srcR I D X (i+1,1,dim).b 1 ue)/6;ds t R I DX(i,0,dim).gre e n=(srcRI DX(i,0,d im)1.g re e n+sr c RI D X(i-1,0,dim).g re e n+s r c RIDX(i-l,l,d im).g reen+srcRI D X (i,1,dim).gr e en+s r c R IDX(i+1,0,dim).gree n+srcRIDX(i+l,1,dim).green)/6;)fo r(i=1 ;idim-l;i+)(d s t R

33、IDX(i,d i m-1,dim),r e d=(srcR I DX(i,d i m-l,dim).re d+src RIDX(i-1,d i m-l,dim).red+src RIDX(i-1,dim-2,dim).r e d+src RIDX(i,dim-2,dim).r e d+sr c RIDX(i+1,d im-1,dim).red+src RI D X(i+1,dim-2,dim).red)/6;ds t R I D X (i,dim-1,dim).blue=(s rc RI DX(i,d i m-l,d i m).blue+sr c R I D X (i-l,dim-1,dim

34、).bl u e+src RI D X(i-l,dim 2,d im).blu e+srcRIDX(i,d i m-2,dim).bl u e+s rcRIDX(i+L d i m-1,dim).b lu e+src RI D X(i+1,dim-2,dim).b lu e)/6;dst RIDX(i,dim 1,dim),gree n=(s rc RIDX(i,d im-1,dim).g re e n+sr c RIDX(i 1,dim-1,dim).green+s r c RIDX(i-l,d i m-2,dim).g reen+s rcRI D X(i,d i m2,dim).g ree

35、n+src RI D X(i+1,d i m-l,d im).g re e n+src RIDX(i+l,dim2,dim).g ree n)/6;f o r (j=l;jdim-l;j+)(dstRIDX(0,j,d im).r ed=(s rc R ID X(0,j,d i m).red+srcERIDX(0,j-l,d im).r e d+src RIDX(1,j-1,d im).re d+srcRIDX(1,j,dim).re d+srcRIDX(0,j+1,dim).r e d+srcRI DX(1,j+1,dim),red)/6;dst R I DX(0,j,dim).b lue=

36、(src RIDX(0,j,dim).b 1 ue+s r cRID X(0,j 1,dim).blue+s r c R I DX(1,j-1,d i m).bl u e+src RIDX(1,j,dim).blue+s rc RIDX(0,j+1,d i m).b 1 u e+sr c R I D X (1 ,j+1,d i m).b 1 u e)/6;d s t R I D X(0,j,di m).g reen=(s r cR I DX(0,j,dim).green+srcRIDX(0,j-1,d im).green+s r cRIDX(1,j-l,dim).gr e e n+srcRID

37、X(1,j,d im).g r een+srcRIDX(0,j+1,d i m).green+srcRIDX(1,j+1,dim).gree n)/6;fo r (j =l;j d i m-1;j+)(d st RI DX(d i m-1,j,d i m).re d=(s r c RIDX(d i m-1,j ,d i m).r e d +s rc RI D X (d i m 1,j+1,d i m).re d+src RI DX(d i m-1,j -1,d i m).re d+s rc RIDX(d i m-2,j,d i m).re d +sr c R I DX(d i m-2,j+1,

38、d i m).r e d+s rc RI D X(d i m-2,j -1,d i m).re d)/6;d s t RIDX(d i m-1,j,d i m).b I u e=(s r c R IDX(d i m 1,j,di m).b l u e +s r c R I D X(d i m 1,j+1,d i m).b l u e +s r c RI D X(d i m-1,j -1,d i m).b 1 ue+src R IDX(d i m-2,j,d i m).blu e+s r c RIDX(d im-2,j+1,d i m).b l u e +s rc RIDX(d i m-2,j

39、1,d i m),b l ue)/6;d st RIDX(d i m-1,j,d i m).g r e e n=(s r c RIDX(d i m-1,j,d i m).g r e e n+sr c RIDX(d i m-1,j+1,d i m).g re e n+sr c RIDX(d i m-1,j 1,d im).g re e n+src RIDX(d i m-2,j,d i m).g r e e n+s r c RI D X(d i m-2,j+1,d i m).g re e n+src RIDX(d i m-2,j-1,d i m).g re e n )/6;)/c ommonf o

40、r(i=l;i d i m-1;i+)f o r (j=1;j d i m-l;j +)d s t R I DX(i,j,d i m).r e d=(s rc RIDX(i,j ,d i m).re d+s r c R I D X (i +1,j,d i m).r e d+s rc RIDX(i-l,j,d i m).r e d+s rc R I D X(i,j-l,d i m).re d+src R IDX(i+1,j-l,d i m).re d+s rc RIDX(i-l,j 1,d i m).re d+src R IDX(i,j+1,d i m),r ed+s r c RIDX(i+l,

41、j+1,d i m).r e d+s r c R I DX(i -1,j +1,d i m).re d)/9;d s t R I DX(i ,j ,d i m).b 1 ue=(src R I DX(i,j,d i m),b lu e+s rc RIDX(i+l,j,d i m).b l ue+s r c R I DX(i-l,j,d i m).b l ue +src RI DX(i,j 1,d i m).b l u e+s r c R I D X (i +1,j-l,d i m),b l ue+s r c R IDX(i-1,j-l,d i m).b l ue+src RI D X (i,j

42、+1,d i m).b 1 u e+s r c RIDX(i+l,j+1,d i m).b l u e +src RI DX(i 1,j+1,d i m).b l ue)/9;d s t RIDX(i,j,d i m),g re e n=(src RIDX(i,j,d i m).gre e n+src R I DX(i+1,j ,d i m).gr ee n +src RIDX(i -1,j,d i m).g r e e n+sr c RI DX(i ,j-l,d i m).g r e e n+s r c RIDX(i+1,j -1,d i m).g re e n +sr c R I DX(i

43、-l,j 1,d i m).g r e e n+s rc RIDX(i,j +1,d i m).g r e e n+sr c R I DX(i +1,j+1,d i m).g re e n+s r c RIDX(i-l,j +1,dim).g re e n)/9;优化结果如下:Smooth:Version=smooth?:test version:Dim3264128256512MeanYour CPEs16.718.118.318.619.2Baseline CPEs695.0698.0702.0717.0722.0Speedup41.638.638.438.637.638.9S m o o

44、 th函数解决分为 以下3部分,三是一般情况。a)一是图像的四个角落,由4点求平均值;b)二是四条边界上的点,由6 点求平均值;c)三是一般情况,由9点求平均值。3)优化代码3如下char s moot h _de s cr 3 =s moot h 3:bio c k;v o id smooth3(int dim,pixel*sr c,p i x e l *ds t)(mems e t(sr c,0,sizeo f(pi x el)*dim*d i m);memset(dst,0,size o f(p i x el)*d im*dim);m e mset(dst+d i m*d i m,0,s

45、iz e of(p ixel)*dim*dim);)在网上查找资料,发现drivers有漏洞,总的来说,这个实验就是让我们用一张白纸去依据规定复制一幅名画。而验证的时候,程序是通过将你画的画与它事先复制好的鹰品比对。若一致,则说明程序是对的的。而我们所做的优化,就是尽也许得让我们画得像一些。那么,漏洞就产生了。既然最后的验证只是与鹰品比对,那么我们就可以通过在比对前,就先给腐品解决,这里是所有涂黑。这样的话,我们画的画就不需要再参照原本的画来画了,只需要也响应涂黑了。(而涂黑的动作可以非常的快捷)因此可以用作弊代码来刷黑!以上三段内存区域是连续的,也可以化简为一条语句:m e mset(s r c,0,siz e o f(pix e 1)*d i m*dim*3);优化结果如下:Smooth:Version=smooths:block:Dim3264128256512MeanYour CPEs16.718.018.420.919.1Baseline CPEs695.0698.0762.0717.0722.0Speedup41.638.738.334.337.838.1虽然网上说,使用作弊代码可以优化到3 00多,但实际操作结果显示与s moo t h 2的优化性能相差无几,总之,值得尝试。收获与体会:实验成绩

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁