1. 程式人生 > >CP2K4.1-release & 最新5.x-development 多程序多執行緒(MPI+OPENMP) (psmp版 & popt版)超詳細編譯安裝教程極致優化加速版(全編譯器可編譯版)

CP2K4.1-release & 最新5.x-development 多程序多執行緒(MPI+OPENMP) (psmp版 & popt版)超詳細編譯安裝教程極致優化加速版(全編譯器可編譯版)

CP2K 4.1-release & 最新5.x-development 多程序多執行緒(MPI+OPENMP)

(psmp版 & popt版)超詳細編譯安裝教程極致優化加速版(全編譯器可編譯版)

                                                                                                                                                     製作者:甄江蘇(湘潭大學材料科學與工程學院) 

                                                                                                                                                     更新時間:2017.10.13

                                                                                                                                                     測試版本:Development  r18020

 教程最底下有每次更新的條目資訊

cp2k最新5.x-development版本包含了很多新功能的加入以及對之前版本大量的優化(比如速度優化)和錯誤修正(比如ADMM加速部分的ADMM_PURIFICATION_METHOD選項的bug修復等等

),建議大家安裝最新版cp2k

目前cp2k 4.1-release版本我只能編譯並正確執行單執行緒多程序版本,用多執行緒版本時,執行緒數只能為1,不然程式會崩潰。5.x-development版本沒有這種錯誤。當然此教程編譯出的4.1單執行緒版本相比以前教程編譯出來的4.1版本也會有加速效果,至少在我這裡是如此。

依據你的叢集特性來編譯最合適版本:

如果你的叢集節點之間用的是普通的交換機(比如千兆乙太網交換機),那麼你會發現你的程式跨節點計算比單節點計算慢很多。節點間用普通的交換機時建議編譯多執行緒多程序(host.psmp)版本;如果節點間通訊用的是高速網際網路絡,如 InfiniBand 網路,那麼你會發現跨節點計算會很快(一般商用超算都是用的高速網際網路絡,或者一些土豪課題組也會使用),此時建議編譯單執行緒多程序版本(host.popt)。需要注意的是,cp2k 4.1-release版本應該編譯單執行緒多程序版本,而 5.x-development版本可以依據上面的叢集特性來選擇。

據我在28核的至強[email protected](單機120G DDR4記憶體)上測試,採用142執行緒跑AIMD(第一性原理分子動力學)時此教程的綜合優化加速(相比用以前的教程和intel2015編譯器套件編譯去年的5.x-dev版本cp2k得到的程式的計算結果,下同)超過12%!!!跑雜化泛函HSE06單點能計算時(12*12*12 A^3 for 135 atoms),單電子步迭代由以前的8000多秒每步變為現在的4000多秒每步,加速非常大!!!

下面的測試說明都是用AIMD測試的,沒測試其他計算,此外測試都是基於單節點計算的。

測試發現用2個執行緒時,對於28核的機器來說用14個核心(不能超過14個核心哇,因為14*2=28)加速效果最佳,當使用7個核心(7*2=14,理論應該跟14核單執行緒時差不多)時,計算速度比14核單執行緒要慢不少。當我在24核的至強[email protected](單機64G DDR4記憶體)上測試時,發現不管用多少核心,當執行緒數大於1時,計算速度都沒有相同核數下執行緒數為1時快(不知道其他計算會如何)。所以多執行緒有沒有加速效果,跟機器配置有關的,具體請自行測試。但是相比以前的教程,採用單執行緒還是比以前的教程編譯出來的程式快的。

最新developmentcp2kk點計算會比去年的development版以及4.1-release版計算的慢了約13%,我猜可能是對之前的k點計算進行了修復,加了很多修正。

還需要注意的是,程式在執行過程中,有部分計算可能是用的多執行緒,而有部分計算可能只用了單執行緒,比如我使用PBEsol+D3C9校正方式來進行CELL_OPT計算時,在SCF迭代時程式是用多執行緒加速的,但是每次迭代完成後到下次迭代之前的部分我測試的結果是程式此時用的是單執行緒跑的(這裡是D3C9校正花了很多時間,且這裡程式用的是單執行緒跑的D3C9校正),也就是如果我開了142執行緒的的話,中間部分只用了CPU一半的資源,計算速度變慢。當然如果這部分時間消耗本來就非常少,那倒是對整體加速影響不大(如果是隻開D3校正的話,這部分時間用的比D3C9要小不少),但是時間消耗比較大的話,那應該沒有全程使用單執行緒效果好。

總的來說,多執行緒的加速效果跟計算機配置、計算體系大小、計算的性質以及計算方法都有關係,如果你不知道多執行緒會不會有加速效果,建議直接使用單執行緒(比如直接將執行緒數設定為1,或者直接編譯出單執行緒多程序版本,教程後面會講到)進行計算,綜合效果應該不錯!!

***************************************************************************************************************************************

***************************************************************************************************************************************

注意,此版本安裝教程用的是intel2017 update4編譯器套件,用intel2017 update1~ update3套件會有問題(貌似是MKL問題),會導致編譯出來的cp2k計算時能量是錯誤的。

之前由於編譯器問題,導致使用intel2015~2016的所有update版本編譯器套件都不能編譯出最新5.x-development版cp2k,但是前幾天開發者在cp2k的Google Groups上告訴我說只要刪除兩個原始檔,就都能正確編譯了,刪除的兩個檔案為cp2k解壓目錄下的:

src/dbcsr_tensor/dbcsr_tensor_test.F

src/dbcsr_tensor/dbcsr_tensor_unittest.F

刪除後使用intel2015或2016編譯器套件就能編譯了。如果使用intel2017update4套件,則不需要刪除就能編譯成功。

********************************************************************************************************************************

********************************************************************************************************************************

Intel編譯器完整套件包括了mpi並行庫和MKL等數學庫,建議gcc編譯器支援c++11標準(即gcc版本要等於或高於4.8.1),否則安裝過程可能會出錯,不過沒有完整測試過,也可以用非c++11標準的gcc試試,畢竟安裝過程中基本都是用的intel編譯器。

我這裡安裝是用root許可權安裝的,非root使用者當然也可以安裝,但只能安裝到本使用者主目錄下的目錄中,並且一些涉及root許可權的操作不能執行,比如新增環境變數,只能新增到本使用者的環境變數中(~/.bashrc檔案)

這裡安裝的host.popt(單執行緒多程序)以及host.psmp(多執行緒多程序)版本的指令碼配置檔案都是在Linux-x86-64-intel-mic.psmp這個檔案中。安裝過程主要參考cp2k官網安裝教程和cp2k安裝包中的Linux-x86-64-intel-mic.psmp這個檔案裡的相關提示。

此外,下面安裝的額外的軟體包可以從cp2k提供的專門的下載地址下載(cp2k官網推薦版本,但一般不是最新版本):

此外,此文件的最後有每個軟體的單獨下載地址(我測試的各個最新可用版本)

建議將所有軟體安裝在非/root/目錄下,如果是用root許可權安裝的話,也不要安裝在/home/目錄下的任何目錄,一般都安裝在/opt/目錄下(root使用者就安裝在本使用者的主目錄下吧)。如果是多節點的叢集,應該安裝在節點間共享的目錄下,一般都設定/opt/目錄為共享軟體安裝目錄。

教程內容:

1. 下載並安裝intel2017 update4編譯器免費版(所需的功能全都有,如果沒必要,就不建議升級了)

2. 安裝libint (用於HF計算,沒有它,就不能進行涉及HF的計算,比如雜化泛函計算等)

3. 安裝libxsmm (intel的矩陣加速計算庫)

4. 安裝libxc (支援幾百種LDA, GGA, meta-GGA,雜化,雙雜化等計算)

5. 安裝elpa (用於矩陣對角化加速的,能量最小化用對角化方法時,會加速非常多,用OT方法時也會有加速)

6. 下載並安裝cp2k

7. cp2k離線文件生成並製作成chm格式(非常便攜!)

8. 上面2-5外掛的最新可用版下載地址

1.  安裝Intel編譯器(裡面的安裝方法適用於所有intel編譯器套件)

1.1  到intel官網下載最新intel2017 update4編譯器套件(沒有需求的話,可以不用安裝最新版,請跳過1.1):

 

全選,然後accept:

 

下面必須填寫學校或者研究機構的郵箱才行,然後下面兩個方框都選中,然後submit:


然後就能得到官網分配的序列號。注意,這個序列號在第一次聯網安裝(必須要聯網)後就不能用於其他機器了,只能用於那一臺機器,因為它會識別機器的硬體地址(所以下面的序列號你們已經不能用啦!!)。此外,據說這種序列號只能正常使用三個月或半年,然後就會顯示過期,之後的話,額,試試把intel編譯器套件解除安裝並重新用這個序列號安裝(解除安裝後要重啟機器才能重新安裝,要解除安裝乾淨。重新安裝同一個版本的編譯器,只要安裝位置不變,那麼其他所有依賴於intel編譯器的軟體都不需要重新安裝了)試試,或者看能不能再申請一次。接著選擇update4或之後的版本,並選擇最下面的那個藍色框下載:


1.2  安裝

下載完成後,將安裝包放到叢集的主節點上,最好別放在軟體安裝目錄(比如別放在/opt/目錄),然後解壓,然後安裝,這裡選擇GUI方式安裝會好點(這當然要在圖形介面裡安裝,純命令列介面只能用非GUI方式):安裝前把所有子節點的共享目錄都要掛載到主節點上。

 

選擇accept,等個幾十秒就會進入下一階段:


我這裡之前安裝過intel2015版的,貌似沒解除安裝乾淨,出現了這個,選擇next:

 

填上序列號(當然安裝過程要聯網哈!):


這裡選擇Yes和No都行,然後next:


下面選擇安裝多節點並行,nodes檔案內容就是每個節點的計算機名稱,每個名稱一行,比如:

node01

……

node05

然後個數填寫實際個數,然後next


下面這裡可以不用定製,直接預設就行,安裝位置軟體會自動搜尋到你掛載好的共享目錄,然後install。如果是非root使用者安裝的話,可能要自己指定安裝目錄,當然是你的使用者的主目錄下面的一個目錄。注意,如果install時出現說什麼你的目錄是share directory,但是你的destination directory不是share directory,那麼就需要把剛才已掛載的子節點給解除安裝,然後再繼續安裝,安裝完成後,再掛載就行了。

 

等安裝完成後,如果是root使用者,需要在所有節點的/etc/profile檔案中最下面插入:

source  /opt/intel/compilers_and_libraries_2017.4.196/linux/bin/ifortvars.sh  intel64

source  /opt/intel/compilers_and_libraries_2017.4.196/linux/mkl/bin/mklvars.sh  intel64

source  /opt/intel/compilers_and_libraries_2017.4.196/linux/mpi/intel64/bin/mpivars.sh  intel64

注意,不同版本的intel上面的目錄的數字部分一般都不一樣,但其他部分應該是差不多的(假如你是安裝到/opt/目錄下的intel目錄中的話)。

然後在終端執行:

[root]#  source  /etc/profile

如果是非root使用者安裝的,則只需要在本節點的~/.bashrc中插入上面的路徑,然後在source一下就行了。

Intel編譯器套件安裝完後,在任意目錄下,執行:

icc -v

將會顯示版本號。

然後進入$MKLROOT/interfaces/fftw3xf資料夾,執行:

[root]#  make libintel64     

將會生成一個名為libfftw3xf_intel.a的靜態庫檔案。

注意,要想使並行庫能正確執行,貌似要設定一下:(root使用者就無法設定了。。。)

/etc/目錄中新建一個名為mpd.conf的文字檔案,在裡面填寫上:

MPD_SECRETWORD=mr45-j9z

然後儲存退出,給這個檔案加上許可權:

[root]#  chmod  600  /etc/mpd.conf

2.  安裝libint (1.1.6版本)

下載安裝包解壓,進入執行:

[root]#  aclocal  -I  lib/autoconf              #  "-I" 是大寫的i

[root]#  autoconf 

注意,上面兩個如果執行後都報錯的話,不用管,直接下一步。詳情請見本目錄下的INSTALL文件

[root]#  ./configure  --prefix=/opt/libint  --with-ar=ar  FC=ifort  F77=ifort  F90=ifort  FCFLAGS="-O3  -xHost"   \

CC=icc  CFLAGS="-O3  -xHost "  CXX=icpc  CXXFLAGS="-O3  -xHost "  --with-cc-optflags="-O3  -xHost "  \

--with-cxx-optflags="-O3  -xHost "  --with-libint-max-am=5  --with-libint-opt-am=4   --with-libderiv-max-am1=4  \

--with-libderiv-max-am2=2  --with-libr12-max-am=2  --with-libr12-opt-am=2

[root]#  make  -j  8

[root]#  make  install

[root]#  make  realclean

3.  安裝最新libxsmm (1.8.1master版本,其他版本也行,用於矩陣運算加速的)

解壓安裝包後,進入安裝包,執行:

[root]#  make  CXX=icpc  CC=icc  FC=ifort  AR=ar  OPT=3  TARGET="-xHost"  ROW_MAJOR=0  \

INDICES_M="$(echo $(seq 1 24))"  INDICES_N="$(echo $(seq 1 24))"  INDICES_K="$(echo $(seq 1 24))"  \

PREFIX=/opt/libxsmm/  install

[root]#  make  clean

4.  安裝libxc (3.0.0版本,其他版本也行)

下面編譯過程中如果出現什麼“libtool :   error:  ignoring unknown tag 77”,不用管,直接繼續

下載安裝包解壓進入安裝:

[root]#  ./configure  --prefix=/opt/libxc/  FC=ifort  FCFLAGS="-O3  -xHost "  CC=icc CFLAGS="-O3  -xHost "

[root]#  make  -j  8

[root]#  make  install

[root]#  make  clean

5.  安裝elpa :

5.x-development版目前可以用次新的elpa-2016.11.001.pre版,但是4.1-release版本目前只能用elpa-2016.05.004或者比這個舊的版本,不同版本下載請看本教程最底部

5.1 openmp版本(用於多執行緒多程序(host.psmp)版本的連結):

[root]#  ./configure  --prefix=/opt/elpa/  FC=mpiifort  CC=mpiicc  CXX=mpiicpc  CFLAGS="-O3  -xHost "  \

CXXFLAGS="-O3  -xHost "  FCFLAGS="-O3  -xHost "  --with-avx-optimization=yes  --enable-openmp  \

SCALAPACK_LDFLAGS="-L$MKLROOT/lib/intel64  -lmkl_blas95_lp64  -lmkl_lapack95_lp64  \

-lmkl_scalapack_lp64  -Wl,--start-group  -lmkl_cdft_core  -lmkl_intel_lp64  -lmkl_intel_thread  -lmkl_core \

-lmkl_blacs_intelmpi_lp64  -Wl,--end-group  -liomp5  -lpthread  -lm  -ldl  -Wl,-rpath,$MKLROOT/lib/intel64"  \

SCALAPACK_FCFLAGS="-L$MKLROOT/lib/intel64  -lmkl_blas95_lp64  -lmkl_lapack95_lp64  \

-lmkl_scalapack_lp64  -lmkl_cdft_core  -lmkl_intel_lp64  -lmkl_intel_thread  -lmkl_core  \

-lmkl_blacs_intelmpi_lp64  -liomp5  -lpthread  -lm  -ldl  -I$MKLROOT/include/intel64/lp64"

[root]#  make

[root]#  make  install

[root]#  make  clean

5.2 單執行緒版本(用於單執行緒多程序(host.popt)版本的連結):

[root]# ./configure  --prefix=/opt/elpa/  FC=mpiifort  CC=mpiicc  CXX=mpiicpc  CFLAGS="-O3 -xHost"  \

CXXFLAGS="-O3  -xHost"  FCFLAGS="-O3  -xHost"  --with-avx-optimization=yes  \

SCALAPACK_LDFLAGS="-L$MKLROOT/lib/intel64  -lmkl_blas95_lp64  -lmkl_lapack95_lp64  \

-lmkl_scalapack_lp64  -Wl,--start-group  -lmkl_cdft_core  -lmkl_intel_lp64  -lmkl_sequential  -lmkl_core  \

-lmkl_blacs_intelmpi_lp64  -Wl,--end-group  -lpthread  -lm  -ldl  -Wl,-rpath,$MKLROOT/lib/intel64"  \

SCALAPACK_FCFLAGS="-L$MKLROOT/lib/intel64  -lmkl_blas95_lp64  -lmkl_lapack95_lp64  \

-lmkl_scalapack_lp64  -lmkl_cdft_core  -lmkl_intel_lp64  -lmkl_sequential  -lmkl_core  \

-lmkl_blacs_intelmpi_lp64  -lpthread  -lm  -ldl  -I$MKLROOT/include/intel64/lp64"

[root]#  make

[root]#  make  install

[root]#  make  clean

6.  下載並安裝cp2k

下載5.x最新版cp2k(development版本):直接在已經聯網的linux終端中輸入以下內容:(這種下載方式下載的是最新開發版本的cp2k,不是標準穩定釋出版本,但是開發版本我感覺也很穩定,它會包含最新的錯誤修正以及優化和新功能的引入)

svn checkout https://svn.code.sf.net/p/cp2k/code/trunk

進入網頁後,進入trunk目錄(下面兩幅圖用的是以前版本的,與現在安裝的development的版本不同,不過沒關係,位置都是差不多的):


然後如下圖所示,點選右上角的DownloadSnapshot下載就行了:


下載完成後,將trunk目錄裡面的cp2k/ 這個資料夾拷貝到/opt/目錄中(你的多叢集共享目錄中。如果是非root使用者安裝,則放在你的主目錄裡面),然後進入/opt/cp2k/makefile目錄,修改cp2k配置檔案:

[root]#  vim  ../arch/Linux-x86-64-intel-mic.psmp

然後對照著修改(注意,這裡顯示的行號不一定和你的一樣,但差不多就在那個上下。此外,如不是特別說明,則單執行緒版本和多執行緒版本的設定是一樣的):

下圖中所示的是libint, libxclibxsmm的安裝目錄的指定,需要與你們具體的安裝位置一致。


注:下面的這個libxstreamcp2k自帶的,不需要下載。需要注意,單執行緒版本需要把大概在83行左右的“MKL:= 2”後面的2改為1才行,切記!!多執行緒版本就用2,不用改(2表示多執行緒,1表示單執行緒)



注意,在下圖中,elpa部分的include後面部分要注意,每個版本的elpa此處數字路徑是不一樣的,具體路徑請到elpa的安裝目錄自己檢視。還要注意的是多執行緒多程序版本所用的openmpelpa單執行緒多程序版本所用的單執行緒版本elpa在這裡配置是不一樣的,一個是上面所說的路徑(openmp版的目錄elpa程式在安裝時自動加了_openmp_關鍵字,而單執行緒版沒加,自己可以到elpa安裝目錄下的include目錄檢視);第二個是LIBS後面的字串的最後:openmpelpa後面是如圖所示的 libelpa_openmp.a,而單執行緒版elpa後面是 libelpa.a;第三個是DFLAGS後面的字串:這裡是由cp2k更新版本決定的,不是由cp2k的執行緒版本決定的,也不是由elpa執行緒版本決定的。 cp2k 5.x-development版本此處所填內容是如圖所示的-D__ELPA=201611,而4.1-release版本此處應該填寫的是 -D__ELPA3此外,下圖裡最後矩形方框裡的這兩個引數是我加上去的優化引數,本來不在這個配置指令碼中的。根據機器硬體不同,最優數值可能不一樣,根據官網顯示,-D__GRID_CORE的取值為1~6,我測試發現,1,3,5取值比2,4,6取值編譯出的程式計算速度快,在我的機器上最優值為5。下面的引數 -D__PILAENV_BLOCKSIZE取值比較大,我測試顯示當取值等於或超過32時,計算速度會加快不少。當用大體系(包含640個原子,用DFT計算)測試時,數值達到1024時有最佳加速效果,更大數值的加速效果與1024幾乎一樣,但是當用較小體系(包含320個原子,用DFT計算)測試時,數值為64或者128時,加速效果最佳,取值加大時,計算速度就會比128時的小,並且越大計算速度越慢。這裡我選擇128

 

注:這下面的圖是與上圖中的elpa部分相關的,這裡是最新的development版本官網安裝說明,上圖中的DFLAGS += -D__ELPA=後面的數字就是下圖中的形式,代表你安裝的elpa庫的版本號,這裡要與你上面安裝的elpa版本號一致(只適用於5.x development版本cp2k)


注意,下圖中顯示的部分要看清楚行號了,在原文件中的後面還有一處跟這裡幾乎一樣,這裡是smp的部分,用於cp2k多執行緒多程序版本設定的,單執行緒版本請跳過這裡。如果你用的不是intel2017編譯器套件,則此處可以用原配置(即此處可以不用修改,當然改了肯定沒事),如果是intel2017編譯器,則此處不用cp2k原配置,因為原生配置會導致編譯錯誤。此處下面會說到lib庫連結順序以及庫名稱選擇的方法。


下面這裡看清楚行號了,跟上面不一樣,是單執行緒部分的設定(多執行緒這裡無需設定,直接跳過)。同樣,如果用intel其他版本編譯器套件的話,這裡可以設定,可以不設定箭頭指向及方框的內容。但是如果用的是intel2017 update4來編譯的話,則一定要設定。

千萬千萬注意:(這是官方的bug)

不管是否設定箭頭指向及方框中的內容,都一定要把如下圖所示的“--start-group”上面的那一行(即這裡顯示的第301行,可能跟你那裡顯示的行數不一樣,但是記住,實在單執行緒這裡的“--start-group”上一行,即“$(MKLROOT)/lib/mic/libmkl_scalapack_lp64.a”這一行)的最後面加一個空格,然後輸入一個反斜槓(注意,反斜槓後面千萬不能有任何字元,包括空格);如果是使用預設設定,即不修改箭頭指向及方框中的內容,則一定還要把“LIBS  +=”的下面這一行(即圖所顯示的315行,即“$(MKLROOT)/lib/intel64/libmkl_scalapack_lp64.a”這一行)的後面加上一個空格,再加上一個反斜槓,反斜槓後面也不能有任何字元。


這裡專門幫你選擇MKL相關數學庫的連結順序的,非常棒!!

教你如何選擇連結庫順序,包括上面的elpaconfigure部分我也是從這裡查詢並根據elpa的安裝文件揉和而成的:

首先選擇intel產品的版本:


選擇系統:


協處理器選擇NONE(至少我的機器是選擇NONE):


編譯器:

架構:


選擇靜態連結:


選擇32位整型:

相關推薦

CP2K4.1-release & 最新5.x-development 程序執行(MPI+OPENMP) (psmp & popt)詳細編譯安裝教程極致優化加速(編譯器譯版)

CP2K 4.1-release & 最新5.x-development 多程序多執行緒(MPI+OPENMP) (psmp版 & popt版)超詳細編譯安裝教程極致優化加速版(全

禪道9.5.1詳細下載安裝教程

溫馨提醒:安裝禪道之前要部署PHP、MYSQL環境哦!博主之前有用php & MYSQL寫過程式碼,環境已經配置過,本次教程就暫不介紹了一、下載安裝包禪道安裝包已經上傳到百度雲,有需要的同學可以自行下載連結:https://pan.baidu.com/s/1alidQ

Linux程序執行同步的幾種方式

   引用:http://community.csdn.net/Expert/TopicView3.asp?id=4374496 linux下程序間通訊的幾種主要手段簡介:    1. 管道(Pipe)及有名管道(named pipe):管道可用於具有親緣關係程序間的通訊,有名管道克服了管道沒有名字的

執行程序執行池、程序

多工 不管是單核CPU還是多核CPU,一旦任務數量超過核數,OS都會把每個任務輪流排程到每個核心上。OS實現多程序和多執行緒往往是通過時間片的形式執行的,即讓每個任務(程序/執行緒)輪流交替執行,因為時間片切分的很小,以至於我們感覺多個任務在同時執行。 如果

程式設計思想之執行程序(2)——執行優先順序與執行安全

《程式設計思想之多執行緒與多程序(1)——以作業系統的角度述說執行緒與程序》一文詳細講述了執行緒、程序的關係及在作業系統中的表現,這是多執行緒學習必須瞭解的基礎。本文將接著講一下執行緒優先順序和執行緒安全。 執行緒優先順序 現在主流作業系統(

程序執行模型與單程序執行模型之爭

伺服器,事件 多程序單執行緒模型典型代表:nginx 單程序多執行緒模型典型代表:memcached 另外redis, mongodb也可以說是走的“多程序單執行緒模”模型(叢集),只不過作為資料庫伺服器,需要進行防寫,只提供了讀同步。 原因很簡單,因為伺服器的發展大部分都

10-執行程序執行池程式設計

一、多執行緒、多程序和執行緒池程式設計 1.1、Python中的GIL鎖   CPython中,global interpreter lock(簡稱GIL)是一個互斥體,用於保護對Python物件的訪問,從而防止多個執行緒一次執行Python位元組碼(也就是說,GIL鎖每次只能允許一個執行緒工作,無法多個執行

在elasticsearch 5.X下配置單機節點

為什麼要在單機下配置 我機器很多,可以為所欲為的,為什麼還要擠到一臺機器上去? 最主要的原因是:elasticsearch單例項最大記憶體是建議不超過32G的,現在的伺服器一般記憶體都比較大了,想充分使用機器的記憶體就要多開例項 怎麼配置 0.環境

java執行1程序執行

多執行緒樣例 我們用工人卸貨舉例:有一集裝箱的貨物等待卸車,共100個箱子,一個工人一次只能搬一個箱子。 如果只有一個工人,那麼該工人需要搬運100次,而且是不停歇的搬運。 如果有5個或者10個工人,那麼平均每個工人只需要搬運20或者10次就可以了。 甚至有1

MFC筆記(四)——執行程式設計1:模組、程序執行間的基本概念

一、模組、程序、執行緒 1.1 模組         一段可執行的程式(包括EXE和DLL),其程式程式碼、資料、資源被載入到記憶體中,由系統建立一個數據結構來管理它。這段程式就是一個模組。這裡所說

【鐵匠Smith先生的專欄】關注Linux系統軟體開發、多媒體圖形技術、Linux OS技術、多程序多執行緒併發網路程式設計、架構模式研究與實踐、AI等新技術動向、C/C++最新程式設計技術、開原始碼整合與應用等

關注Linux系統軟體開發、多媒體圖形技術、Linux OS技術、多程序多執行緒併發網路程式設計、架構模式研究與實踐、AI等新技術動向、C/C++最新程式設計技術、開原始碼整合與應用等...

java執行1、程式、程序執行

宣告:本教程不收取任何費用,歡迎轉載,尊重作者勞動成果,不得用於商業用途,侵權必究!!! 文章目錄 程式 程序 執行緒 程式 是計算機指令的集合,它以檔案的形式儲存在磁碟上。   程序 是一個程式在其自身的地址空間中的一次執行活動。 如:當我

javaSE高階開發執行——1 程序執行 and 2 執行的實現

一、程序與執行緒 1.程序的概念 執行緒隸屬於某個程序,程序是一個程式的執行週期,但是我們的執行緒是執行程序中的某個任務 所以如果程序不存在的話,那麼執行緒自然也就不會存在了。 我們應該時刻將執行緒和任務對等起來,執行一個程式啟動一個程序。這樣就可以提升沃恩程式的執行

一個關於執行的經典面試題,要求用三個執行,按順序列印1,2,3,4,5.... 71,72,73,74, 75. 執行1先列印1,2,3,4,5, * 然後是執行2列印6,7,8,9,10, 然後是

package thread; /**  *   * 一個關於執行緒的經典面試題,要求用三個執行緒,按順序列印1,2,3,4,5.... 71,72,73,74, 75. 執行緒1先列印1,2,3,4,5,  * 然後是執行緒2列印6,7,8,9,10, 然後是執行緒3列印

Java執行1:程序執行

1.什麼是程序? 程序是作業系統結構的基礎,是一次程式的執行,是系統進行資源分配和排程的一個獨立單位。 這個解釋有點懵了。簡單來講就是一個正在作業系統中的執行的exe程式就是一個程序。 2.什麼是執行緒? 執行緒可以理解為是在程序中獨立執行的子任務。

重學瀏覽器(1)-程序執行的瀏覽器

瀏覽器是我們上網的一個重要工具,是我們重要的資訊來源,這裡以Chrome瀏覽器為物件,同時作為一名前端工程師,之前對於瀏覽器的認知還不夠深入,所以藉著這一系列的文章,進行瀏覽器的逐步分析與學習,加深自己的知識儲備。同時這部分知識也是做頁面效能優化,健康度監控等工具時所必須的基礎知識。 程序和執行緒 程序

CentOS 7中Nginx1.9.5編譯安裝教程systemctl啟動

pat align temp prefix 軟件 復制代碼 all automake 軟件目錄 先安裝gcc 等 yum -y install gcc gcc-c++ wget 復制代碼 .然後裝一些庫 yum -y install gcc wget automa

1、試對程式,程序執行的慨念和功能進行比較?

答:程式 是計算機指令的集合它,以檔案的形式儲存在磁碟上。 程序是一個程式在其 自身的地址空間中的一次執行活動。 程序是資源申請、排程和獨立執行的單位,因此,它使用系統中的執行資源,而程式不能申請系統資源,不能被系統排程,也不能作為獨立執行的單位,因此,它不佔系統的執行資源。 執行緒:程序中的一個單一的連續控

程序執行執行基本概念

程序、執行緒和多執行緒基本概念 一、概念 1、程序(process) 狹義定義:程序就是一段程式的執行過程。 廣義定義:程序是一個具有一定獨立功能的程式關於某個資料集合的一次執行活動。它是作業系統動態執行的基本單元,在傳統的作業系統中,程序既是基本的分配單元,也是基本的執行單元。

spider ---- 程序&執行+++程序&執行

1案例演示: 程序-面向過程 import time from multiprocessing import Process def sing(): for x in range(1, 6): print('你在唱女兒情') time