(c
bdir
)目錄下
的 (cblibdir)將生成cblas的庫檔案$(cblib),cblas_linux.a。
在cblas的安裝目錄(c
bdir
)下的s
rc目錄
中有個c
blas
.h是包
括的cb
las的
函式和常
量的頭文
件,使用
cbla
s的時候
就需要這
個頭檔案
,同時還
需要bl
as的庫
檔案(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)
關於此函式的詳細定義可以在 找到,只不過是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++,而cblas是c語言寫的,所以在此處用extern關鍵字
在ubuntu12.04中同樣會報錯,不過安裝命令並不是extern
"c"
#include
using
namespace
std;
int main(void) ;
const
float b[k*n]=;
float c[m*n];
cblas_sgemm(order, transa, transb, m, n, k, alpha, a, lda, b, ldb, beta, c, ldc);
for(int i=0;ifor(int j=0;jcout
<"\t";
}cout
1;}
sudo apt-get install atlas3-base
而是:
sudo apt-get install libatlas-dev
安裝之後生成的庫在/usr/lib下面有個軟連線,名字為libblas.a,blas的實際安裝目錄為/etc/alternatives/libblas.a,然後在編譯時使用命令:g++ main.cpp cblas_linux.a libblas.a -o main
即不需要使用blas_linux.a庫,也不需要安裝之前的blas了。另外ls 按照時間公升序檢視檔案的命令為:
ls -lrt
降序為:ls -lt
CBLAS的安裝與使用
cblas的安裝與使用 ysmcleverysm gmail.com 在cblas的安裝目錄 cbdir 下的src目錄中有個cblas.h是包括的cblas的函式和常量的標頭檔案,使用cblas的時候就需要這個標頭檔案,同時還需要blas的庫檔案 bllib 和cblas的庫檔案 cblib cb...
CBLAS編譯安裝與使用舉例
在github上看到有人用blas library優化自己的原始碼,對此產生了強烈興趣。準備自己動手實踐一下,網上搜尋了一大堆編譯安裝blas教程的資料,沒乙個靠譜的,編譯過程中遇到一堆的問題。因為自己沒有root許可權,所以只能在home目錄中本地編譯使用cblas,然後本地鏈結編譯得到的庫檔案到...
XAMPP安裝以及使用
xampp apache mysql php perl 是乙個功能強大的建站整合軟體包。它可以在windows linux solaris mac os x 等多種作業系統下安裝使用,支援多語言 英文 簡體中文 正體中文 韓文 俄文 日文等。我主要用到的是裡面的apache功能,下面的筆記是我怕以後...