Blitz++高性能科學計算庫

Blitz++ 是一個用於科學計算的高性能C++類庫,提供了數組、向量、隨機數生成器、小向量和矩陣等結構。其中小向量對於表示矢量場非常有用。由於使用了模板技術作為底層實現,其號稱性能能夠與Fortran 77/90相比擬。同時在Blitz++也被認為是C++模板元編程的一個非常好的應用案例。

經過多年的發展,Blitz++已經逐漸成熟並從開發期進入了維護期。現在維護工作主要在Github上完成。

安裝

在Linux上,你可以選擇直接從源碼編譯或者使用系統的包管理器來安裝Blitz++。在Windows上你可以選擇源碼編譯的方式來使用Blitz++。

首先我們來看一下,如何從源碼編譯Blitz++。

第一步: 獲取源碼

推薦的獲取源碼的方式是前往Github下載,地址為https://github.com/blitzpp/blitz/archive/1.0.2.tar.gz。

下載解壓以後進入源碼目錄後,順序執行下面的命令即可完成編譯:

<code>~$ mkdir build
~$ cd build
~$ cmake ..
~$ make lib
~$ sudo make install/<code>

如果是在Windows上編譯,則按順序執行下面命令:

<code>~$ md build
~$ cd build
~$ cmake ..
~$ cmake --build . --config Release
~$ cmake --build . --target install/<code>

發行版包管理器安裝Blitz++

這個方法不是對所有發行版都適用,因為不能保證Blitz++被包含在所有Linux發行版的包管理器中。不過許多流行的發行版上都能夠輕鬆的獲取到支持。

Ubuntu:

<code>~$ sudo add-apt-repository universe
~$ sudo apt-get install libblitz0-dev/<code>

OpenSUSE:

<code>~$ zypper install blitz/<code>

Fedora

<code>~$ dnf install blitz/<code>

Centos

<code>~$ yum install blitz/<code>

使用示例

下面,我們將試用Blitz++提供的卷積運算來展示如何使用Blitz++:

<code>#include 
#include 
​
using namespace blitz;
​
int main()
{
    Array B(Range(-2,+2));
    Array C(Range(10,15));
​
    B = 1, 0, 2, 5, 3;
    C = 10, 2, 4, 1, 7, 2;
​
    Array A = convolve(B,C);
​
    cout << "A has domain " << A.lbound(0) << "..." << A.ubound(0) << endl
         << A << endl;
​
    return 0;
}/<code>

編譯後執行程序,得到輸出為:

<code>A has domain 8...17
(8,17)
[ 10 2 24 55 55 30 31 42 31 6 ]/<code>

要獲取更多關於如何使用Blitz++的內容,可以前往Blitz項目倉庫查看。https://github.com/blitzpp/blitz

往期文章


分享到:


相關文章: