天天看點

【HPCC】在ubuntu下測試本機的HPCC分數

剛開始無從下手,不知該做什麼,經過一番查詢嘗試以後,成功! 記錄下整個流程。

測試了兩種環境:

(1)win10的子系統ubuntu16.04,64bit

(2)win7系統 + VMware虛拟機下的Ubuntu16.04 LTS,64bit

注:文中涉及到的圖檔均為自己運作截圖,轉載請注明。執行成功的狀态如下圖所示:

【HPCC】在ubuntu下測試本機的HPCC分數

1、下載下傳HPCC基準測試程式并解壓

位址:http://icl.cs.utk.edu/hpcc/

解壓之後進入到其中的hpl下的setup檔案如下左圖所示,從中随便複制一個檔案到上層目錄,也就是hpl檔案夾中。我選擇的是Make.LinuxIntelIA64Itan2_eccMKL檔案。粘貼到hpl中後修改檔案名為Make.MKL,改成其他的也可以,比如Make.Linux都可以。(如下右圖所示,因為我試了兩種,是以兩個檔案都有,隻需一個即可。)

【HPCC】在ubuntu下測試本機的HPCC分數
【HPCC】在ubuntu下測試本機的HPCC分數

2、編譯配置

編譯HPCC檔案需要兩個插件:Intel MPI和Intel MKL。(注:也可以使用mpich代替Intel MPI ,用BLAS代替MKL,但是由于未知原因在我的機器上一直出錯,是以沒采用,大家可以嘗試一下。)

Intel MPI:https://software.intel.com/en-us/mpi-library

Intel MKL:https://software.intel.com/en-us/mkl

下載下傳之後解壓,在指令行運作安裝程式進行圖形化安裝。以MKL安裝為例,解壓之後的圖檔如下圖所示:

【HPCC】在ubuntu下測試本機的HPCC分數

執行“./install_GUI.sh” 檔案,如果習慣指令界面安裝的小夥伴們可以執行" ./install.sh"

【HPCC】在ubuntu下測試本機的HPCC分數

執行後會進入安裝界面,一步步按操作來就可以了。預設安裝在" /opt/intel" 下,我采用的是預設路徑。MPI安裝類似MKL。

【HPCC】在ubuntu下測試本機的HPCC分數

有一點需要主要,Intel MPI安裝之後會自動彈出一個網頁,當時忘記截圖了,裡邊注明了在使用MPI之前還需要的配置工作。簡單來說就是按路徑找到mpivars.sh檔案,然後source一下。

大緻路徑如下圖所示,source語句是 " source mpivars.sh"。如果不是在目前檔案夾下需填寫完整路徑

" source /opt/intel/compilers_and_libraries_2018.5.274/linux/mpi/intel64/bin/mpivars.sh"

【HPCC】在ubuntu下測試本機的HPCC分數

注::首先我選擇了預設安裝位置"/opt/intel/",是以沒有修改環境變量,而且沒有報錯!!這個真的要看電腦,一個電腦一個樣,如果之後編譯hpcc檔案時報 gcc:error的錯誤就是沒有配置好環境變量。如果修改了安裝路徑就一定要配置環境變量。配置過程見3.配置環境變量

3.配置環境變量

完成第2步的操作後後配置環境變量:[[email protected] ~]# vi .bashrc 

在.bashrc檔案的末尾添加: export PATH=/usr/local/mpi/bin:$PATH 

然後再儲存退出後,再更新配置檔案使其生效:[[email protected] ~]# source .bashrc

此處參考部落格是:https://www.cnblogs.com/leijin0211/p/6851675.html

至此MKL和MPI的安裝結束。

4.配置Make.MKL檔案

此處參考部落格是:

https://blog.csdn.net/jfsufeng/article/details/88734985

https://blog.csdn.net/u012927281/article/details/51443676

根據本機的情況,改寫如下:

MP部分:

【HPCC】在ubuntu下測試本機的HPCC分數

LA部分:

【HPCC】在ubuntu下測試本機的HPCC分數

HPL_LIBS部分:

【HPCC】在ubuntu下測試本機的HPCC分數

CC和LINKER部分:

【HPCC】在ubuntu下測試本機的HPCC分數

修改路徑的含義:

MPdir        :本機安裝mpi的位置

MPinc       :mpi頭檔案所在的位置

MPlib        :mpi靜态庫所在的位置

LAdir        :MKL所在的位置

LAinc       :MKL頭檔案所在的位置

LAlib        :MKL靜态庫所在的位置

CC           :選用的編譯語句(mpiicc是使用Intel mpi ,mpicc是使用gcc)

HPL_LIBS:添加靜态連結庫(因計算機配置不同,不添加-ldl有些會報錯,有些不會)

其餘位置具體修改為什麼,請參考上邊的配置圖檔。

5.編譯并執行

終于來到最後一步!

首先編譯hpcc檔案,執行目錄是在hpcc程式的頂級目錄中,如下圖所示:

【HPCC】在ubuntu下測試本機的HPCC分數

編譯指令:"make arch=XXX",XXX是make檔案的字尾名,比如我的是"make.MKL",則編譯指令如下圖所示:

【HPCC】在ubuntu下測試本機的HPCC分數

編譯成功則會在此目錄下生成一個hpcc的二進制檔案,如果你生成成功,那恭喜你!離成功隻差一步啦!

【HPCC】在ubuntu下測試本機的HPCC分數

生成成功後,就可以執行了,執行指令"mpirun -np 4 ./hpcc",如果報"cannot oprn file hpccinf.txt"的錯誤,則重命名目前檔案夾下的_hpccinf.txt檔案,去掉前面的下劃線 "_"即可。

【HPCC】在ubuntu下測試本機的HPCC分數

然後再重新執行,結果還是報錯" Need at least 4 processes for these tests ":

【HPCC】在ubuntu下測試本機的HPCC分數

解決方案:

如果hpccinf.txt檔案中的兩個變量Ps和Qs的積(Ps*Qs)大于設定的線程數時,可以修改兩個變量的值使其乘積滿足條件即可,或者減小線程數使其大于(Ps*Qs)。報錯位置在"hpcc-1.5.0/hpl/testing/ptest/HPL_pdinfo.c"的第440行:

【HPCC】在ubuntu下測試本機的HPCC分數

如果已經滿足上述條件還不行的話,就關掉重新開機,然後再重新執行就可以了!(我的就是這樣解決的。)

最後成功執行,執行圖檔就是文章的第一張圖。運作結果就是在目前目錄下會自動生成一個hpccouf.txt檔案,這個就是所需要的HPCC各種分數所在檔案啦!

【HPCC】在ubuntu下測試本機的HPCC分數

6.遇到的問題與解決方案

前邊的部分列出了一部分問題,還有一些其他問題彙總如下。首先要準确定位錯誤原因,如下圖所示這是看不出哪裡出錯的,一定要往上翻,找到有error的位置,也就是出錯原因。

【HPCC】在ubuntu下測試本機的HPCC分數

(1)出現未定義的引用,這個問題一般就是沒有配置好環境變量。配置過程見前邊的 "2和3"。

【HPCC】在ubuntu下測試本機的HPCC分數

(2)出現" make:*** empty variable name.  Stop "錯誤,是編譯指令錯誤,不能加空格。去掉arch 、Linux與 = 之間的空格。

【HPCC】在ubuntu下測試本機的HPCC分數

(3)出現以下錯誤,解決方案:源碼安裝mpich。

參考部落格:https://www.cnblogs.com/leijin0211/p/6851675.html

【HPCC】在ubuntu下測試本機的HPCC分數

(4)出現" DSO missing from command line "錯誤,解決方案:修改Make.MKL檔案中的HPL_LIBS,在" -lm "前添加" -lpthread " 和 " -ldl ",配置檔案見前邊的 "4.配置Make.MKL檔案"

【HPCC】在ubuntu下測試本機的HPCC分數

(5)如果同時安裝了OpenMpi和Intel MPI,是有可能出現沖突的

(6)報錯" Need at least 4 processes for these tests ",這個問題沒有徹底解決,取巧使用了其他方法處理了,過程如下。

【HPCC】在ubuntu下測試本機的HPCC分數

可能是mpirun本身的問題,使用which檢視,此時使用的mpirun是Intel MPI的mpirun,一直會報錯:

【HPCC】在ubuntu下測試本機的HPCC分數

轉移到root下使用which 檢視,發現使用的是之前安裝的mpich的mpirun,這次順利執行,但是執行時間明顯比使用Intel MPI的時間要長:

【HPCC】在ubuntu下測試本機的HPCC分數
【HPCC】在ubuntu下測試本機的HPCC分數

使用Intel MPI的mpirun在出錯後也成功過,過程就是ubuntu崩潰了 ,然後不得不重新開機,結果就好了。顯然這個方法太偶然了,之後再執行依舊會有問題。

最後祝大家都順利成功!!!問題6如果哪位朋友解決了,麻煩您請一定告訴我,在此多謝各位了!!!