Link Search Menu Expand Document

國網上執行MCIP5.1

Table of contents

背景

平行運作方案

  • 考量平行運作的主要原因,是針對wrfout的pnetcdf特性,如果平行運作能夠成功,就不需要另外進行轉檔。
  • 腳本中須設定特殊環境變數
    • 這些變數在所有公開範例中都沒有出現過
    • $NPCOL_NPROW是CCTM調控分配多核心程緒的依據
    • $GRID_NAME似與namelist中的grdnam = $GridName重複了
    • $GRIDDESC指得是一個輸入檔,而不是輸出檔(namelist中的file_gd = "$FILE_GD")。
60,62d58
<   setenv NPCOL_NPROW '1 1'
<   setenv GRID_NAME $GridName
<   setenv GRIDDESC $DataPath/wrfout/GRIDDESC_45
250c246
< setenv IOAPI_CHECK_HEADERS  T
---
> setenv IOAPI_CHECK_HEADERS  F
  • csh 腳本中slurm的啟動
    • 因為module是bash環境下的函數,在csh環境下則為一別名(alias),在腳本中不能作用,必須回歸到原始的定義來運作。
    • $LMOD_CMD為內定的lmod程式
    • 詳參csh腳本中執行module
set ProgDir    = $CMAQ_PROJ/PREP/mcip/src_5.0pnetcdf
...
eval `$LMOD_CMD tcsh load compiler/intel/2021 IntelMPI/2021 hdf5/1.12 netcdf/4.7.4 pnetcdf/1.12.2`  \
&& eval `$LMOD_SETTARG_CMD -s csh`
eval `$LMOD_CMD tcsh list`  && eval `$LMOD_SETTARG_CMD -s csh`
set MPI = /opt/ohpc/Taiwania3/pkg/intel/2021/mpi/2021.1.1/bin/mpiexec.hydra
mpirun -bootstrap slurm -n 1 $ProgDir/${PROG}.exe #  >& /dev/null
  • 這個intel MPI方案的mcip fortran程式似有錯誤,無法平行運作。
    • 發生錯誤訊息:Attempting to use an MPI routine before initializing MPICH
    • 參考csdn網友的說法,似乎程式中沒有在單進程階段先調用mpi_init,須進入原始碼中進行偵錯。
  • slurm設定方式
    • slurm環境變數在csh中無法作動,須以sh形式設定,另外再開啟csh環境
    • sbatch $fcst/csh_mcip.sh 45
$ cat csh_mcip.sh
#!/bin/sh
#SBATCH -A ENT111040             # Account name/project number
#SBATCH -J mcip                  # Job name
#SBATCH -p ct56                  # Partiotion name
#SBATCH -n 1                     # Number of MPI tasks (i.e. processes)
#SBATCH -c 1                     # Number of cores per MPI task
#SBATCH -N 1                     # Maximum number of nodes to be allocated
#SBATCH --ntasks-per-node=1      # Maximum number of tasks on each node
#SBATCH -o rsl.out.%j            # Path to the standard output file
#SBATCH -e rsl.error.%j          # Path to the standard error ouput file

module purge
csh /work/sinotec2/cmaqruns/forecast/run_mcip_DM.csh grid$1 11

序列運作方案

  • 重新編譯hdf5及netcdf4,以ifort而不是mpiifort來編譯,編譯設定詳不同機器上的編譯設定
  • 因為沒有module可以用,自行將所有程式庫放在${CMAQ_PROJ}/lib/x86_64/intel/all_noMPI目錄下,以${LD_LIBRARY_PATH}來引導。
set ProgDir    = $CMAQ_PROJ/PREP/mcip/src
...
setenv LD_LIBRARY_PATH ${CMAQ_PROJ}/lib/x86_64/intel/all_noMPI
< $ProgDir/${PROG}.exe
  • 這支程式可以順利執行,但只接受netcdf檔案,不接受pnetcdf寫出的檔案。需進行$BIN/trans_wrfout.py轉檔(詳見因應intel MPI轉換wrfout格式)。
    • 錯誤訊息:"NCF: NetCDF: Attempt to use feature that was not turned on when netCDF was built."
    • build設定(libnetcdf.settings)的差異如下
項目intel MPIserial說明
執行程式wrf.exemcip.exe前者為後者的上游
C Compilermpiccicc 
額外程式庫-lpnetcdf -lhdf5_hl -lhdf5 -lm -lz -lcurl-lm -lz -lcurl 
支援NC-4平行化 
支援PnetCDF前者具有平行化IO功能
支援DAP41前者可以透過網路調用
支援ERANGE Fill2超出範圍時的因應方式

腳本中用到的.py程式

  • 包括add_firstHr.pybrk_day.py
  • 使用/opt/ohpc/pkg/rcec/pkg/python/wrfpost/bin/python即可
  • 程式中使用到ncks、ncrcat等NCO程式,注意修改其出處路徑。

序列方案之執行與成果

...
  gd=gds[ndms][ii]
  os.system('/usr/bin/sbatch '+fcst+'/csh_mcip.sh '+gd)
  • mcip執行之後的成果,
    • 在$fcst/${GRD[$i]}/mcip目錄之下會產生CMAQ需要的氣象檔案。
    • 在$fcst/${GRD[$i]}/mcip/nc目錄下會有執行run_bcon_NC.csh所需要的邊界氣象檔

NetCDF是一種廣泛使用的數據格式,用於存儲科學和工程數據。DAP4(Data Access Protocol)是NetCDF的一個擴展,它提供了更強大和靈活的數據訪問功能,使得用戶可以更加方便地使用和管理NetCDF數據。 DAP4設置的用意是為了讓NetCDF數據能夠通過DAP4協議訪問。通過DAP4,用戶可以通過網絡遠程訪問NetCDF數據,並且可以按需訪問數據的不同部分。這使得NetCDF數據更加容易共享和管理,也使得科學家和工程師更加容易訪問和使用這些數據。 具體來說,DAP4設置可以在NetCDF數據文件中定義和設置一些元數據,例如變量名稱、變量單位、維度等等,這些元數據可以通過DAP4協議訪問。此外,DAP4還提供了一些API,例如使用RESTful Web服務器將數據發佈到網絡上,以及使用ODATA等協議來管理NetCDF數據。這些API可以讓用戶更加靈活地訪問和管理NetCDF數據,並且可以將數據共享到更多的地方。 總之,DAP4設置的用意是為了使NetCDF數據更加方便地進行網絡遠程訪問,並且提供了一些API和協議,使得用戶可以更加靈活地管理和共享這些數據。這些功能可以使得NetCDF數據更加廣泛地應用於科學和工程領域,並且可以讓科學家和工程師更加容易地訪問和使用這些數據。

NetCDF是一種用於存儲科學和工程數據的格式,ERANGE Fill支持是NetCDF的一種特性,它用於在寫入數據時擴展數據集的範圍,並且填充新的部分以保持數據集的一致性和完整性。 ERANGE是一個錯誤碼,它表示數據集的範圍已經達到了數據集所能容納的最大範圍,此時就無法再寫入更多的數據。在遇到這種情況時,ERANGE Fill支持可以擴展數據集的範圍,並且自動填充新的部分以容納更多的數據。這樣就可以繼續寫入數據,同時保持數據集的一致性和完整性。 ERANGE Fill支持的主要作用是在處理大型數據集時,提供一種方便的方法來管理數據集的範圍和內容,避免數據丟失或者數據集被截斷的情況發生。通過使用ERANGE Fill支持,用戶可以更加靈活地操作數據集,將數據集的範圍擴展到所需的大小,而不需要手動創建新的數據集。 總之,ERANGE Fill支持的用意是為了在NetCDF數據集寫入時提供更加靈活和自動化的管理方式,以保護數據集的完整性和一致性,同時避免數據丟失或被截斷的情況發生。

  1. 請解釋netcdf的DAP4設定用意為何?

  2. 請解釋netcdf之ERANGE Fill support用意何在?