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

往期文章


分享到:


相關文章: