최근 그래프 최단 경로 알고리즘을 Rust로 오픈소스하려다 막혔어. Rayon으로 병렬 처리 넣었더니 메모리 사용량이 8배로 폭발하네. 멀티스레드 안전을 위해 Arc<Mutex>로 래핑하니까 캐시 미스 줄줄이 터져서 오히려 싱글 스레드보다 느려졌어.
문득 든 생각이 이거잖아. 고성능 그래프 연산은 결국 메모리 레이아웃이 핵심인데, Rust의 타입 시스템이 너무 엄격해서 손 댄다고 고칠 수가 없잖아. C++로 짜면 raw pointer 써서 고민 없이 최적화하는데.
게다가 테스트 코드 작성해보니 성능 벤치마크 결과가 M1과 x86에서 완전히 달라서 헤드끔. 동일 알고리즘인데도 SIMD 활용 방식 최적화가 달라야 하니 유저들이 이거 고치랄까 봐 겁난다. 언제부터 그래프 계산이 플랫폼 의존성까지 신경 쓰게 된 거야.
솔직히 지금 포기할까 싶은 게 사실이야. 오픈소스 컨트리뷰터들은 '머신러닝이 아니면 별로 쓸모 없을 거야' 하고 무시하니까 더 속상하고. 하지만 포기하기 싫어서 혹시 Rust 그래프 알고리즘 같은 거 만들다 성공하신 분들 조언 좀 받고싶다.
출처
- Ask HN: Feedback on a Rust graph algorithm framework? (community_intel)
- Ask HN: For solopreneurs – how to you solve architecture? (community_intel)
- How are teams managing Windows devices remotely today? (community_intel)