一步步做程序优化【2】OpenACC指令
Jun 07, 2016 pm 03:21 PM这个写了很长时间了,但是一直没有顾上额。把这个版本稍微修改一下,只需要加上一个指令,我们就可以得到不错的效率奥。 看代码吧: // C = alpha*A*B + beta*Cvoid mySgemm(int m, int n, int k, float alpha, float beta,\ float *A, float *B, float *C){
这个写了很长时间了,但是一直没有顾上额。把这个版本稍微修改一下,只需要加上一个指令,我们就可以得到不错的效率奥。
看代码吧:
// C = alpha*A*B + beta*C void mySgemm(int m, int n, int k, float alpha, float beta,\ float *A, float *B, float *C) { int i, j, l; float ab; #pragma acc kernels copy(A[0:m*n],B[0:m*n],C[0:m*n]) #pragma acc loop independent for(j = 0; j <br> <br> <p>这样,我们只是加入了几个指导语句,剩下的事是编译器帮我们做的奥,你原先的测试程序并不需要任何改变奥。</p> <p>我之前讲过HMPP编译器的安装和使用,http://blog.csdn.net/bendanban/article/details/7662583大家可以使用HMPP编译器编译这段代码,在Linux下(安装好CUDA,HMPP之后)我们可以使用一下命令编译:</p> <p>$hmpp --codelet-required gcc your_program.c</p> <p>执行一下,你会发现速度相当的快了(你要有支持CUDA的显卡才行奥)</p> <p>大家可以写一个测试程序来调用这个函数,随便你用什么编译器,只要你可以在你的测试程序里找到本文中提供的程序,你完全可以使用高效的函数奥。</p> <p><br> </p> <p>为了得到更高的效率,我修改一下这个代码:</p> <pre class="brush:php;toolbar:false">// C = alpha*A*B + beta*C void mySgemm(int m, int n, int k, float alpha, float beta,\ float *A, float *B, float *C) { int i, j, l; float ab; #pragma acc kernels copyin(A[0:m*n],B[0:m*n]) copy(C[0:m*n]) #pragma acc loop independent for(j = 0; j <br> <p>这样A和B两个矩阵就可只是传输到GPU上,而C传到GPU,计算结束后会倍传回来。</p> <p>在copy()中,A[0:m*n],表示从第0个元素一共计算m*n个元素,第一个是起始位置,第二个量表示数据长度。</p> <p>大家把代码拷贝走,去试试吧!!!</p> <p><br> </p> <p><br> </p> <br>

Artikel Panas

Alat panas Tag

Artikel Panas

Tag artikel panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Bagaimana untuk menjadikan Peta Google sebagai peta lalai dalam iPhone

Bagaimana untuk mendapatkan item menggunakan arahan dalam Terraria? -Bagaimana untuk mengumpul barang di Terraria?

Apl jam tiada dalam iPhone: Cara membetulkannya

Tidak boleh membenarkan akses kepada kamera dan mikrofon dalam iPhone

Perbincangan tentang strategi pengoptimuman gc Golang

Tafsiran mendalam: Mengapa Laravel lambat seperti siput?

Penyahkodan kesesakan prestasi Laravel: Teknik pengoptimuman didedahkan sepenuhnya!

Pengoptimuman program C++: teknik pengurangan kerumitan masa
