PARSEC在CentOS6.5 版本的linux系統下安裝過程

安裝PARSEC主要的參考資料是官網的文檔,但是遇到錯誤以後基本找不到解決方法,於是自己細細看了看錯誤,發現時自己機器上底層依賴的軟件沒有安裝完全。
官網資料:見鏈接http://parsec.cs.princeton.edu/parsec3-doc.htm,第五步開始出錯,錯誤信息如下:

make: /usr/bin/g++: Command not found make: *** [blackscholes] Error 127 [PARSEC] Error: 'env version=pthreads /usr/bin/make' failed.

後來發現這臺服務器上沒有GCC,沒有g++ 所以不能編譯,有錯誤。
於是yum install gcc ,yum install gcc-c++ 就ok了。

yum gcc-c++ 的時候出現小插曲,no packages,於是替換了yum源,爲aliyun的替換工作詳見http://blog.csdn.net/ai297313/article/details/46714737
運行 parsecmgmt -a build 就正常編譯了,編譯到parsec.mesa時,出現了下邊這個錯誤:

configure: error: X11 development libraries needed for xlib driver
[PARSEC] Error: 'env ./configure --with-driver=xlib --enable-glut --enable-stati                               c --disable-shared --prefix=/home/hjl/benchmarks/parsec-3.0/pkgs/libs/mesa/inst/                               amd64-linux.gcc' failed.

這個是因爲缺少X11相關的圖像庫文件
解決方法:yum install libX11-devel.x86_64

接着又出現缺x11 xext package的error:
configure: error: Package requirements (x11 xext) were not met:
No package 'xext' found

解決方法:yum install libXext-devel.x86_64

後面分別又出現了,缺少x11 xmu, x11 xi ,xt 等package:checking for GLUT... configure: error: Package requirements (x11 xmu xi) were not met:
No package 'xmu' found
No package 'xi' found
No package 'xt' found

解決方法:yum install libXt-devel.x86_64//Xt可替換爲Xmu,Xi

圖像相關的庫文件補全以後,又進行了很長時間的編譯,在編譯parsec.swaptions 時出現了tbb錯誤:

HJM_SimPath_Forward_Blocking.cpp:11:31: error: tbb/blocked_range.h: No such file or directory
HJM_SimPath_Forward_Blocking.cpp:12:30: error: tbb/parallel_for.h: No such file or directory
HJM_SimPath_Forward_Blocking.cpp:13:41: error: tbb/cache_aligned_allocator.h: No such file or directory
HJM_SimPath_Forward_Blocking.cpp:39: warning: ISO C++ forbids declaration of ‘tbb’ with no type
HJM_SimPath_Forward_Blocking.cpp:39: error: expected ‘,’ or ‘...’ before ‘::’ token
HJM_SimPath_Forward_Blocking.cpp: In member function ‘void ParallelB::operator()(int) const’:
HJM_SimPath_Forward_Blocking.cpp:40: error: ‘range’ was not declared in this scope
HJM_SimPath_Forward_Blocking.cpp: In function ‘int HJM_SimPath_Forward_Blocking(double**, int, int, double, double*, double*, do          uble**, long int*, int)’:
HJM_SimPath_Forward_Blocking.cpp:134: error: ‘tbb’ has not been declared
HJM_SimPath_Forward_Blocking.cpp:134: error: ‘tbb’ has not been declared
HJM_SimPath_Forward_Blocking.cpp:134: error: expected primary-expression before ‘int’
make: *** [HJM_SimPath_Forward_Blocking.o] Error 1
[PARSEC] Error: 'env version=tbb /usr/bin/make' failed.

一開始以爲是/home/hjl/benchmarks/parsec-3.0/pkgs/libs/tbblib/inst/amd64-linux.gcc/include/tbb、目錄下面沒有需要的頭文件,但是查看目錄以後,發現這些文件都是存在的。
第一種做法:把tbb文件放在了HJM_SimPath_Forward_Blocking.cpp文件所在目錄下
後來覺得安裝tbb就可以了吧,結果安裝完,效果跟沒有一樣,於是又搜索文檔。發現config/下面有gcc-tbb.bldconf, 結合手冊上的例子嘗試了另一種編譯方法:parsecmgmt -a build -p swaptions -c gcc-tbb
居然神奇的編譯通過了,後來仔細想想確實已經有用gcc編譯好的tbb了,所以就通過了。

遇到這麼多問題以後,似乎也明白了一些,和圖像有關的benchmark會判斷X11,需要TBB的用gcc-tbb 編譯就可以,剩下的就直接gcc編譯,不需要直接指明。

下面是個簡潔的整理:

  • splash2和splash2x系列(各14個,一一對應)

直接編譯,編譯格式爲:parsecmgmt -a build -p splash2.xparsecmgmt -a build -p splash2x.x 這裏x表示具體系列下的benchmark的名字。

  • parsec可gcc直接編譯(29個除swaptions)
blackscholes  bodytrack  canneal  cmake   dedup  facesim  fluidanimate  freqmine  libjpeg  ferret  glib   hooks   netstreamcluster gsl  libtool  libxml2  mesa  netdedup  streamcluster netferret  parmacs  raytrace  ssl  tbblib  uptcpip  vips x264  yasm  zlib 

以上這些benchmark 直接編譯命令是:parsecmgmt -a build -p x

  • parsec可gcc-tbb編譯(與上面重複3個,共4個)
 blackscholes  bodytrack  swaptions tbblib

這四個benchmark中,只有swaptions只能gcc-tbb編譯,其他幾個可gcc直接編譯通過。gcc-tbb編譯格式:parsecmgmt -a build -p swaptions -a gcc-tbb// swaptions 可替換的benchmark名字

因此PARSEC-3.0 下面一共58個benchmark,在CentOS6.5 系統中均可編譯。

運行benchmark格式:parsecmgmt -a run -p streamcluster 不同的配置,運行時間不一樣,默認配置3秒完成。其他就不細說,希望這篇文章能幫到很多人。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章