[성능/아키텍처] FOriginBasedUE 공로 배정 수렴 지연 원인 분석 및 단계별 최적화 로드맵 #19
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
1. 배경 및 분석 대상
FOriginBasedUE/FOriginBasedUE.slnFAssignment(OriginBasedUE_SingleClass.f90)2. 핵심 병목 지점 및 지연 원인 (Technical Deep Dive)
do k1 = 1, InnerIter(500)루프 내에서 존(Zone) 수만큼 반복되는SearchMinMaxPath+VolumeShift연산이 전체 시간의 대부분을 점유.VolumeShift단계(PathBasedUE.f90)에서 유량 업데이트 시pow(X, beta)형태의 지수 연산이 반복적으로 발생하여 CPU 부하 가중.BranchToBush→UpdateBush→OrderingWithCycle→BushToBranch)이 모든 존을 대상으로 수행되어 매 반복마다 상당한 비용 발생.Freq=501은 내부 반복 상한(500회)을 모두 소진했음을 의미하며, 이는 현재의 파라미터나 구조로 수렴 지점에 도달하는 데 난항을 겪고 있음을 시사.3. 최적화 로드맵 (Action Plan)
Phase 1: 결과 보존형(Equivalence) 최적화 (즉시 적용 가능)
ReadData.f90:1123)가 이미(oz, dz)순으로 정렬되어 있다면 불필요한 재정렬 루프를 스킵하도록 조건부 로직 추가.DefineNetworkType매핑 및PCU/OCCUPANCY계수 등 반복 계산되는 항목들을 사전 계산 테이블(Lookup Table)화하여 재사용.Phase 2: 수렴 파라미터 및 알고리즘 조정 (검증 병행)
InnerIter,bRGap,bMaxShiftVolume,bTGap파라미터를 점진적으로 완화.ExclusiveHOV(2)등 턴 생성에서 제외되는 링크 타입에 대한 분기 처리를 조기에 수행하여 루프 계산량 감소.4. 관련 소스 코드 위치
OriginBasedUE_SingleClass.f90:394-424PathBasedUE.f90:1182-1210ReadData.f90,VariableDefine.f90