cblas安裝以及使用例項

2021-07-27 06:16:28 字數 2910 閱讀 2335

(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關鍵字

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;}在ubuntu12.04中同樣會報錯,不過安裝命令並不是

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功能,下面的筆記是我怕以後...