日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CBLAS的安装与使用

發布時間:2025/3/15 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CBLAS的安装与使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

CBLAS的安裝與使用

分類: MathTool 2007-12-09 14:16 7145人閱讀 評論(1) 收藏 舉報 floatfortran語言iostreammakefilec ? CBLAS的安裝與使用 烤魚片(@eii.dlmu) cleverysm@163.com CBLAS是BLAS的C語言接口。BLAS的全稱是Basic Linear Algebra Subprograms,中文大概可以叫做基礎線性代數子程序。主要是用于向量和矩陣計算的高性能數學庫。本身BLAS是用Fortran寫的,為了方便C/C++程序的使用,就有了BLAS的C接口庫CBLAS。BLAS的主頁是http://www.netlib.org/blas/,CBLAS的下載地址也可以在這個頁面上找到。 CBLAS安裝需要先裝BLAS,從主頁上下載blas.tgz,解壓,根據系統修改make.inc和Makefile,make,就會生成一個blas_LINUX.a文件。然后,下載cblas.tgz,解壓,在目錄下將Makefile.*文件改名或者做一個鏈接文件為Makefile.in文件,比如在linux下就是ln -s Makefile.LINUX Makefile.in,根據具體情況修改Makefile.in文件,主要是BLAS的庫文件路徑BLLIB和CBLAS的安裝目錄CBDIR,make help就可以打印出可以使用的make命令,要生成全部文件就是用make all。在$(CBDIR)目錄下的$(CBLIBDIR)將生成CBLAS的庫文件$(CBLIB),cblas_LINUX.a。 在CBLAS的安裝目錄$(CBDIR)下的src目錄中有個cblas.h是包括的CBLAS的函數和常量的頭文件,使用CBLAS的時候就需要這個頭文件,同時還需要BLAS的庫文件$(BLLIB )和CBLAS的庫文件$(CBLIB)。 CBLAS/BLAS分為3個level,level1是用于向量的計算,level2是用于向量和矩陣之間的計算,level3是矩陣之間的計算。比如計算矩陣的乘法就是屬于level3,這里就用矩陣乘法來學習使用CBLAS。 計算矩陣乘法的函數之一是 cblas_sgemm,使用單精度實數,另外還有對應雙精度實數,單精度復數和雙精度復數的函數。在此以 cblas_sgemm為例。 函數定義為: void cblas_sgemm(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_TRANSPOSE TransB, const int M, const int N, const int K, const float alpha, const float?*A, const int lda, const float?*B, const int ldb, const float beta, float?*C, const int ldc) 關于此函數的詳細定義可以在http://www.netlib.org/blas/sgemm.f找到,只不過是fortran語言的,這個C語言版的略有差別。 此函數計算的是 C = alpha*op( A )*op( B ) + beta*C, const enum CBLAS_ORDER Order,這是指的數據的存儲形式,在CBLAS的函數中無論一維還是二維數據都是用一維數組存儲,這就要涉及是行主序還是列主序,在C語言中數組是用行主序,fortran中是列主序。我還是習慣于是用行主序,所以這個參數是用CblasRowMajor,如果是列主序的話就是CblasColMajor。 const enum CBLAS_TRANSPOSE TransA和???????????????? const enum CBLAS_TRANSPOSE TransB,這兩個參數影響的是op( A )和op( B),可選參數為CblasNoTrans=111, CblasTrans=112, CblasConjTrans=113,其中TransA = CblasNoTrans,?op( A ) = A,TransA = CblasTrans,?op( A ) = A',TransA = CblasConjTrans,?op( A ) = A'。 TransB類似。 const int M,矩陣A的行,矩陣C的行 const int N,矩陣B的列,矩陣C的列 const int K,矩陣A的列,矩陣B的行 const float alpha, const float beta,計算公式中的兩個參數值,如果只是計算C=A*B,則alpha=1,beta=0 const float?*A, const float?*B, const float?*C,矩陣ABC的數據 const int lda, const int ldb, const int ldc,在BLAS的文檔里,這三個參數分別為ABC的行數,但是實際使用發現,在CBLAS里應該是列數。 我在這里計算兩個簡單矩陣的乘法。 A: 1,2,3 4,5,6 7,8,9 8,7,6 B: 5,4 3,2 1,0 程序代碼: //因為程序是C++,而CBLASC語言寫的,所以在此處用extern關鍵字 extern"C" { ??? #include<cblas.h>?? } #include<iostream> using namespace std; int main(void) { ??? ??? const enum CBLAS_ORDER Order=CblasRowMajor; ??? const enum CBLAS_TRANSPOSE TransA=CblasNoTrans; ??? const enum CBLAS_TRANSPOSE TransB=CblasNoTrans; ??? const int M=4;//A的行數,C的行數 ??? const int N=2;//B的列數,C的列數 ??? const int K=3;//A的列數,B的行數 ??? const float alpha=1; ??? const float beta=0; ??? const int lda=K;//A的列 ??? const int ldb=N;//B的列 ??? const int ldc=N;//C的列 ??? const float A[K*M]={1,2,3,4,5,6,7,8,9,8,7,6}; ??? const float B[K*N]={5,4,3,2,1,0}; ??? float C[M*N]; ??? ??? cblas_sgemm(Order, TransA, TransB, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); ??? ? ??? for(int i=0;i<M;i++) ??? { ?????? for(int j=0;j<N;j++) ?????? { ?????????? cout<<C[i*N+j]<<"/t"; ?????? } ?????? cout<<endl; ??? } ??? ??? return EXIT_SUCCESS; } 在編譯的時候需要帶上cblas_LINUX.a和blas_LINUX.a,比如, g++ main.cpp cblas_LINUX.a blas_LINUX.a -o main 當然,這里假定是這兩個.a文件是放在可以直接訪問的位置,或者寫全路徑也可以。 這種做法在CentOS.5下順利通過,但是在我的Ubuntu.7.10下出了問題,blas_LINUX.a正常編譯生成,但在鏈接的時候出了錯誤,所以只好從源里安裝了atlas,sudo apt-get install atlas3-base,在/usr/lib/atlas/目錄下就會有libblas.*和liblapack.*庫文件,只需要在鏈接的時候用這里的blas庫文件替換上文安裝的BLAS就可以正常編譯通過。 另外,在GSL下也有BLAS和CBLAS,在boost里有ublas也提供CBLAS/BLAS的功能,有時間也拿來研究研究。

總結

以上是生活随笔為你收集整理的CBLAS的安装与使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美成视频 | 日韩一级性生活片 | 在线播放成人 | 久久久久亚洲av无码专区喷水 | 污污的视频在线观看 | 五月天激情丁香 | 在线黄色免费 | 日本不卡一区 | 日本做爰三级床戏 | 黄色爱爱视频 | 日韩九九九 | 国产午夜网站 | 久草精品在线 | 日韩激情视频在线 | www.com国产| 国产尤物在线视频 | 国产在线精品成人欧美 | 成人毛片视频在线观看 | 国产成人一区二区三区别 | 三年大片在线观看 | 久久免费视频99 | 黄色高清视频在线观看 | 日韩一级片中文字幕 | 丰满岳乱妇在线观看中字无码 | 欧美日韩有码 | 久久国产一区二区三区 | 久久网国产 | 国产精品久久久久久69 | 久久精品久久精品久久精品 | 国产精品嫩草影院精东 | 91在线一区二区三区 | 北京富婆泄欲对白 | 冈本视频在线观看 | 欧美日韩在线观看视频 | 久久久久久久久久久久Av | 伊人网中文字幕 | 一区二区三区视频网站 | 国产精品无码av在线有声小说 | 亚洲射射射 | 国产精品久久久国产盗摄 | 国产精品久久无码一三区 | 91蜜桃臀久久一区二区 | 久久77777 | 欧美亚洲综合视频 | 久久香蕉综合 | 欧美精品小视频 | 久操伊人 | 337p色噜噜| 一区二区精品区 | 91综合久久 | 超碰国产在线 | av二区在线 | 中文字幕视频免费 | 九九亚洲视频 | 伊人久久大香 | 国语对白做受按摩的注意事项 | 中文字幕在线播放第一页 | 亚洲成a人 | 黄色av网站在线免费观看 | 性久久久久久久久 | 天天舔夜夜操 | av射进来| 中文字幕人妻精品一区 | 亚洲一区二区三区三州 | 成人免费看片网站 | 久久精品亚洲无码 | 国产精品毛片久久久久久 | 日韩色中色 | 玖玖综合网 | 久久免费小视频 | 综合精品久久久 | 国产91综合| 色阁av| 精品视频第一页 | 亚洲国产无线乱码在线观看 | 欧美草逼网 | 亚洲永久无码精品一区二区 | 青青国产在线视频 | 亚洲欧美一区二区激情 | av手机网站 | 日韩欧美的一区二区 | ass大乳尤物肉体pics | a级在线观看视频 | 校园春色自拍偷拍 | 成人免费毛片免费 | 视频一区中文字幕 | 欧美最猛性xxxxx(亚洲精品) | 亚洲精品视频在线观看免费 | 国产一区二区视频网站 | 日韩精品免费在线视频 | 91久操 | 各种含道具高h调教1v1男男 | 男人日女人的网站 | 99re色| 欧美永久免费 | 国产女人18毛片18精品 | 美女又爽又黄免费视频 | 久草免费在线观看 | 日韩免费在线视频 |