25만 줄 레거시 기상 시뮬레이션 코드를 AI 에이전트로 GPU 포팅한 사례
AI-Assisted GPU Porting of a 250k Line Legacy Weather Simulation Code
TL;DR Highlight
AI 에이전트로 Fortran 25만 줄을 GPU로 옮겨 앱 전체 5.1배 빨라졌다
Who Should Read
오래된 대형 코드베이스를 AI 에이전트로 마이그레이션하면서 결과가 맞는지 검증 방법이 고민인 백엔드·HPC 개발자
Core Mechanics
- 검증 중심 워크플로로 포팅했다
- CReSS는 25만 줄이 넘는 Fortran 기상 시뮬레이션 코드다.
- CLI 기반 AI 에이전트가 OpenMP 구간 추출, 덤프 기반 커널 벤치마크 생성, OpenACC 변환, 검증을 맡았다.
- 검증은 덤프 데이터와 요소별 비교로 했다
- 물리적으로 의미 있는 시뮬레이션 상태에서 덤프를 만들어 기준 데이터로 썼다.
- 결과를 원소 단위로 비교한 뒤 애플리케이션 수준에서도 검증했다.
- 실제 태풍 시뮬레이션에서 162개 커널을 검증했다
- 수치 검증을 통과한 GPU 구현을 162개 대상 커널에 대해 만들었다.
- 앱 전체 속도는 5.1배 빨라졌고, 개발 시간은 실무적인 wall-clock 비용 안이었다고 한다.
- 커널 5개에서 수치 불일치를 찾아냈다
- 원인은 부동소수점과 intrinsic 함수(언어 내장 수학 함수) 차이였다.
- 임계값에 민감한 분기 갈라짐과 소거(cancellation) 효과도 포함됐다.
- 이 결과는 앱 개발자에게 피드백됐다.
- 코드 생성만으로는 부족하다
- 세션을 넘나드는 컨텍스트 관리가 필요했다.
Community Reactions
- 큰 코드베이스 검증이 포팅보다 오래 걸렸을 거라는 의견
- 25만 줄의 엣지 케이스 수치 정확성 검증이 포팅 자체보다 두 배는 걸렸을 것이라는 댓글이 있었다.
- 1960년대 Fortran 원자로 시뮬레이터에 써 보고 싶다는 반응
- 오래된 Fortran 시뮬레이션 코드에 같은 방식을 적용해 보겠다는 댓글이 있었다.
How to Apply
- 마이그레이션 전 기준 출력 덤프 만들기
- 오늘 레거시 모듈 하나를 골라 대표 입력으로 입출력 값을 파일에 저장하라.
- 변환 후 결과와 원소 단위로 비교하는 스크립트부터 작성하라.
- 에이전트에게 변환과 검증을 한 루프로 시키기
- 코드 변환 지시에 덤프 비교 통과를 완료 조건으로 넣어라.
- 실패한 요소의 위치와 오차를 에이전트에게 다시 보여줘 수정시켜라.
- 불일치는 버그와 구분해 기록하기
- 부동소수점·내장 함수 차이로 생긴 오차는 별도 목록으로 남겨라.
- 분기 임계값 근처 케이스는 원본 개발자와 함께 확인하라.
- 세션 간 컨텍스트를 문서로 남기기
- 에이전트 세션이 바뀌어도 이어지도록 진행 상태와 검증 결과를 파일로 저장하라.
- 다음 세션 시작 때 그 파일을 먼저 읽게 하라.
Try It
# Claude Code 또는 ChatGPT에 붙여넣기 (논문 방법의 간이 버전)
당신은 레거시 코드 포팅 에이전트입니다. 아래 함수를 {{목표 환경}}용으로 변환하세요.
[원본 코드]
{{코드}}
[기준 입출력 덤프 설명]
{{덤프 파일 경로 또는 샘플}}
규칙:
1. 변환 후 덤프와 요소별로 비교하는 검증 코드를 먼저 작성한다.
2. 불일치가 있으면 위치와 오차를 표로 보고한다.
3. 원인이 부동소수점, 내장 함수 차이, 분기 임계값, 소거 중 무엇인지 분류한다.
4. 버그와 수치 차이를 구분해 기록한다.
이어서 해 볼 것: 진행 상태를 PORTING_NOTES.md로 정리해 달라고 요청하세요.Terminology
관련 논문
같은 시뮬레이션, 다른 근거: 도구 출력을 파일로 넘기면 LLM 에이전트 정확도가 어디서 깎이나
긴 툴 출력을 파일로 넘기자 GPT-5.1은 정확도 11.3%p 하락, 정식 출력 지정하니 회복
가짜 뉴스가 진짜 폭락을: LLM 트레이딩 에이전트 대상 정보 주입 공격
가짜 헤드라인 한 줄로 LLM 트레이딩 에이전트 62%를 조종했다(프롬프트 주입은 14%)
Harness Engineering 101: LLM은 뇌, harness는 몸
에이전트는 JSON 배열을 관리하는 루프이고, 16개 챕터로 직접 만들어 본다
Harness²: 에이전트 harness를 스스로 고쳐 쓰는 재귀 최적화 프레임워크
모델은 고정하고 harness를 재귀로 고쳤더니 벤치마크 점수가 최대 11.8%p 올랐다
해고된 Savannah 경찰관, ICE 요원 남편에게 Flock 계정 공유
경찰관이 Flock 계정을 남편(ICE 요원)에게 공유했고, 감사에서 983건 검색이 드러나 해고됐다
tmux와 Claude Code: 세션, send-keys, 그리고 한계선
tmux로 Claude Code 여러 개를 돌리면 편하지만 에이전트 4개쯤에서 한계가 온다
Hybrid Reasoning Agents: 잠재 공간에서 생각하고 텍스트로 행동하는 LLM 에이전트
잠재 공간 추론과 텍스트 도구 호출을 섞었더니 성능 10.4%↑, 토큰 최대 54.7%↓