锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久久久九国产精品,国产精品丝袜久久久久久不卡 ,2021少妇久久久久久久久久http://m.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://m.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://m.shnenglu.com/bennycen/archive/2011/07/26/151879.html</guid><wfw:comment>http://m.shnenglu.com/bennycen/comments/151879.html</wfw:comment><comments>http://m.shnenglu.com/bennycen/archive/2011/07/26/151879.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://m.shnenglu.com/bennycen/comments/commentRss/151879.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/bennycen/services/trackbacks/151879.html</trackback:ping><description><![CDATA[<div>榪欏嚑澶╃爺絀朵簡涓涓婥UDA錛屽彂鐜板叾騫惰鐨勬濇兂鍜屾櫘閫氱殑CPU澶氱嚎紼嬫濇兂涓嶅お涓鑷達(dá)紝浣嗚繕鏄尯涓嶉敊銆備富瑕佹槸灝嗕換鍔″垝鍒嗘垚涓涓釜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涓嚎紼嬨傝繘涓姝ワ紝鎴戜滑灝嗙煩闃墊寜涓涓ぇ鏂規(guī)牸Grid鍒掑垎錛屽鏋滀竴涓?br />鏂規(guī)牸Grid澶у皬鏄?6*16錛岄偅涔堢煩闃?0*48鐨勫彲浠ヨ〃紺轟負(fù)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) }鍙戠幇錛屾垜浠繕鍙互鍐嶇粏搴﹀垝鍒嗭細(xì)<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嚱鏁幫細(xì)</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://m.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://m.shnenglu.com/bennycen/aggbug/151879.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/bennycen/" target="_blank">bennycen</a> 2011-07-26 17:01 <a href="http://m.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://m.shnenglu.com/" title="精品视频久久久久">精品视频久久久久</a> <div class="friend-links"> </div> </div> </footer> <a href="http://www.hvgt.cn" target="_blank">69SEX久久精品国产麻豆</a>| <a href="http://www.jumbo8.cn" target="_blank">人人狠狠综合88综合久久</a>| <a href="http://www.smash6.cn" target="_blank">久久精品国产亚洲AV香蕉</a>| <a href="http://www.yhkim.cn" target="_blank">国产69精品久久久久9999APGF </a>| <a href="http://www.zhengyuezp.cn" target="_blank">久久精品亚洲AV久久久无码</a>| <a href="http://www.pyqf.net.cn" target="_blank">久久亚洲中文字幕精品一区</a>| <a href="http://www.noahmachine.com.cn" target="_blank">色狠狠久久AV五月综合</a>| <a href="http://www.pu89.cn" target="_blank">国产精品免费久久久久久久久</a>| <a href="http://www.668j.cn" target="_blank">99久久香蕉国产线看观香</a>| <a href="http://www.578pay.cn" target="_blank">久久亚洲精品中文字幕三区</a>| <a href="http://www.xadfj.cn" target="_blank">中文字幕无码久久人妻</a>| <a href="http://www.yrdfund.com.cn" target="_blank">囯产精品久久久久久久久蜜桃</a>| <a href="http://www.kiterunner.com.cn" target="_blank">日韩精品久久无码中文字幕</a>| <a href="http://www.hxsnw.com.cn" target="_blank">久久97久久97精品免视看秋霞</a>| <a href="http://www.oftr.cn" target="_blank">久久人人爽人人爽人人爽</a>| <a href="http://www.meiguohongfeng.com.cn" target="_blank">久久精品国产91久久综合麻豆自制</a>| <a href="http://www.net901.cn" target="_blank">久久综合久久伊人</a>| <a href="http://www.coubu.cn" target="_blank">亚洲一区二区三区日本久久九</a>| <a href="http://www.jzbbbs.cn" target="_blank">99久久国产综合精品女同图片</a>| <a href="http://www.ebsiask.cn" target="_blank">久久综合久久综合久久综合</a>| <a href="http://www.fc117.cn" target="_blank">五月丁香综合激情六月久久 </a>| <a href="http://www.gaomiren.cn" target="_blank">伊色综合久久之综合久久</a>| <a href="http://www.mengdie.net.cn" target="_blank">久久精品黄AA片一区二区三区 </a>| <a href="http://www.101922.cn" target="_blank">浪潮AV色综合久久天堂</a>| <a href="http://www.flcqki.cn" target="_blank">亚洲国产精品一区二区三区久久 </a>| <a href="http://www.tprs.com.cn" target="_blank">青青热久久国产久精品</a>| <a href="http://www.iscrip.cn" target="_blank">久久r热这里有精品视频</a>| <a href="http://www.020xyk.cn" target="_blank">色偷偷88888欧美精品久久久</a>| <a href="http://www.awkmqq.cn" target="_blank">日本精品久久久久久久久免费</a>| <a href="http://www.me79.cn" target="_blank">天天久久狠狠色综合</a>| <a href="http://www.73cc.cn" target="_blank">99久久99久久精品免费看蜜桃 </a>| <a href="http://www.hongyuan88.cn" target="_blank">久久人人爽人人爽人人片av高请</a>| <a href="http://www.banburi.cn" target="_blank">久久人人爽人爽人人爽av</a>| <a href="http://www.sf1768.cn" target="_blank">国产精品久久久99</a>| <a href="http://www.guceka.cn" target="_blank">99久久精品国产一区二区</a>| <a href="http://www.czphjs.cn" target="_blank">97久久天天综合色天天综合色hd</a>| <a href="http://www.qzlhscqt.cn" target="_blank">狼狼综合久久久久综合网</a>| <a href="http://www.youk6.cn" target="_blank">99久久超碰中文字幕伊人</a>| <a href="http://www.52shadu.cn" target="_blank">久久精品人人做人人爽电影蜜月</a>| <a href="http://www.07sn.cn" target="_blank">久久综合亚洲欧美成人</a>| <a href="http://www.e-meng.com.cn" target="_blank">国产精品久久99</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>