Julia 기반 병렬 스무딩 유한요소 해석 패키지 juSFEM 소개
초록
본 논문은 Julia 언어를 활용해 다중 코어 CPU에서 실행되는 병렬 스무딩 유한요소법(S‑FEM) 패키지 juSFEM을 설계·구현하고, ABAQUS와의 정확도 비교 및 2백만 개 tetrahedral 요소를 가진 3차원 빔 모델에 대한 성능 테스트를 통해 기존 FEM 소프트웨어 대비 40% 이상의 계산 속도 향상과 24코어 환경에서 약 20배의 병렬 가속 효과를 입증한다.
상세 분석
juSFEM은 Liu가 제안한 스무딩 유한요소법(S‑FEM)의 장점을 유지하면서 계산 효율성을 극대화하기 위해 Julia의 멀티코어 병렬 처리 기능을 적극 활용한다. 기존 S‑FEM은 평활화 영역을 정의하고 영역 경계에서의 변형률을 적분함으로써 전통 FEM보다 큰 전역 강성 행렬 대역폭을 갖는다는 단점이 있었으며, 이는 대규모 3차원 문제에서 계산 비용을 급증시켰다. 저자들은 이러한 구조적 비효율을 두 가지 측면에서 개선한다. 첫째, 알고리즘 레벨에서 평활화 영역(면 기반, FS‑FEM) 생성과 변형률 계산을 모듈화하고, 각 평활화 영역에 대한 기하학적 정보와 가우스 포인트를 사전 계산하여 반복 단계에서의 연산량을 최소화한다. 둘째, Julia의 SharedArrays와 addprocs 등을 이용해 요소와 평활화 영역을 작업 단위로 분할하고, 각 프로세스가 독립적으로 로컬 강성 행렬을 조립하도록 설계함으로써 데이터 의존성을 최소화한다. 이때 전역 강성 행렬은 CSR/CSC 형식으로 저장하고, 병렬 조립 단계에서 원자적(atomic) 연산 대신 각 프로세스가 로컬 버퍼에 누적한 뒤 한 번에 합치는 방식을 채택해 메모리 충돌을 방지한다.
구현 상세에서는 T4(4‑node tetrahedral) 요소를 기본으로 삼아, 면 기반 평활화 영역을 정의하고, 각 면에 대해 내부와 외부 영역을 구분해 체적을 계산한다. 변형률 평활화 함수 φ는 단위 부피당 상수값을 갖는 단순 형태이며, Green’s divergence theorem을 적용해 면 적분으로 변형률-변위 관계를 전개한다. 이 과정에서 Gauss 점과 면적을 미리 테이블화해 계산 오버헤드를 크게 낮춘다.
성능 평가에서는 두 가지 벤치마크를 수행한다. 첫 번째는 정밀도 검증으로, 동일한 메쉬와 경계 조건을 사용해 ABAQUS와 결과를 비교했을 때 변위와 응력 분포가 거의 일치함을 보였다. 두 번째는 대규모 3차원 캔틸레버 빔(요소 수 ≈ 2 × 10⁶) 모델에 대한 실행 시간 비교이다. juSFEM은 단일 코어 환경에서 약 543 초, 24코어 병렬 환경에서는 27 초 내외(≈20배 가속)를 기록했으며, ABAQUS는 동일 모델을 930 초에 수행했다. 이는 Julia의 JIT 컴파일과 고성능 BLAS/LAPACK 연동, 그리고 효율적인 메모리 관리가 결합된 결과라 할 수 있다.
또한 코드 구조는 전처리(메시 생성·평활화 영역 구축), 솔버(강성 행렬 조립·경계 조건 적용·선형 시스템 해결), 후처리(결과 시각화·데이터 출력)로 명확히 구분되어 모듈화가 용이하며, 각 모듈은 함수형 프로그래밍 스타일로 구현돼 가독성이 높다. 오픈소스로 공개된 GitHub 레포지터리는 문서화와 테스트 케이스를 포함하고 있어, 연구자와 엔지니어가 손쉽게 확장·수정할 수 있다. 다만 현재 GPU 가속은 지원하지 않으며, 병렬 효율은 코어 수가 증가함에 따라 포화 현상이 나타나는 점이 향후 개선 과제로 남는다.
전반적으로 juSFEM은 S‑FEM의 정확성을 유지하면서도 Julia 기반 병렬 구현을 통해 실용적인 계산 속도를 제공하는 첫 번째 오픈소스 패키지이며, 학술·산업 현장에서 대규모 탄성 해석을 수행하려는 사용자에게 유의미한 대안이 된다.
댓글 및 학술 토론
Loading comments...
의견 남기기