기상연구소 응용 프로그램 (MODTRAN) 시스템 별 성능 측정 결과 보고 2004. 7. 21 ㈜ 클루닉스 기술부
목 차 테스트 요구 사항 테스트 시스템 환경 테스트 결과 테스트 진행자 결론 - 첨부 : 테스트 진행 과정
테스트 요구 사항 MODTRAN/MM5 성능 테스트 Process Architecture별로 테스트 진행 MODTRAN 프로그램 구동 과정 중 생성된 MM5_user_card 를 ses.exe 실행명령으로 실행 했을 때의 실행 속도를 체크함. 테스트 진행 중 시스템 Resource 의 사용 현황 파악 및 병목 Resource 측정 Process Architecture별로 테스트 진행 Opteron AMD64 / Itenium2 / Xeon 시스템 별 테스트 성능 측정 각 시스템 환경에 최적한 구성 요소로 테스트 진행 함 ( OS, Compiler )
테스트 시스템 환경 Opteron AMD 64 시스템 Itenium2 IA 64 시스템 P-IV (Xeon) IA 32 시스템 Opteron AMD 64 Dual Processor ECC registered Memory 2G Ultra 320 SCSI 36G PGI –AMD64 Compiler Itenium2 IA 64 시스템 Itenium2 IA 64 Dual Processor ECC registered Memory 1G Intel Fortran Compiler ( Itenium2 전용 ) P-IV (Xeon) IA 32 시스템 Xeon 2.4G(Hyper Threading) IA 32 Dual Processor PGI –X86 Compiler
테스트 결과 시스템 별 MODTRAN(ses.exe)수행 성능 결과 ( 단위 : 초 ) AMD64 IA64 IA32 1개 MM카드 프로세스 1개 100개 346개 34256 (예상치) AMD64 0.8초 82초 1분 22초 311초 5분 11초 29115초 약 8시간 IA64 1.4초 150초 2분 33초 530초 8분 50초 51381초 약 14시간 IA32 1.9초 191초 3분 11초 671초 11분 11초 66795초 약 19시간
테스트 진행자 결론 테스트 결과 Opteron AMD 64 시스템이 Itenium2 시스템의 1.5배, Xeon 시스템의 2배 이상의 성능을 나타내는 것을 확인함. 위 작업 중의 성능 관련 요인은 System I/O 와 Compiler의 영향이 큼. System I/O 의 경우 AMD64 와 Itenium2가 거의 비슷한 성능을 나타냄. Xeon 의 경우 3~4배 정도 성능이 떨어짐. (동일작업 수행 시 vmstat 로 system i/o 측정 ) Compiler 의 경우 PGI Compiler 가 Intel Compiler 에 비해 성능이 1.5배 정도 뛰어남. ( 실제 Xeon 시스템에서 Compiler 를 가지고 테스트 한 결과임 ) Compiler 옵션을 최적화 함으로도 30% 정도의 성능향상이 있었음.
테스트 진행 과정 -1 MODTRAN_PATH : /data/MODTRAN [clunix@otn2 DATA]$ cd /data/MODTRAN/MODTRAN/DATA/ [clunix@otn2 DATA]$ pgf90 -byteswapio MOLBMP.f [clunix@otn2 DATA]$ ./a.out PROGRAM MOLBMP: CONVERTS BETWEEN THE SEQUENTIAL-ACCESS ASCII (FORMATTED) AND THE DIRECT-ACCESS BINARY (UNFORMATTED) MODTRAN4 MOLECULAR BAND MODEL PARAMETER FILES (THE FILE FROM WHICH DATA IS READ IS NOT DELETED). ENTER 1 TO CREATE BINARY (UNFORMATTED) FILE FROM ASCII (FORMATTED) FILE 2 TO CREATE ASCII (FORMATTED) FILE FROM BINARY (UNFORMATTED) FILE --> 1 ENTER ASCII BAND MODEL FILE NAME (MAX 150 CHARACTERS) [ENTER 0 FOR NAME = "MOLBMP96.ASC"] [ENTER 1 FOR NAME = "BMP96_15.ASC"] [ENTER 2 FOR NAME = "BMP97_01.ASC"] [ENTER 3 FOR NAME = "BMP97_15.ASC"] --> 2 ENTER BINARY BAND MODEL FILE NAME (MAX 150 CHARACTERS) [ENTER 0 FOR NAME = "MOLBMP96.BIN"] [ENTER 1 FOR NAME = "BMP96_15.BIN"] [ENTER 2 FOR NAME = "BMP97_01.BIN"] [ENTER 3 FOR NAME = "BMP97_15.BIN"] -> 2 WARNING: THE FILE "BMP97_01.BIN" ALREADY EXISTS. DO YOU WISH TO OVERWRITE THE PRE-EXISTING FILE (Y/N)? -> Y
테스트 진행 과정 -2 [clunix@otn2 novam]$ ./createnovam.exe ************************************************* * THIS MACHINE REQUIRES THAT OPTION "RECL" BE * * SET EQUAL TO 60 IN ROUTINE "driver.f" * ************************************************* 실행이 끝나면 MODTRAN_PATH/MODTRAN/srcmod37/driver.f 가 생성된 driver.f 의 492열의 RECL 값이 60 으로 되어져 있는지 확인 ( 안되어져 있으면 수정 ) [clunix@otn2 DATA]$ cat ../srcmod37/driver.f | grep RECL 1 FORM='UNFORMATTED',RECL=60) [clunix@otn2 DATA]$ cd novam [clunix@otn2 novam]$ ./createnovam.exe [clunix@otn2 novam]$ cd ../.. [clunix@otn2 MODTRAN] $ make // objmod37 밑에 object 파일과 ses.exe 실행 파일 생성 [clunix@otn2 DATA]$ cd /data/MODTRAN/MM5_INTPUT/ [clunix@otn2 MM5_INTPUT]$ pgf90 -byteswapio read_mmout.f [clunix@otn2 MM5_INTPUT]$ ./a.out // MODTRAN_PATH/MM5_INPUT/DATA/MMOUT_DOMAIN3_00 파일 생성 // MODTRAN_PATH/DATA/LATLON.DAT 파일 생성
테스트 진행 과정 -3 [clunix@otn2 MM5_INTPUT]$ cd ../PROG/ [clunix@otn2 PROG]$ pgf90 extra.f [clunix@otn2 PROG]$ ./a.out // MODTRAN_PATH/DATA/MM5_TOTAL_PROFILE.DAT 파일 생성 [clunix@otn2 PROG]$ pgf90 mm5_user_card.f [clunix@otn2 PROG]$ ./a.out // MODTRAN_PATH/OUT 에 MM5_001001.tp5 ~ MM5_346356.tp5 의 mm5_user_card 가 생성 [clunix@otn2 PROG]$ cd ../MODTRAN [clunix@otn2 MODTRAN]$ echo ../OUT/MM5_001001 > modroot.in [clunix@otn2 MODTRAN]$ ./ses.exe 001001 test= ../OUT/MM5_001001.plt FORTRAN STOP // 실제 ../OUT/MM5_001001.plt 의 생성 여부와 내용을 확인 한다. [clunix@otn2 MODTRAN]$ vi ../OUT/MM5_001001.plt --------------------------------------------------------------------- 14.285714 2.46668E-04 14.265335 2.63368E-04 14.245014 2.57361E-04 14.224751 2.46913E-04 14.204545 2.81389E-04 14.184397 2.73469E-04 14.164306 3.09649E-04 14.144272 2.76672E-04
테스트 진행 과정 -4 마지막 ses.exe 실행 파일을 실행하는 속도 측정이 이번 테스트의 목적임 ses.exe 를 생성할려면 modroot.in 파일에 각 mm5_user_card 를 한개씩 넣어서 실행해야 한다. 총 card 수가 12만개 정도를 일일이 수작업으로 modroot.in 에 해당 card 를 적고 ses.exe 를 수행하는건 비효율적이며 결과의 신빙성이 떨어 짐으로 간단한 수행 Script 를 작성함. # vi speedchk ------------------------------------------------- #!/bin/sh spdchk () { list=`cat card_list` for var in `echo $list` do echo $var > modroot.in ./ses.exe done } if [ $# -ne 1 ] then echo -n " Input Start MM5_Card Number !! ” exit; fi find ../OUT -name MM5_${1}*.tp5 > file_list.tmp sort file_list.tmp > file_list sed -e 's/.tp5//' file_list > card_list time spdchk ------------------------------------------------
Supercomputing for Everyone Clunix, Inc. ㈜클루닉스 152-766 서울특별시 구로구 구로3동 197-22 에이스테크노타워 5차 1007호 Tel : + 82 2 3486 5896 Fax : + 82 2 3486 3959 www.clunix.com