linux系统下的ITPP,并行数据处理

一:首先要解决的问题是在linux系统下安装ITPP。

    IT++ is a C++ library of mathematical, signal processing and communication classes and functions。也就是说有了这个库,用C++编写通信仿真程序的方便程度接近于matlab。具体介绍和文件下载可以上官方网站。Matlab用的好好的,干嘛要用IT++?水木清华论坛里一个帖子说的很清楚,“由于Matlab效率太低(除了可以验证算法外),所以需要更快的仿真平台。最好的平台无非就是自己写的C/C++程序,以及利用这个行业别人已经做好的库it++,非常方便,用它感觉就像是在C++下的Matlab。当然效率跟前者相比是不可同日而语。

1、Windows环境

这个网站, 它提供“100% free powerful solution”。因为IT++要用的是MKL的三个libraries:LAPACK BLAS FFTW,这三个库是可以免费下载到的。该网站提供了在VS2005下安装IT++的步骤。只要按照网站说明进行安装,基本没有什么问题。

LAPACK:LAPACK,其名为Linear Algebra PACKage的缩写,是一以Fortran编程语言写就,用于数值计算的函式集。

BLAS,全称Basic Linear Algebra Subprograms,即基础线性代数子程序库,里面拥有大量已经编写好的关于线性代数运算的程序。

FFTW ( the Faster Fourier Transform in the West) 是一个快速计算离散傅里叶变换的标准C语言程序集。

可参见:http://blog.sina.com.cn/s/blog_4dab1a5a0100sgid.html 

2、Linux环境

可参见:http://blog.csdn.net/luotuo818/article/details/6767594

 

0)gfortran

sudo apt-get install gfortran

1)fftw           ---http://www.fftw.org/      

安装参见http://hi.baidu.com/jerry_916/blog/item/f9fc86428aa78c0e9213c65f.html

sudo apt-get install libfftw3-dev  //安装libfftw3-dev

2)blas          ---http://www.netlib.org/blas/ 

安装参见

sudo apt-get install libblas-dev          //安装libblas-dev

3)lapack       ---http://www.netlib.org/lapack/ 

安装参见

一定要在编译完成BLAS后在编译LAPACK,因为LAPACK的testing包会用到BLAS库

sudo apt-get install liblapack-dev   //安装liblapack-dev

下载组件:

1、下载itpp依赖的三个包,BLAS、LAPACK、FFTW;

itpp:http://itpp.sourceforge.net/stable/index.html

BLAS:http://www.netlib.org/blas/

LAPACK:http://www.netlib.org/lapack/

一个比较有用的链接:http://blog.c114.net/html/83/496683-65006.html

在home/ffh下面新建一个ITPP文件夹,然后将三个安装包拷贝进去。

1.1安装FFTW

1)gzip –cd fftw-3.3.2.tar.gz | tar xf -    //gzip 是在 Linux 系统中经常使用的一个对文件进行压缩和解压缩的命令

2)cd fftx-3.1.2

3)./configure   //./configure是源代码安装的第一步,主要的作用是对即将安装的软件进行配置,检查当前的环境是否满足要安装软件的依赖关系

4)make            //make工具则可自动完成编译工作,并且可以只对程序员在上次编译后修改过的部分进行编译。

5)make check   //make check只是在你安装之前对你的环境以及源码等进行检测以确保编译安装正确

6)make install

7)make clean  //make clean仅仅是清除之前编译的可执行文件及配置文件。

8)make distclean   //要清除所有生成的文件。

1.2安装blas包

1)gzip -cd blas.agz | tar xf - 

2) cd BLAS

3)make

#make    //就会生成一个 blas_LINUX.a文件。

1.3安装lapack

1) gzip –cd lapack-3.4.2.tgz | tar xf -

2) cd lapack-3.1.1

3) cp make.inc.example make.inc

4) gedit make.inc

5) gedit Makefile

如果之前没安装blas(必须先安装blas库,因为安装次库要用到blas库):

include make.inc

all: lapack_install lib lapack_testing blas_testing

lib: lapacklib tmglib

 

#lib: blaslib lapacklib tmglib
 
clean: cleanlib cleantesting cleanblas_testing
. . . .

 修改成:

  include make.inc

 
all: lapack_install lib lapack_testing blas_testing
 
#lib: lapacklib tmglib
lib: blaslib lapacklib tmglib
 
clean: cleanlib cleantesting cleanblas_testing
. . . .

5)make

编译完成后,确认你生成了三个.a文件(Linux静态库文件),三个.a文件的文件名为,blas_LINUX.a,lapack_LINUX.a,tmglib_LINUX.a;

为上述三个.a文件建立链接,命令如下

  1. sudo ln -s */? /usr/local/lib/%  
  2. sudo ln -s */? /usr/lib/%  
  3.   
  4. #*表示那三个文件的路径,?表示那个个.a文件,%表示对应的静态库名(libblas.a,liblapack.a,libtmglib.a)  

当然,你把这三个文件重命名了,拷贝到/usr/local/lib和/usr/lib下也可以;(有的库链接可能已经有了,试试看)

二:安装ITPP库

安装itpp

1)    bzip2 -cd itpp-.tar.bz2 | tar xf –

 

2)    cd itpp-

 

3)    ./configure

4)    make

5)    make check

结果应该是全部PASSED!

linux系统下的ITPP,并行数据处理

6)    make install可能出现错误,说permition denied,此时改为 sudo make install就可成功。

7)    make clean

8)    make distclean

最后,使用g++来编译实例,验证是否安装成功。
cd
gedit .bashrc
在文件开头处加入:export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

 

安装成功!

三:体验自己的IT++库

编辑一下代码

体验自己编译好的itpp库

建立一个.cpp文件,将以下内容写入

 

#include <itpp/itbase.h>

using namespace itpp;

//These lines are needed for use of cout and endl
using std::cout;
using std::endl;

int main()
{
  //Declare vectors and matricies:
  vec a, b, c;
  mat A, B;

  //Use the function linspace to define a vector:
  a = linspace(1.0, 2.0, 10);

  //Use a string of values to define a vector:
  b = "0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0";

  //Add two vectors:
  c = a + b;

  //Print results:
  cout << "a = " << a << endl;
  cout << "b = " << b << endl;
  cout << "c = " << c << endl;

  //Use a string to define a matrix:
  A = "1.0 2.0;3.0 4.0";

  //Calculate the inverse of matrix A:
  B = inv(A);

  //Print results:
  cout << "A = " << A << endl;
  cout << "B = " << B << endl;

  //Exit program:
  return 0;

}

编译:

    1. g++ -o *** *.cpp -litpp  
    2. #***为编译生成的文件的文件名,*为你建立的.cpp的名称 

运行:./test

结果:

a = [1 1.11111 1.22222 1.33333 1.44444 1.55556 1.66667 1.77778 1.88889 2]
b = [0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1]
c = [1.1 1.31111 1.52222 1.73333 1.94444 2.15556 2.36667 2.57778 2.78889 3]
A = [[1 2]
 [3 4]]
B = [[-2 1]
 [1.5 -0.5]]

附录:

 

附录:BLAS、LAPACK、FFTW包的安装

 

1、BLAS包的安装

 

下载解压后,cd到文件件,执行

make

2、LAPACK包的安装

下载解压后,cd到文件夹,将1中生成的blas_LINUX.a拷贝到文件夹,依次执行

mv make.inc.example make.inc
make

3、FFTW包的安装

下载解压后,cd到文件夹,依次执行

./configure
make
sudo make install

mv make.inc.example make.inc
make

大功告成!

 

 

原文链接: https://www.cnblogs.com/ffhblog/archive/2012/10/11/2720226.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    linux系统下的ITPP,并行数据处理

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/65522

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月9日 上午11:51
下一篇 2023年2月9日 上午11:52

相关推荐