24
2010.09.15 클루닉스/수석 컨설턴트 서진우 ([email protected]) www.clunix.com CONFIDENTIAL 한국타이어 ABAQUS 해석 시스템 문제 진단 컨설팅 결과 보고

한국타이어ABAQUS 해석시스템 문제진단컨설팅결과보고syszone.co.kr/PDF/hanta_abaqus_report-20100915.pdf · 2010-09-15 · CONFIDENTIAL ABAQUS Result 일관성오류발생원인분석(요청1)

  • Upload
    others

  • View
    41

  • Download
    1

Embed Size (px)

Citation preview

2010.09.15

클루닉스/수석 컨설턴트

서진우 ([email protected])

www.clunix.com

CONFIDENTIAL

한국타이어 ABAQUS 해석 시스템문제 진단 컨설팅 결과 보고

CONFIDENTIAL

Contents

1. 컨설팅 요청 사항

2. 결과 요약

3. Review ABAQUS Parallel Operation

4. 테스트 환경 소개

5. 테스트 결과

6. ABAQUS Result Verification

7. ABAQUS Environment Modification Recommendation

목차

CONFIDENTIAL

ABAQUS Result 일관성 오류 발생 원인 분석 (요청1)– ABAQUS Version 6.5-7 / Threads 환경에서 Explicit 모델 해석 시 결과의 inconsistency

문제 발생

– 해석 모델 : 195/65R15 K425 / PRAT <한국타이어 내부 모델>

– 동일 모델 / 동일 해석 조건 시 결과 파일(run.frc)의 참조 값이 동일 해야 함• 시간대 별 Fx 값이 전 해석 과정에서 동일하게 출력되어야 하나, 수치 차이 발생

• Fx 값 이외에 다른 column 의 값들도 모두 오차 발생

1. 컨설팅 요청사항

1차(오전 해석 수행) 2차(오후 해석 수행)오차율(%)

time Fx time Fx

0.129891 -8.43736 0.129891 -8.46943 100.4%

0.1299024 -6.51514 0.1299024 -9.01245 138.3%

0.1299138 -8.4342 0.1299138 -2.84842 33.8%

0.1299252 -9.75839 0.1299252 -6.55248 67.1%

0.1299366 -10.7496 0.1299366 -8.20106 76.3%

0.129948 -10.8205 0.129948 -9.69158 89.6%

0.1299594 -8.57185 0.1299594 -10.6627 124.4%

CONFIDENTIAL

ABAQUS 해석 수행 시 비 정상 강제 종료 문제 발생 원인 분석 (요청2)– ABAQUS 해석 수행 시 비 정상 강제 종료 문제 발생 (발생률 : 수%)

– 동일한 예제 해석 진행 시 경우에 따라 ABAQUS 강제 종료 증상 발견

– ABAQUS 해석 시 전반적인 시스템 안정화에 영향을 주는 원인 분석 및 해결 방안 모색

1. 컨설팅 요청사항

Run explicit_dp.exeABAQUS License Manager checked out the following licenses:ABAQUS/Explicit checked out 8 tokens.*** glibc detected *** /sfs/apps/CAE/Abaqus/6.5-7/exec/explicit_dp.exe: double free or corruption (!prev): 0x0000000003255410 ***======= Backtrace: =========/lib64/libc.so.6[0x2ab67775c684]/lib64/libc.so.6(cfree+0x8c)[0x2ab67775fccc]/lib64/libc.so.6(realloc+0x180)[0x2ab67775ffa0]/sfs/apps/CAE/Abaqus/6.5-7/cae/exec/lbr/libABQmem.so(mem_Realloc+0x25)[0x2ab676029195]

Restart Number 10 at 0.19000ODB Field Frame Number 100 at requested time intervals of 5.000000E-04 at 1.900000E-01

THE ANALYSIS HAS COMPLETED SUCCESSFULLY

*** glibc detected *** /sfs/apps/CAE/Abaqus/6.9-2/exec/explicit_dp.exe: munmap_chunk(): invalid pointer: 0x00000000117b0079 ***======= Backtrace: =========/lib64/libc.so.6(cfree+0x1b6)[0x2b7ddd570df6]/sfs/apps/CAE/Abaqus/6.9-2/External/libguide.so(___kmp_free+0x1d)[0x2b7ddd871c1d]======= Memory map: ========00400000-0051b000 r-xp 00000000 63c:e63d6 123936489 /sfs/apps/CAE/Abaqus/6.9-2/exec/explicit_dp.exe0061b000-0061f000 rw-p 0011b000 63c:e63d6 123936489 /sfs/apps/CAE/Abaqus/6.9-2/exec/explicit_dp.exe

CONFIDENTIAL

테스트 CASE 별 ABAQUS 실행 환경– 한국타이어에서 제공한 서로 다른 2개의 해석 예제를 이용하여, 다양한 방식의 ABAQUS Parallel 해석

수행– 모든 경우의 Total 해석 작업 수는 500번– 해석 환경 요구 조건 = ABAQUS v6.5-7 , MP_MODE=Threads

– 현 기본 환경은 CASE1에 해당됨

2. 결과 요약

DefaultMPI(SMP)DefaultIntel Fortran 9.16.5-7CASE4

LoopThreads-openmpIntel Fortran 8.16.5-7CASE7

DefaultThreads-openmpIntel Fortran 8.16.5-7CASE6

DefaultMPI(DMP)DefaultIntel Fortran 9.16.5-7CASE5

DefaultThreadsDefaultIntel Fortran 9.16.9-2CASE3

DefaultThreadsDefaultIntel Fortran 9.16.8-2CASE2

DefaultThreadsDefaultIntel Fortran 9.16.5-7CASE1

Parallel MethodMp_ModeCompile Option Compiler VersionABAQUS Version

CONFIDENTIAL

[요청1] 테스트 결과– 500번 반복 해석을 통해 해석 결과의 consistency 확인

– Test_old_ver : 문제 발견 예제, Test_new_ver : 다른 예제

2. 결과 요약

TrueTrueTrueTrueTrueTrueTrueTest_New_Ver

TrueFalseTrueTrueTrueTrueFalseTest_Old_Ver

CASE7CASE6CASE5CASE4CASE3CASE2CASE1

DefaultMPI(SMP)DefaultIntel Fortran 9.16.5-7CASE4

LoopThreads-openmpIntel Fortran 8.16.5-7CASE7

DefaultThreads-openmpIntel Fortran 8.16.5-7CASE6

DefaultMPI(DMP)DefaultIntel Fortran 9.16.5-7CASE5

DefaultThreadsDefaultIntel Fortran 9.16.9-2CASE3

DefaultThreadsDefaultIntel Fortran 9.16.8-2CASE2

DefaultThreadsDefaultIntel Fortran 9.16.5-7CASE1

Parallel MethodMp_ModeCompile Option Compiler VersionABAQUS Version

fitness

CONFIDENTIAL

[요청2] 테스트 결과

– 해당 문제는 로그 내용을 보면 Library 오류처럼 보이지만, 정확한 원인은 다양한 내,외부 원인을 통해 ABAQUS 해석이 강제 종료될 경우 발생되는 증세

– [요청1] 테스트를 위해 ABAQUS 실행 환경에 대한 최적화 작업을 완료한 상태에서 500번 해석을 수행하는 동안 [요청2]에 대한 문제 증세는 발견되지 않음

• 직접적인 문제 원인으로 단정할 수는 없지만, 현재 ABAQUS User Subroutine 환경이 적합한 조합으로 구성되지 않은 문제점 발견, 테스트 대상 서버(10대) 에 대해 적합 조합으로적용 완료 ( 19 page 참고)

2. 결과 요약

CONFIDENTIAL

[요청2] 테스트 결과

– 강제 종료를 유발할 수 있는 기타 외부 원인에 대한 운영 상의 주의 필요• 사용자 및 관리자에 의한 프로세스 강제 종료 주의

• 스케줄러에 의한 계산 서버 할당 시 단일 서버 내 core 구성으로 할당 필요

– Shared Memory 방식의 해석 요구 상황에 할당 서버가 분산될 경우, 해당 시점에서 해석강제 종료가발생할 수 있음.

– User Subroutine 시 compile 된 library가 모든 계산 서버에서 접근이 가능 해야 하는데, 현재 구성 환경에서는 각 계산 서버의 local tmp 디렉토리 밑에 subroutine library 생성. –scratch 옵션 사용으로 해결 가능

– Implicit 해석 시 scratch directory에 생성되는 임시 파일들이 모든 계산 서버에서 공유 가능해야 하나, 현태 구성에서는 공유가 되지 않는 상태 -> scratch 옵션 사용으로 해결 가능

• 스케줄러에 의한 작업 강제 종료 설정 유무 확인

– CPU Time, Using Memory Size 등에 Limit 설정 부여 가능, Limit 값에 해당되면 스케줄러가 강제 종료 수행

• 소수 특정 서버에 대한 H/W 상태 확인

2. 결과 요약

CONFIDENTIAL

ABAQUS Parallel Execution – 대규모 increments 나 contain을 요구하는 해석 모델의 Analyses 처리 시간을

단축하기 위한 실행 방법

ABAQUS Parallel 수행 환경– Shared memory architecture 환경

• Parallel 계산에 사용되는 processor들이 동일한 memory 영역을 공유하는 방식

• Thread-based or MPI-based parallel implementation

– Distributed memory architecture 환경• Parallel 계산에 사용되는 processor들이 각각 독립적인

memory 영역을 allocation하는 방식

• MPI-based parallel implementation

– 한국타이어 주요 Parallel 방식• Shared memory architecture의 Thread-based

Multi processor 환경

3. Review ABAQUS Parallel Operation

CONFIDENTIAL

Decomposition Method in ABAQUS/Explicit is available for – Domain-level decomposition Method

• 해석 모델을 자동으로 geometric domain 형태로 분할하여 각 계산 processor에 할당하는기법

• MPI-based parallel implementation에 적합, Threads-based 에서도 사용 가능

• ABAQUS’s default decomposition method

– Loop-level decomposition Method • 계산 가능한 대부분 항목(element, node, and contact pair operations)의 loop 구간을 low

level에서 자동으로 병렬 분할 시킴 .

• Threads-based parallel execution 환경에서만 지원 가능

• Threads-based 방식에서 보다 안정적인 병렬 계산 가능

• Domain-level decomposition에 비해 speedup factor가 적음

3. Review ABAQUS Parallel Operation

CONFIDENTIAL

Parallelization options summary for ABAQUS/Explicit (performance)

3. Review ABAQUS Parallel Operation

CONFIDENTIAL

테스트 시스템 환경 정보

최적화 전 ABAQUS 실행 구성 환경 정보

4. 테스트 환경 소개

내용항목

Test_old_ver ( 해석 결과의 일관성이 무시되는 문제 발생 예제 )

Test_new_ver ( 검증을 마친 비교 예제 ) 해석 예제

Abaqus Version, Compiler, User subroutine Compile Option, MP mode, Parallel Decomposition

최적화 요소

/sfs/home/CLX_BMT/CLUNIX_ABAQUS작업 디렉토리

Hsc1 ~ hsc10 ( 총 10대 )테스트 서버

2010년 8월 30일 ~ 2010년 9월 14일 ( 16일 소요 )작업 기간

MPI

MPI

MPI

MP Mode

DomainDefaultIntel 11.1Intel 9.16.5-7

DomainDefaultIntel 11.1Intel 9.16.9-2

DomainDefaultIntel 11.1Intel 9.16.8-2

ParallelCompile optionLibrary Link CompilerVersion

Fault

CONFIDENTIAL

테스트 시나리오 CASE 정의

– ABAQUS 병렬 환경 최적화 요소인 Compiler 버전, Compile 옵션, MP_mode, Parallel Decomposition 방식들을 서로 각각 조합하여 단위 테스트 수행

– ABAQUS 상위 버전에 대해서도 동일한 테스트 진행

4. 테스트 환경 소개

DefaultMPI(SMP)DefaultIntel Fortran 9.16.5-7CASE4

LoopThreads-openmpIntel Fortran 8.16.5-7CASE7

DefaultThreads-openmpIntel Fortran 8.16.5-7CASE6

DefaultMPI(DMP)DefaultIntel Fortran 9.16.5-7CASE5

DefaultThreadsDefaultIntel Fortran 9.16.9-2CASE3

DefaultThreadsDefaultIntel Fortran 9.16.8-2CASE2

DefaultThreadsDefaultIntel Fortran 9.16.5-7CASE1

Parallel MethodMp_ModeCompile Option Compiler VersionABAQUS Version

CONFIDENTIAL

테스트 진행 절차 [1]– ABAQUS version 별로 ABAQUS에서 공식적으로 권장하는 Compiler와 library환경 구성

• ABAQUS version 별로 기본 Solver 및 subroutine shared library를 build할 때 사용한compiler와동일한 버전의 compiler로 UMAT 혹은 VUMAT user subroutine library compile 하기를 권장함.

• 현재 모든 abaqus 버전에 대해 subroutine compile 시에는 intel 9.1 버전 compiler를 통해compile되고, library link는 intel 11.1 버전으로 연결됨

• V6.5 -> intel C++/Fortran version 8.1

• V6.7~6.9 -> intel C++/Fortran version 9.1

– ABAQUS 최적화 요소 별로 단위 테스트 수행• Abaqus(v6.5,v6.7,v6.8,v6.9) + intel compiler(v8, v9) + mp_mode(mpi,threads) + parallel

(domain,loop)

• User subroutine compile 시 –openmp 옵션을 통해 shared memory 환경에서 보다 안정적인threads 효과 구현 (Treads 방식 해석 시 결과가 정확하지 않을 경우 해당 옵션으로 해결한 사례많음)

• MPI-based 방식의 해석 시 hpmpi의 shared memory 지원 옵션을 추가함. –intra=shm

• MPI-based 방식에서 강제 distributed memory 환경에서 테스트 수행

• ABAQUS 6.5 Solver + ABAQUS 6.8 Subroutine library 조합 구성 테스트 수행

4. 테스트 환경 소개

CONFIDENTIAL

테스트 진행 절차 [2]– 해석 진행 중 출력 로그 점검으로 Inconsistency 가 발생하는 지점 확인

4. 테스트 환경 소개

CONFIDENTIAL

테스트 진행 절차 [3]– 해석 완료 후 run.frc 결과 파일을 서로 비교하여 consistency 유지 확인

4. 테스트 환경 소개

Inconsistency consistency

CONFIDENTIAL

테스트 진행 절차 [4]– Gnuplot 을 통해 Run.frc의 FX 와 FZ 값의 수렴 결과의 정확성 확인

4. 테스트 환경 소개

CONFIDENTIAL

테스트 결과

기본 환경 테스트 결과– Abaqus v6.5-7 Threads 의 경우 Test_old_ver의 FX 결과값 모두 불일치– Abaqus v6.5-7 MPI 의 경우 Test_old_ver의 FX 결과값 모두 일치. – Abaqus v6.7 이상 버전에서는 Threads, MPI 모든 경우에 FX 결과값 일치

응용 테스트 결과– 일관성 문제가 발생하는 조합의 경우 모든 작업 결과는 서로 일치하지 않음.

• 해석 진행 10% ( ODB Field Frame Number 3 of 72 ) 단계에서 결과의 일관성이 깨지는 증세 발견

– CASE6(intel fortran v8.1 + -openmp 옵션 사용)의 경우 CASE1에 비해 결과의 일관성이상대적으로 안정하게 유지되는 것을 확인

• 해석 진행 40% ( ODB Field Frame Number 25 of 72 ) 단계에서 결과의 일관성이 깨지는 증세 발견

– Parallel decomposition method 방식을 loop로 할 경우, Abaqus 6.5-7 Threads 환경에서 FX 및 모든 결과값 일치

5. 테스트 결과

TrueTrueTrueTrueTrueTrueTrueTest_New_Ver

TrueFalseTrueTrueTrueTrueFalseTest_Old_Ver

CASE7CASE6CASE5CASE4CASE3CASE2CASE1

CONFIDENTIAL

[Test_old_ver] results for the model verification

6. ABAQUS Result verification

FZ

FX

Thread-Based(CASE7)MPI-Based(CASE4)정상결과

FAULT

CONFIDENTIAL

ABAQUS User subroutine compiler 권장 버전으로 변경– Abaqus v6.5-7 의 build compiler version

– Abaqus v6.5-7 solver execution file의 library link 상태

7. ABAQUS Environment Modification Recommendation

Intel C++/Fortran v8.1

Intel C++/Fortran v11.1

CONFIDENTIAL

ABAQUS User subroutine compiler 권장 버전으로 변경– Abaqus v6.5-7 user subroutine compiler 적용 버전

– Abaqus v6.5-7 작업 수행 시 생성된 user subroutine library의 link 상태

7. ABAQUS Environment Modification Recommendation

Intel C++/Fortran v9.1

Intel C++/Fortran v11.1

CONFIDENTIAL

ABAQUS User subroutine compiler 권장 버전으로 변경– Abaqus v6.5-7 버전의 기본 compiler를 Intel Fortran v8.1 버전으로 교체

– 현재 설치된 Intel Fortran v8.1 의 32bit 전용 -> x86_64용으로 변경 필요• 32bit compile 사용 시 error 발생

– Global 환경 설정에 적용된 Intel Compiler v11.1 환경 설정 제거• Intel Compiler v9.1 환경 설정으로 대체

모든 Computing Node의 BIOS 설정 값 통일– Intel Nehalem 모델의 경우 BIOS의 Processor 설정 및 power management 설

정에 따라 CAE S/W의 해석 동작에 영향을 주는 경우 발생

– CPU clock frequency 설정을 Max에 맞춰 주시고, hyper-thread 관련 기능을 모두 off.

• Hyper-thread 기능 on : hsc9 , hsc30 ( 16core per node )

• CPU Clock frequency non-max : hsc4, hsc14 ( CPU clock 1.5GHz )

7. ABAQUS Environment Modification Recommendation

CONFIDENTIAL

스케줄러에 의한 계산 서버 할당 시 단일 서버 내 core 구성으로 할당

– Shared Memory 방식의 해석 요구 상황에 할당 서버가 분산될 경우, 해당 시점에서 해석 강제 종료가 발생할 수 있음.

– User Subroutine 시 compile 된 library가 모든 계산 서버에서 접근이 가능 해야하는데, 현재 구성 환경에서는 각 계산 서버의 local tmp 디렉토리 밑에subroutine library 생성. –> 해석 수행 시 scratch 옵션 사용

– Implicit 해석 시 scratch directory에 생성되는 임시 파일들이 모든 계산 서버에서 공유 가능해야 하나, 현태 구성에서는 공유가 되지 않는 상태 -> 해석 수행시 scratch 옵션 사용

7. ABAQUS Environment Modification Recommendation

CONFIDENTIAL

Performance for ABAQUS execution environment

ABAQUS Analyses Performance

Threads

Threads

Threads

Threads

MPI(dmp)

Threads

MPI(smp)

Threads

None

Mp_mode

6h12mDomain2DefaultIntel 9.16.9-1CASE10

7h42mDomain2DefaultIntel 9.16.8-2CASE09

7h42mDomain2DefaultIntel 9.16.5-7CASE08

7h50mDomain2openmpIntel 8.16.5-7CASE06

8h06mDomain2DefaultIntel 8.16.5-7CASE05

9h5mLoop2DefaultIntel 8.16.5-7CASE04

8h16mDomain2DefaultIntel 8.16.5-7CASE03

7h55mDomain2DefaultIntel 8.16.5-7CASE02

14h30mNone1DefaultIntel 8.16.5-7CASE01

Elapsed

TimeParallel

Number of

Core

Compile

Option

Compiler

Version

ABAQUS

Version