博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux系统下的ITPP,并行数据处理
阅读量:4616 次
发布时间:2019-06-09

本文共 4244 字,大约阅读时间需要 14 分钟。

一:首先要解决的问题是在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语言程序集。

可参见:

2、Linux环境

可参见:

 

0)gfortran

sudo apt-get install gfortran

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

安装参见

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

2)blas          ---

安装参见

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

3)lapack       ---

安装参见

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

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

下载组件:

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

itpp:

BLAS:

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文件建立链接,命令如下

[html]
  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!

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

你可能感兴趣的文章
随我的记
查看>>
java第三次作业
查看>>
HP Jack介绍
查看>>
敏捷软件开发(3)---COMMAND 模式 & Active Object 模式
查看>>
常量与运算
查看>>
Python 04--迭代器、装饰器、软件开发规范
查看>>
poj 1062 昂贵的聘礼 解题报告
查看>>
JQuery ui 实现类似于confirm的功能
查看>>
linux 命令-case
查看>>
Fragment
查看>>
测试工资那点事儿
查看>>
0723------Linux基础----------文件 IO 之 dup、dup2 和 fcntl 函数
查看>>
Struts2实现文件上传
查看>>
14中程序员性格
查看>>
【HDU4622】Reincarnation
查看>>
花点时间搞清top、clientTop、scrollTop、offsetTop
查看>>
python辅助开发模块(非官方)如pil,mysqldb,openpyxl,xlrd,xlwd
查看>>
Mybatis 查询tinyint(1)的数据库字段时会自动转换成boolean类型
查看>>
easyui tree 模仿ztree 使用扁平化加载json
查看>>
JDBC -- DBUtils
查看>>