锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久久久亚洲AV片无码下载蜜桃,久久久精品人妻一区二区三区四,亚洲AV无码久久http://www.shnenglu.com/bennycen/category/17397.htmlzh-cnThu, 10 May 2012 19:04:15 GMTThu, 10 May 2012 19:04:15 GMT60姘存枃涓綃?-鍩轟簬CUDA鐨勭煩闃電浉涔?/title><link>http://www.shnenglu.com/bennycen/archive/2011/07/26/151879.html</link><dc:creator>bennycen</dc:creator><author>bennycen</author><pubDate>Tue, 26 Jul 2011 09:01:00 GMT</pubDate><guid>http://www.shnenglu.com/bennycen/archive/2011/07/26/151879.html</guid><wfw:comment>http://www.shnenglu.com/bennycen/comments/151879.html</wfw:comment><comments>http://www.shnenglu.com/bennycen/archive/2011/07/26/151879.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.shnenglu.com/bennycen/comments/commentRss/151879.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/bennycen/services/trackbacks/151879.html</trackback:ping><description><![CDATA[<div>榪欏嚑澶╃爺絀朵簡涓涓婥UDA錛屽彂鐜板叾騫惰鐨勬濇兂鍜屾櫘閫氱殑CPU澶氱嚎紼嬫濇兂涓嶅お涓鑷達紝浣嗚繕鏄尯涓嶉敊銆備富瑕佹槸灝嗕換鍔″垝鍒嗘垚涓涓釜block錛岀劧鍚庢瘡涓猙lock閲岄潰鍐嶅垝鍒嗘垚緇嗙殑綰跨▼銆傜劧鍚庢瘡涓嚎紼嬪仛鑷繁鍋氱殑<br />浜嬫儏銆傝繖縐嶅茍琛屾濇兂寰堥傜敤浜庡儚鐭╅樀榪愮畻榪欎簺鍏冪礌涓庡厓绱犱箣闂寸殑榪愮畻騫朵笉鑰﹀悎寰楀緢鍘夊錛屼絾鏁翠綋鏁版嵁寰堝ぇ鐨勬儏鍐碉紝榪欏彧鏄垜瀵笴UDA鐨勫垵姝ユ劅瑙夈?br />鐭╅樀鐩鎬箻鐨凜PU紼嬪簭濡備笅錛?/div><br /> <div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000">//</span><span style="color: #008000">C = A*B</span><span style="color: #008000"><br /></span><span style="color: #0000ff">void</span><span style="color: #000000"> MatrixMulCPU(</span><span style="color: #0000ff">float</span><span style="color: #000000">*</span><span style="color: #000000"> _C,</span><span style="color: #0000ff">const</span><span style="color: #000000"> </span><span style="color: #0000ff">float</span><span style="color: #000000"> </span><span style="color: #000000">*</span><span style="color: #000000">_A,</span><span style="color: #0000ff">const</span><span style="color: #000000"> </span><span style="color: #0000ff">float</span><span style="color: #000000"> </span><span style="color: #000000">*</span><span style="color: #000000">_B,</span><span style="color: #0000ff">int</span><span style="color: #000000"> _wa,</span><span style="color: #0000ff">int</span><span style="color: #000000"> _ha,</span><span style="color: #0000ff">int</span><span style="color: #000000"> _wb)<br />{<br />    </span><span style="color: #0000ff">float</span><span style="color: #000000"> sum </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">;<br />    </span><span style="color: #0000ff">for</span><span style="color: #000000"> (</span><span style="color: #0000ff">int</span><span style="color: #000000"> i </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">; i </span><span style="color: #000000"><</span><span style="color: #000000"> _ha; </span><span style="color: #000000">++</span><span style="color: #000000">i)<br />    {<br />        </span><span style="color: #0000ff">for</span><span style="color: #000000"> (</span><span style="color: #0000ff">int</span><span style="color: #000000"> j </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">; j </span><span style="color: #000000"><</span><span style="color: #000000"> _wb; </span><span style="color: #000000">++</span><span style="color: #000000">j)<br />        {<br />            sum </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">;<br />            </span><span style="color: #0000ff">for</span><span style="color: #000000"> (</span><span style="color: #0000ff">int</span><span style="color: #000000"> k </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">; k </span><span style="color: #000000"><</span><span style="color: #000000"> _wa; </span><span style="color: #000000">++</span><span style="color: #000000">k)<br />            {<br />                sum </span><span style="color: #000000">+=</span><span style="color: #000000"> (</span><span style="color: #0000ff">float</span><span style="color: #000000">)_A[i</span><span style="color: #000000">*</span><span style="color: #000000">_wa</span><span style="color: #000000">+</span><span style="color: #000000">k]</span><span style="color: #000000">*</span><span style="color: #000000">(</span><span style="color: #0000ff">float</span><span style="color: #000000">)_B[k</span><span style="color: #000000">*</span><span style="color: #000000">_wb</span><span style="color: #000000">+</span><span style="color: #000000"> j];<br />            }<br />            _C[i</span><span style="color: #000000">*</span><span style="color: #000000">_wb</span><span style="color: #000000">+</span><span style="color: #000000">j] </span><span style="color: #000000">=</span><span style="color: #000000"> (</span><span style="color: #0000ff">float</span><span style="color: #000000">)sum;<br />        }<br />    }<br />}</span></div><br /> <div>浠庝笂闈㈠彲浠ョ湅鍑猴紝C(i,j) = sum { A(i,k)*B(k,j) } 0<=k < _wa;鑰﹀悎紼嬪害寰堝皬錛屾墍浠ユ垜浠彲浠ラ氳繃鍒掑垎鍖哄煙鐨勬柟娉曪紝璁╂瘡涓嚎紼嬭礋璐d竴涓尯鍩熴?br />鎬庝箞鍒掑垎鍛紵棣栧厛鏈鍒濈殑鎯蟲硶鏄姣忎竴涓嚎紼嬭綆椾竴涓狢(i,j)錛岄偅涔堜及綆椾竴涓嬶紝搴旇闇瑕乭eight_c*width_c錛屼篃灝辨槸ha*wb涓嚎紼嬨傝繘涓姝ワ紝鎴戜滑灝嗙煩闃墊寜涓涓ぇ鏂規牸Grid鍒掑垎錛屽鏋滀竴涓?br />鏂規牸Grid澶у皬鏄?6*16錛岄偅涔堢煩闃?0*48鐨勫彲浠ヨ〃紺轟負5(*16) * 3(*16)錛屽嵆16*16涓ぇ鏍煎瓙(block)錛屾瘡涓涓牸瀛愬唴錛岃嚜鐒跺氨鏄?height_c/16) *(width_c/16)涓嚎紼嬩簡銆?br />濂戒簡錛屽垝鍒嗗畬鍚庯紝鍐呮牳浠g爜濡備笅錛?/div>璁$畻鐗堟湰0錛?br /> <div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000">__global__ </span><span style="color: #0000ff">void</span><span style="color: #000000"> matrix_kernel_0(</span><span style="color: #0000ff">float</span><span style="color: #000000">*</span><span style="color: #000000"> _C,</span><span style="color: #0000ff">const</span><span style="color: #000000"> </span><span style="color: #0000ff">float</span><span style="color: #000000">*</span><span style="color: #000000"> _A,</span><span style="color: #0000ff">const</span><span style="color: #000000"> </span><span style="color: #0000ff">float</span><span style="color: #000000"> </span><span style="color: #000000">*</span><span style="color: #000000">_B,</span><span style="color: #0000ff">int</span><span style="color: #000000"> _wa,</span><span style="color: #0000ff">int</span><span style="color: #000000"> _wb)<br />{<br />    </span><span style="color: #0000ff">float</span><span style="color: #000000"> sum </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">;<br />    </span><span style="color: #008000">//</span><span style="color: #008000">鎵懼嚭璇ョ嚎紼嬫墍鍦ㄧ殑琛屽垪</span><span style="color: #008000"><br /></span><span style="color: #000000">    </span><span style="color: #0000ff">int</span><span style="color: #000000"> row </span><span style="color: #000000">=</span><span style="color: #000000"> blockIdx.y</span><span style="color: #000000">*</span><span style="color: #000000">blockDim.y </span><span style="color: #000000">+</span><span style="color: #000000"> threadIdx.y;<br />    </span><span style="color: #0000ff">int</span><span style="color: #000000"> col </span><span style="color: #000000">=</span><span style="color: #000000"> blockIdx.x</span><span style="color: #000000">*</span><span style="color: #000000">blockDim.x </span><span style="color: #000000">+</span><span style="color: #000000"> threadIdx.x;<br /><br />    </span><span style="color: #008000">//</span><span style="color: #008000">綰跨▼Thread(row,col)璐熻矗璁$畻C(row,col)</span><span style="color: #008000"><br /></span><span style="color: #000000">    </span><span style="color: #0000ff">for</span><span style="color: #000000"> (</span><span style="color: #0000ff">int</span><span style="color: #000000"> i </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">; i </span><span style="color: #000000"><</span><span style="color: #000000"> _wa; </span><span style="color: #000000">++</span><span style="color: #000000">i)<br />    {<br />        sum </span><span style="color: #000000">+=</span><span style="color: #000000"> _A[row</span><span style="color: #000000">*</span><span style="color: #000000">_wa </span><span style="color: #000000">+</span><span style="color: #000000"> i]</span><span style="color: #000000">*</span><span style="color: #000000">_B[i</span><span style="color: #000000">*</span><span style="color: #000000">_wb </span><span style="color: #000000">+</span><span style="color: #000000"> col];<br />    }<br />    _C[row</span><span style="color: #000000">*</span><span style="color: #000000">_wb </span><span style="color: #000000">+</span><span style="color: #000000"> col] </span><span style="color: #000000">=</span><span style="color: #000000"> sum;<br />}</span></div><br /> <div>鍙﹀涓縐嶆濊礬錛屾垜浠笉璁╂瘡涓涓嚎紼嬪畬鏁磋綆椾竴涓狢(i,j)錛岄氳繃C(i,j) = sum { A(i,k)*B(k,j) }鍙戠幇錛屾垜浠繕鍙互鍐嶇粏搴﹀垝鍒嗭細<br />Csub(i,j) = sum{A(i,ksub+offsetA)*B(ksub+offsetB,j)}  0<=ksub < blockSize<br />C(i,j) = sum{Csub(i,j)}<br />灝辨槸鎶婄煩闃靛垎鎴恘*n涓ぇ鐨勫瓙鍧楋紝鐒跺悗姣忎竴涓猙lock璐熻矗璁$畻瀛愬潡i 鍜?瀛愬潡j鐨勫瓙涔樼Н錛岃綆楀畬姣曞悗鍔犺搗鏉ュ垯鍙傝繖閲屼富瑕佷嬌鐢ㄤ簡鍏變韓鏄懼瓨浣滀紭鍖栥?/div><br />璁$畻鐗堟湰1錛?br /> <div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000">__global__ </span><span style="color: #0000ff">void</span><span style="color: #000000"> matrix_kernel_1(</span><span style="color: #0000ff">float</span><span style="color: #000000">*</span><span style="color: #000000"> _C,</span><span style="color: #0000ff">const</span><span style="color: #000000"> </span><span style="color: #0000ff">float</span><span style="color: #000000">*</span><span style="color: #000000"> _A,</span><span style="color: #0000ff">const</span><span style="color: #000000"> </span><span style="color: #0000ff">float</span><span style="color: #000000"> </span><span style="color: #000000">*</span><span style="color: #000000">_B,</span><span style="color: #0000ff">int</span><span style="color: #000000"> _wa,</span><span style="color: #0000ff">int</span><span style="color: #000000"> _wb)<br />{<br />    </span><span style="color: #0000ff">int</span><span style="color: #000000"> bx </span><span style="color: #000000">=</span><span style="color: #000000"> blockIdx.x;<br />    </span><span style="color: #0000ff">int</span><span style="color: #000000"> by </span><span style="color: #000000">=</span><span style="color: #000000"> blockIdx.y;<br />    </span><span style="color: #0000ff">int</span><span style="color: #000000"> tx </span><span style="color: #000000">=</span><span style="color: #000000"> threadIdx.x;<br />    </span><span style="color: #0000ff">int</span><span style="color: #000000"> ty </span><span style="color: #000000">=</span><span style="color: #000000"> threadIdx.y;<br /><br />    </span><span style="color: #008000">//</span><span style="color: #008000">璇lock瑕佸鐞嗙殑A</span><span style="color: #008000"><br /></span><span style="color: #000000">    </span><span style="color: #0000ff">int</span><span style="color: #000000"> aBegin </span><span style="color: #000000">=</span><span style="color: #000000"> _wa</span><span style="color: #000000">*</span><span style="color: #000000">(by</span><span style="color: #000000">*</span><span style="color: #000000">BLOCK_SIZE);</span><span style="color: #008000">//</span><span style="color: #008000">A(0,by)</span><span style="color: #008000"><br /></span><span style="color: #000000">    </span><span style="color: #0000ff">int</span><span style="color: #000000"> aEnd </span><span style="color: #000000">=</span><span style="color: #000000"> aBegin </span><span style="color: #000000">+</span><span style="color: #000000"> _wa </span><span style="color: #000000">-</span><span style="color: #000000"> </span><span style="color: #000000">1</span><span style="color: #000000">;<br />    </span><span style="color: #0000ff">int</span><span style="color: #000000"> aStep </span><span style="color: #000000">=</span><span style="color: #000000"> BLOCK_SIZE;</span><span style="color: #008000">//</span><span style="color: #008000">offsetA</span><span style="color: #008000"><br /></span><span style="color: #000000"><br />    </span><span style="color: #0000ff">int</span><span style="color: #000000"> bBegin </span><span style="color: #000000">=</span><span style="color: #000000"> BLOCK_SIZE</span><span style="color: #000000">*</span><span style="color: #000000">bx;</span><span style="color: #008000">//</span><span style="color: #008000">B(bx,0)</span><span style="color: #008000"><br /></span><span style="color: #000000">    </span><span style="color: #0000ff">int</span><span style="color: #000000"> bStep </span><span style="color: #000000">=</span><span style="color: #000000"> BLOCK_SIZE</span><span style="color: #000000">*</span><span style="color: #000000">_wb;</span><span style="color: #008000">//</span><span style="color: #008000">offsetB</span><span style="color: #008000"><br /></span><span style="color: #000000">    <br />    </span><span style="color: #0000ff">float</span><span style="color: #000000"> cSub </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">;<br />    </span><span style="color: #0000ff">for</span><span style="color: #000000"> (</span><span style="color: #0000ff">int</span><span style="color: #000000"> a </span><span style="color: #000000">=</span><span style="color: #000000"> aBegin,b </span><span style="color: #000000">=</span><span style="color: #000000"> bBegin; a </span><span style="color: #000000"><=</span><span style="color: #000000"> aEnd; a </span><span style="color: #000000">+=</span><span style="color: #000000"> aStep,b </span><span style="color: #000000">+=</span><span style="color: #000000"> bStep)<br />    {<br />        __shared__ </span><span style="color: #0000ff">float</span><span style="color: #000000"> As[BLOCK_SIZE][BLOCK_SIZE];<br />        __shared__ </span><span style="color: #0000ff">float</span><span style="color: #000000"> Bs[BLOCK_SIZE][BLOCK_SIZE];<br />        </span><span style="color: #008000">//</span><span style="color: #008000">姣忎釜綰跨▼璐熻矗涓涓厓绱犳嫹璐?/span><span style="color: #008000"><br /></span><span style="color: #000000">        As[ty][tx] </span><span style="color: #000000">=</span><span style="color: #000000"> _A[a </span><span style="color: #000000">+</span><span style="color: #000000"> _wa</span><span style="color: #000000">*</span><span style="color: #000000">ty </span><span style="color: #000000">+</span><span style="color: #000000"> tx];<br />        Bs[ty][tx] </span><span style="color: #000000">=</span><span style="color: #000000"> _B[b </span><span style="color: #000000">+</span><span style="color: #000000"> _wb</span><span style="color: #000000">*</span><span style="color: #000000">ty </span><span style="color: #000000">+</span><span style="color: #000000"> tx];<br /><br />        __syncthreads();<br />        <br />        </span><span style="color: #008000">//</span><span style="color: #008000">姣忎釜綰跨▼璐熻矗璁$畻涓涓瓙鍧梚 鍜?nbsp;瀛愬潡j鐨勫瓙涔樼Н</span><span style="color: #008000"><br /></span><span style="color: #000000">        </span><span style="color: #0000ff">for</span><span style="color: #000000"> (</span><span style="color: #0000ff">int</span><span style="color: #000000"> k </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">; k </span><span style="color: #000000"><</span><span style="color: #000000"> BLOCK_SIZE; </span><span style="color: #000000">++</span><span style="color: #000000">k)<br />        {<br />            cSub </span><span style="color: #000000">+=</span><span style="color: #000000"> As[ty][k]</span><span style="color: #000000">*</span><span style="color: #000000">Bs[k][tx];<br />        }<br /><br />        __syncthreads();<br />    }<br /><br />    </span><span style="color: #008000">//</span><span style="color: #008000">鍏ㄥ眬鍦板潃錛屽悜鍏ㄥ眬瀵勫瓨鍣ㄥ啓鍥炲幓<br />    </span><span style="color: #008000">//</span><span style="color: #008000">涓涓嚎紼嬭礋璐d竴涓厓绱狅紝涓涓猙lock璐熻矗涓涓瓙鍧?/span><span style="color: #008000"><br /></span><span style="color: #000000">    </span><span style="color: #0000ff">int</span><span style="color: #000000"> cIndex </span><span style="color: #000000">=</span><span style="color: #000000"> (by</span><span style="color: #000000">*</span><span style="color: #000000">BLOCK_SIZE </span><span style="color: #000000">+</span><span style="color: #000000"> ty)</span><span style="color: #000000">*</span><span style="color: #000000">_wb </span><span style="color: #000000">+</span><span style="color: #000000"> (bx</span><span style="color: #000000">*</span><span style="color: #000000">BLOCK_SIZE </span><span style="color: #000000">+</span><span style="color: #000000"> tx);<br />    _C[cIndex] </span><span style="color: #000000">=</span><span style="color: #000000"> cSub;<br />}<br /></span></div><br /><br /> <div>鏈鍚庡啓涓涓潰鍚慔ost鐨勬帴鍙e嚱鏁幫細</div><br /> <div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000ff">void</span><span style="color: #000000"> matrixMulGPU(</span><span style="color: #0000ff">float</span><span style="color: #000000">*</span><span style="color: #000000"> _C,</span><span style="color: #0000ff">const</span><span style="color: #000000"> </span><span style="color: #0000ff">float</span><span style="color: #000000"> </span><span style="color: #000000">*</span><span style="color: #000000">_A,</span><span style="color: #0000ff">const</span><span style="color: #000000"> </span><span style="color: #0000ff">float</span><span style="color: #000000"> </span><span style="color: #000000">*</span><span style="color: #000000">_B,</span><span style="color: #0000ff">int</span><span style="color: #000000"> _wa,</span><span style="color: #0000ff">int</span><span style="color: #000000"> _ha,</span><span style="color: #0000ff">int</span><span style="color: #000000"> _wb)<br />{<br />    </span><span style="color: #0000ff">float</span><span style="color: #000000">*</span><span style="color: #000000"> d_a </span><span style="color: #000000">=</span><span style="color: #000000"> myNewOnGPU</span><span style="color: #000000"><</span><span style="color: #0000ff">float</span><span style="color: #000000">></span><span style="color: #000000">(_wa</span><span style="color: #000000">*</span><span style="color: #000000">_ha);<br />    </span><span style="color: #0000ff">float</span><span style="color: #000000">*</span><span style="color: #000000"> d_b </span><span style="color: #000000">=</span><span style="color: #000000"> myNewOnGPU</span><span style="color: #000000"><</span><span style="color: #0000ff">float</span><span style="color: #000000">></span><span style="color: #000000">(_wb</span><span style="color: #000000">*</span><span style="color: #000000">_wa);<br />    </span><span style="color: #0000ff">float</span><span style="color: #000000">*</span><span style="color: #000000"> d_c </span><span style="color: #000000">=</span><span style="color: #000000"> myNewOnGPU</span><span style="color: #000000"><</span><span style="color: #0000ff">float</span><span style="color: #000000">></span><span style="color: #000000">(_wb</span><span style="color: #000000">*</span><span style="color: #000000">_ha);<br />    copyFromCPUToGPU(_A,d_a,_wa</span><span style="color: #000000">*</span><span style="color: #000000">_ha);<br />    copyFromCPUToGPU(_B,d_b,_wb</span><span style="color: #000000">*</span><span style="color: #000000">_wa);<br />    dim3 threads(BLOCK_SIZE,BLOCK_SIZE);<br />    dim3 blocks(WC</span><span style="color: #000000">/</span><span style="color: #000000">BLOCK_SIZE,HC</span><span style="color: #000000">/</span><span style="color: #000000">BLOCK_SIZE);<br />    matrix_kernel_0</span><span style="color: #000000"><<<</span><span style="color: #000000">blocks,threads</span><span style="color: #000000">>>></span><span style="color: #000000">(d_c,d_a,d_b,_wa,_wb);<br />    cudaThreadSynchronize();<br />    copyFromGPUToCPU(d_c,_C,_wb</span><span style="color: #000000">*</span><span style="color: #000000">_ha);<br /><br />    myDeleteOnGPU(d_a);<br />    myDeleteOnGPU(d_b);<br />    myDeleteOnGPU(d_c);<br />}</span></div><br /><br />璋冪敤鐨勪富鍑芥暟濡備笅錛?br /> <div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000">#include </span><span style="color: #000000"><</span><span style="color: #000000">stdio.h</span><span style="color: #000000">></span><span style="color: #000000"><br />#include </span><span style="color: #000000"><</span><span style="color: #000000">cuda_runtime.h</span><span style="color: #000000">></span><span style="color: #000000"><br />#include </span><span style="color: #000000"><</span><span style="color: #000000">cutil.h</span><span style="color: #000000">></span><span style="color: #000000"><br />#include </span><span style="color: #000000"><</span><span style="color: #000000">cutil_inline.h</span><span style="color: #000000">></span><span style="color: #000000"><br />#include </span><span style="color: #000000"><</span><span style="color: #000000">stdlib.h</span><span style="color: #000000">></span><span style="color: #000000"><br />#include </span><span style="color: #000000"><</span><span style="color: #000000">time.h</span><span style="color: #000000">></span><span style="color: #000000"><br />#include </span><span style="color: #000000"><</span><span style="color: #000000">math.h</span><span style="color: #000000">></span><span style="color: #000000"><br />#include </span><span style="color: #000000"><</span><span style="color: #0000ff">string</span><span style="color: #000000">.h</span><span style="color: #000000">></span><span style="color: #000000"><br />#include </span><span style="color: #000000"><</span><span style="color: #000000">Windows.h</span><span style="color: #000000">></span><span style="color: #000000"><br />#include </span><span style="color: #000000">"</span><span style="color: #000000">CUDACommon.h</span><span style="color: #000000">"</span><span style="color: #000000"><br />#include </span><span style="color: #000000">"</span><span style="color: #000000">MatrixMulCPU.h</span><span style="color: #000000">"</span><span style="color: #000000"><br />#include </span><span style="color: #000000">"</span><span style="color: #000000">MatrixMulGPU.h</span><span style="color: #000000">"</span><span style="color: #000000"><br /><br /></span><span style="color: #0000ff">void</span><span style="color: #000000"> randomInit(</span><span style="color: #0000ff">float</span><span style="color: #000000">*</span><span style="color: #000000"> _data,</span><span style="color: #0000ff">int</span><span style="color: #000000"> _size)<br />{<br />    </span><span style="color: #0000ff">for</span><span style="color: #000000"> (</span><span style="color: #0000ff">int</span><span style="color: #000000"> i </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">; i </span><span style="color: #000000"><</span><span style="color: #000000"> _size; </span><span style="color: #000000">++</span><span style="color: #000000">i)<br />    {<br />        _data[i] </span><span style="color: #000000">=</span><span style="color: #000000"> rand()</span><span style="color: #000000">/</span><span style="color: #000000">(</span><span style="color: #0000ff">float</span><span style="color: #000000">)RAND_MAX;<br />    }<br />}<br /><br /></span><span style="color: #0000ff">bool</span><span style="color: #000000"> checkError(</span><span style="color: #0000ff">const</span><span style="color: #000000"> </span><span style="color: #0000ff">float</span><span style="color: #000000">*</span><span style="color: #000000"> _A,</span><span style="color: #0000ff">const</span><span style="color: #000000"> </span><span style="color: #0000ff">float</span><span style="color: #000000">*</span><span style="color: #000000"> _B,</span><span style="color: #0000ff">int</span><span style="color: #000000"> _size)<br />{<br />    </span><span style="color: #0000ff">for</span><span style="color: #000000"> (</span><span style="color: #0000ff">int</span><span style="color: #000000"> i </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000"> ; i </span><span style="color: #000000"><</span><span style="color: #000000"> _size; </span><span style="color: #000000">++</span><span style="color: #000000">i)<br />    {<br />        </span><span style="color: #0000ff">if</span><span style="color: #000000"> (fabs(_A[i] </span><span style="color: #000000">-</span><span style="color: #000000"> _B[i]) </span><span style="color: #000000">></span><span style="color: #000000"> </span><span style="color: #000000">1.0e-3</span><span style="color: #000000">)<br />        {<br />            printf(</span><span style="color: #000000">"</span><span style="color: #000000">%f \t %f\n</span><span style="color: #000000">"</span><span style="color: #000000">,_A[i],_B[i]);<br />            </span><span style="color: #0000ff">return</span><span style="color: #000000"> </span><span style="color: #0000ff">false</span><span style="color: #000000">;<br />        }<br />    }<br />    </span><span style="color: #0000ff">return</span><span style="color: #000000"> </span><span style="color: #0000ff">true</span><span style="color: #000000">;<br />}<br /><br /></span><span style="color: #0000ff">int</span><span style="color: #000000"> main(</span><span style="color: #0000ff">int</span><span style="color: #000000"> argc, </span><span style="color: #0000ff">char</span><span style="color: #000000">*</span><span style="color: #000000"> argv[])<br />{<br />    srand(</span><span style="color: #000000">13</span><span style="color: #000000">);<br />    </span><span style="color: #0000ff">if</span><span style="color: #000000">(</span><span style="color: #000000">!</span><span style="color: #000000">InitCUDA()) {<br />        </span><span style="color: #0000ff">return</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">;<br />    }<br /><br />    </span><span style="color: #0000ff">float</span><span style="color: #000000">*</span><span style="color: #000000"> A </span><span style="color: #000000">=</span><span style="color: #000000"> myNewOnCPU</span><span style="color: #000000"><</span><span style="color: #0000ff">float</span><span style="color: #000000">></span><span style="color: #000000">(WA</span><span style="color: #000000">*</span><span style="color: #000000">HA);<br />    </span><span style="color: #0000ff">float</span><span style="color: #000000">*</span><span style="color: #000000"> B </span><span style="color: #000000">=</span><span style="color: #000000"> myNewOnCPU</span><span style="color: #000000"><</span><span style="color: #0000ff">float</span><span style="color: #000000">></span><span style="color: #000000">(WB</span><span style="color: #000000">*</span><span style="color: #000000">HB);<br />    randomInit(A,WA</span><span style="color: #000000">*</span><span style="color: #000000">HA);<br />    randomInit(B,WB</span><span style="color: #000000">*</span><span style="color: #000000">HB);<br />    </span><span style="color: #0000ff">float</span><span style="color: #000000">*</span><span style="color: #000000"> C </span><span style="color: #000000">=</span><span style="color: #000000"> myNewOnCPU</span><span style="color: #000000"><</span><span style="color: #0000ff">float</span><span style="color: #000000">></span><span style="color: #000000">(WC</span><span style="color: #000000">*</span><span style="color: #000000">HC);<br />    memset(C,</span><span style="color: #000000">0</span><span style="color: #000000">,</span><span style="color: #0000ff">sizeof</span><span style="color: #000000">(</span><span style="color: #0000ff">float</span><span style="color: #000000">)</span><span style="color: #000000">*</span><span style="color: #000000">WC</span><span style="color: #000000">*</span><span style="color: #000000">HC);<br />    <br />    </span><span style="color: #0000ff">float</span><span style="color: #000000">*</span><span style="color: #000000"> C2 </span><span style="color: #000000">=</span><span style="color: #000000"> myNewOnCPU</span><span style="color: #000000"><</span><span style="color: #0000ff">float</span><span style="color: #000000">></span><span style="color: #000000">(WC</span><span style="color: #000000">*</span><span style="color: #000000">HC);<br />    memset(C2,</span><span style="color: #000000">0</span><span style="color: #000000">,</span><span style="color: #0000ff">sizeof</span><span style="color: #000000">(</span><span style="color: #0000ff">float</span><span style="color: #000000">)</span><span style="color: #000000">*</span><span style="color: #000000">WC</span><span style="color: #000000">*</span><span style="color: #000000">HC);<br />    <br />    unsigned </span><span style="color: #0000ff">int</span><span style="color: #000000"> tick1 </span><span style="color: #000000">=</span><span style="color: #000000"> GetTickCount();<br />    MatrixMulCPU(C2,A,B,WA,HA,WB);<br />    printf(</span><span style="color: #000000">"</span><span style="color: #000000">CPU use Time : %dms\n</span><span style="color: #000000">"</span><span style="color: #000000">,GetTickCount() </span><span style="color: #000000">-</span><span style="color: #000000"> tick1);<br />    unsigned </span><span style="color: #0000ff">int</span><span style="color: #000000"> timer </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">;<br />    cutilCheckError(cutCreateTimer(</span><span style="color: #000000">&</span><span style="color: #000000">timer));<br />    cutilCheckError(cutStartTimer(timer));<br />    {<br />        matrixMulGPU(C,A,B,WA,HA,WB);<br />    }<br />    cutilCheckError(cutStopTimer(timer));<br />    printf(</span><span style="color: #000000">"</span><span style="color: #000000">GPU use time: %f (ms) \n</span><span style="color: #000000">"</span><span style="color: #000000">, cutGetTimerValue(timer));<br />    cutilCheckError(cutDeleteTimer(timer));<br /><br />    </span><span style="color: #0000ff">if</span><span style="color: #000000"> (checkError(C,C2,WC</span><span style="color: #000000">*</span><span style="color: #000000">HC))<br />    {<br />        printf(</span><span style="color: #000000">"</span><span style="color: #000000">Accept\n</span><span style="color: #000000">"</span><span style="color: #000000">);<br />    }<br />    </span><span style="color: #0000ff">else</span><span style="color: #000000"><br />    {<br />        printf(</span><span style="color: #000000">"</span><span style="color: #000000">Worng Answer\n</span><span style="color: #000000">"</span><span style="color: #000000">);<br />    }<br /><br />    myDeleteOnCPU(A);<br />    myDeleteOnCPU(B);<br />    myDeleteOnCPU(C);<br />    myDeleteOnCPU(C2);<br /><br />    </span><span style="color: #0000ff">return</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">;<br />}<br /></span></div><br />榪愮畻緇撴灉濡備笅錛?br />鐗堟湰0錛?br /><br /><br /><br />鐗堟湰1錛?br /> <div></div><img border="0" alt="" src="http://www.shnenglu.com/images/cppblog_com/bennycen/2.jpg" width="673" height="440" /><br /><br />鍙互鐪嬪嚭錛孏PU騫惰鎬ц兘姣擟PU濂藉緢澶氾紝鑰屼笖鐗堟湰1浼樹簬鐗堟湰0<br /><br />鏁翠釜宸ョ▼涓嬭澆錛?a href="/Files/bennycen/CUDAMatrixMul.rar">/Files/bennycen/CUDAMatrixMul.rar</a><img src ="http://www.shnenglu.com/bennycen/aggbug/151879.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/bennycen/" target="_blank">bennycen</a> 2011-07-26 17:01 <a href="http://www.shnenglu.com/bennycen/archive/2011/07/26/151879.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>感谢您访问我们的网站,您可能还对以下资源感兴趣:</p> <a href="http://www.shnenglu.com/" title="精品视频久久久久">精品视频久久久久</a> <div class="friend-links"> </div> </div> </footer> <a href="http://www.s33d.cn" target="_blank">久久香蕉国产线看观看99</a>| <a href="http://www.pyqf.net.cn" target="_blank">精品国产91久久久久久久a</a>| <a href="http://www.88ye.cn" target="_blank">亚洲另类欧美综合久久图片区</a>| <a href="http://www.bmims01.cn" target="_blank">久久无码一区二区三区少妇</a>| <a href="http://www.xa-dwyer.cn" target="_blank">久久久精品久久久久影院</a>| <a href="http://www.silverprice.net.cn" target="_blank">大香伊人久久精品一区二区 </a>| <a href="http://www.ifson.cn" target="_blank">www久久久天天com</a>| <a href="http://www.babaishu.cn" target="_blank">久久精品成人免费网站</a>| <a href="http://www.huanshengdou.org.cn" target="_blank">久久久久亚洲精品无码网址</a>| <a href="http://www.blt5.cn" target="_blank">久久精品国产99国产精品亚洲</a>| <a href="http://www.47g.com.cn" target="_blank">久久棈精品久久久久久噜噜</a>| <a href="http://www.bluecc.com.cn" target="_blank">久久线看观看精品香蕉国产</a>| <a href="http://www.00053119.cn" target="_blank">亚洲乱码日产精品a级毛片久久</a>| <a href="http://www.4src.com.cn" target="_blank">久久天天躁狠狠躁夜夜avapp</a>| <a href="http://www.ahlgw.cn" target="_blank">久久久久亚洲爆乳少妇无</a>| <a href="http://www.17740.cn" target="_blank">国产午夜福利精品久久2021</a>| <a href="http://www.1webproxy.cn" target="_blank">久久久久久亚洲精品无码</a>| <a href="http://www.advanco.cn" target="_blank">久久精品aⅴ无码中文字字幕重口 久久精品a亚洲国产v高清不卡 </a>| <a href="http://www.fnrbnpj.cn" target="_blank">久久久久无码国产精品不卡</a>| <a href="http://www.9dqmu.cn" target="_blank">国产三级久久久精品麻豆三级</a>| <a href="http://www.ekqt.cn" target="_blank">久久久久亚洲精品无码网址 </a>| <a href="http://www.rocchetta.com.cn" target="_blank">久久乐国产精品亚洲综合</a>| <a href="http://www.gangzheng.net.cn" target="_blank">久久亚洲精品中文字幕</a>| <a href="http://www.qdjzx.cn" target="_blank">人妻系列无码专区久久五月天</a>| <a href="http://www.9bexgq.cn" target="_blank">国产精品久久久久影视不卡</a>| <a href="http://www.gzquanjing.cn" target="_blank">久久人人爽人人爽人人片AV高清 </a>| <a href="http://www.sem588.cn" target="_blank">无码国内精品久久人妻麻豆按摩</a>| <a href="http://www.jxlbw.cn" target="_blank">久久精品国产亚洲77777</a>| <a href="http://www.zzyes.cn" target="_blank">久久综合久久美利坚合众国</a>| <a href="http://www.hypcba.cn" target="_blank">久久se精品一区二区影院</a>| <a href="http://www.z42195.cn" target="_blank">999久久久国产精品</a>| <a href="http://www.b2221.cn" target="_blank">国产欧美久久一区二区</a>| <a href="http://www.lvtonggaoerfu.cn" target="_blank">午夜精品久久久久久中宇</a>| <a href="http://www.sangaotang.cn" target="_blank">久久久久久免费视频</a>| <a href="http://www.k2938.cn" target="_blank">久久久午夜精品</a>| <a href="http://www.liess.cn" target="_blank">久久久久波多野结衣高潮</a>| <a href="http://www.kt813.cn" target="_blank">亚洲国产成人久久一区久久</a>| <a href="http://www.py63.cn" target="_blank">婷婷久久综合九色综合九七</a>| <a href="http://www.janba.cn" target="_blank">亚洲婷婷国产精品电影人久久 </a>| <a href="http://www.hunxueer.cn" target="_blank">久久99热狠狠色精品一区</a>| <a href="http://www.riyuelitian.cn" target="_blank">久久婷婷国产综合精品</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>