剛開始無從下手,不知該做什麼,經過一番查詢嘗試以後,成功! 記錄下整個流程。
測試了兩種環境:
(1)win10的子系統ubuntu16.04,64bit
(2)win7系統 + VMware虛拟機下的Ubuntu16.04 LTS,64bit
注:文中涉及到的圖檔均為自己運作截圖,轉載請注明。執行成功的狀态如下圖所示:
1、下載下傳HPCC基準測試程式并解壓
位址:http://icl.cs.utk.edu/hpcc/
解壓之後進入到其中的hpl下的setup檔案如下左圖所示,從中随便複制一個檔案到上層目錄,也就是hpl檔案夾中。我選擇的是Make.LinuxIntelIA64Itan2_eccMKL檔案。粘貼到hpl中後修改檔案名為Make.MKL,改成其他的也可以,比如Make.Linux都可以。(如下右圖所示,因為我試了兩種,是以兩個檔案都有,隻需一個即可。)
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安裝為例,解壓之後的圖檔如下圖所示:
執行“./install_GUI.sh” 檔案,如果習慣指令界面安裝的小夥伴們可以執行" ./install.sh"
執行後會進入安裝界面,一步步按操作來就可以了。預設安裝在" /opt/intel" 下,我采用的是預設路徑。MPI安裝類似MKL。
有一點需要主要,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"
注::首先我選擇了預設安裝位置"/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部分:
LA部分:
HPL_LIBS部分:
CC和LINKER部分:
修改路徑的含義:
MPdir :本機安裝mpi的位置
MPinc :mpi頭檔案所在的位置
MPlib :mpi靜态庫所在的位置
LAdir :MKL所在的位置
LAinc :MKL頭檔案所在的位置
LAlib :MKL靜态庫所在的位置
CC :選用的編譯語句(mpiicc是使用Intel mpi ,mpicc是使用gcc)
HPL_LIBS:添加靜态連結庫(因計算機配置不同,不添加-ldl有些會報錯,有些不會)
其餘位置具體修改為什麼,請參考上邊的配置圖檔。
5.編譯并執行
終于來到最後一步!
首先編譯hpcc檔案,執行目錄是在hpcc程式的頂級目錄中,如下圖所示:
編譯指令:"make arch=XXX",XXX是make檔案的字尾名,比如我的是"make.MKL",則編譯指令如下圖所示:
編譯成功則會在此目錄下生成一個hpcc的二進制檔案,如果你生成成功,那恭喜你!離成功隻差一步啦!
生成成功後,就可以執行了,執行指令"mpirun -np 4 ./hpcc",如果報"cannot oprn file hpccinf.txt"的錯誤,則重命名目前檔案夾下的_hpccinf.txt檔案,去掉前面的下劃線 "_"即可。
然後再重新執行,結果還是報錯" Need at least 4 processes for these tests ":
解決方案:
如果hpccinf.txt檔案中的兩個變量Ps和Qs的積(Ps*Qs)大于設定的線程數時,可以修改兩個變量的值使其乘積滿足條件即可,或者減小線程數使其大于(Ps*Qs)。報錯位置在"hpcc-1.5.0/hpl/testing/ptest/HPL_pdinfo.c"的第440行:
如果已經滿足上述條件還不行的話,就關掉重新開機,然後再重新執行就可以了!(我的就是這樣解決的。)
最後成功執行,執行圖檔就是文章的第一張圖。運作結果就是在目前目錄下會自動生成一個hpccouf.txt檔案,這個就是所需要的HPCC各種分數所在檔案啦!
6.遇到的問題與解決方案
前邊的部分列出了一部分問題,還有一些其他問題彙總如下。首先要準确定位錯誤原因,如下圖所示這是看不出哪裡出錯的,一定要往上翻,找到有error的位置,也就是出錯原因。
(1)出現未定義的引用,這個問題一般就是沒有配置好環境變量。配置過程見前邊的 "2和3"。
(2)出現" make:*** empty variable name. Stop "錯誤,是編譯指令錯誤,不能加空格。去掉arch 、Linux與 = 之間的空格。
(3)出現以下錯誤,解決方案:源碼安裝mpich。
參考部落格:https://www.cnblogs.com/leijin0211/p/6851675.html
(4)出現" DSO missing from command line "錯誤,解決方案:修改Make.MKL檔案中的HPL_LIBS,在" -lm "前添加" -lpthread " 和 " -ldl ",配置檔案見前邊的 "4.配置Make.MKL檔案"
(5)如果同時安裝了OpenMpi和Intel MPI,是有可能出現沖突的
(6)報錯" Need at least 4 processes for these tests ",這個問題沒有徹底解決,取巧使用了其他方法處理了,過程如下。
可能是mpirun本身的問題,使用which檢視,此時使用的mpirun是Intel MPI的mpirun,一直會報錯:
轉移到root下使用which 檢視,發現使用的是之前安裝的mpich的mpirun,這次順利執行,但是執行時間明顯比使用Intel MPI的時間要長:
使用Intel MPI的mpirun在出錯後也成功過,過程就是ubuntu崩潰了 ,然後不得不重新開機,結果就好了。顯然這個方法太偶然了,之後再執行依舊會有問題。
最後祝大家都順利成功!!!問題6如果哪位朋友解決了,麻煩您請一定告訴我,在此多謝各位了!!!