Skip to main content
QUICK REVIEW

[논문 리뷰] Reactive NaN Repair for Applying Approximate Memory to Numerical Applications

Shinsuke Hamada, Soramichi Akiyama|arXiv (Cornell University)|2018. 03. 26.
Parallel Computing and Optimization Techniques참고 문헌 11인용 수 3
한 줄 요약

이 논문은 수치 HPC 및 AI 워크로드에서 약간의 오차를 허용하는 주 메모리에 대해 실시간으로 NaN을 감지하고 복구하는 반응형 NaN 복구 메커니즘을 제안한다. x86 부동소수점 예외 기법을 활용하여 비 fatal한 수치 오류는 무시하면서도, 실시간으로 NaN을 감지하고 복구한다. 이 방법은 극히 낮은 오버헤드를 유발하여 결과의 타당성을 훼손하지 않으면서도 에너지 효율적인 약간의 오차를 허용하는 계산을 가능하게 한다.

ABSTRACT

Applications in the AI and HPC fields require much memory capacity, and the amount of energy consumed by main memory of server machines is ever increasing. Energy consumption of main memory can be greatly reduced by applying approximate computing in exchange for increased bit error rates. AI and HPC applications are to some extent robust to bit errors because small numerical errors are amortized by their iterative nature. However, a single occurrence of a NaN due to bit-flips corrupts the whole calculation result. The issue is that fixing every bit-flip using ECC incurs too much overhead because the bit error rate is much higher than in normal environments. We propose a low-overhead method to fix NaNs when approximate computing is applied to main memory. The main idea is to reactively repair NaNs while leaving other non-fatal numerical errors as-is to reduce the overhead. We implemented a prototype by leveraging floating-point exceptions of x86 CPUs, and the preliminary evaluations showed that our method incurs negligible overhead.

연구 동기 및 목표

  • 비트 플립으로 인한 단일 NaN이 약간의 오차를 허용하는 메모리에서 전체 수치 계산을 손상시킬 수 있는 심각한 문제를 해결한다.
  • 더 높은 비트 오류 비율을 허용하는 약간의 오차 계산을 적용하여 HPC 및 AI 워크로드에서 주 메모리의 에너지 소비를 줄인다.
  • 모든 비트 플립에 대해 ECC를 통한 완전한 오류 수정을 피하고, 오직 치명적인 NaN 오류에만 집중함으로써 오버헤드를 최소화한다.
  • 목표 지향적 NaN 복구를 통해 결과 무결성을 보장함으로써 약간의 오차를 허용하는 메모리의 실용적 구현을 가능하게 한다.
  • 하드웨어에 종속되지 않고 애플리케이션 특화의 NaN 복구 의미 체계에 맞게 유연하게 조정 가능한 저오버헤드 솔루션을 제공한다.

제안 방법

  • 실시간으로 부동소수점 연산 중 생성된 NaN을 감지하기 위해 x86 부동소수점 예외 메커니즘을 활용한다.
  • NaN으로 인해 발생한 부동소수점 예외를 가로채는 반응형 복구 핸들러를 구현하며, 이는 NaN을 안전하고 애플리케이션에 특화된 값으로 대체한다.
  • 비 fatal한 수치 오류(예: NaN을 생성하지 않는 작은 비트 플립)는 수정하지 않아 불필요한 오버헤드를 방지한다.
  • 모든 비트 플립에 대해 하드웨어 기반 ECC 수정의 높은 비용을 피하기 위해 소프트웨어 기반 예외 처리 메커니즘을 사용한다.
  • 다양한 값(예: 0.0, 1.0 또는 기타 히ュ리스틱 값)을 애플리케이션 맥락에 따라 사용할 수 있도록 확장 가능한 복구 로직을 설계한다.
  • 표준 x86 명령 세트 확장 기능을 활용하여 프로토타입 시스템에 복구 메커니즘을 통합함으로써 호환성과 낮은 런타임 비용을 확보한다.

실험 결과

연구 질문

  • RQ1비용이 거의 들지 않는 성능 오버헤드로 약간의 오차를 허용하는 주 메모리에서 예외 기반의 반응형 접근 방식으로 NaN을 복구할 수 있는가?
  • RQ2모든 비트 플립에 대한 ECC 수정을 피하고 오직 NaN만 복구함으로써 비 fatal한 수치 오류를 수용하면서도 가능한가?
  • RQ3기존의 ECC 기반 오류 수정 방식과 비교했을 때, 제안된 방법의 오버헤드는 얼마나 되는가?
  • RQ4반복적 특성을 지닌 HPC 및 AI 워크로드에서 작은 오차에 관용적이지만 NaN 전파에 민감한 수치 워크로드에 이 방법이 효과적으로 적용될 수 있는가?
  • RQ5하드웨어 오류 수정에 의존하지 않고 애플리케이션 특화의 값으로 NaN을 수정하는 것의 실용적 영향은 무엇인가?

주요 결과

  • x86 기반 프로토타입에서의 초도 평가 결과, 제안된 반응형 NaN 복구 방법은 극히 낮은 성능 오버헤드를 유발함을 확인하였다.
  • 모든 비트 플립이 아니라 오직 NaN만 복구함으로써 전반적인 오류 내성 비용을 전면적인 ECC 수정보다 크게 감소시켰다.
  • 행렬 연산 및 선형 대수 계산에서 NaN 전파로 인한 치명적인 실패를 효과적으로 방지할 수 있었다.
  • 이 방법은 기존의 x86 부동소수점 예외 메커니즘과 호환되어 아키텍처 변경 없이 효율적으로 통합될 수 있었다.
  • 비 fatal한 수치 오류(예: NaN을 생성하지 않는 작은 비트 플립)는 안전하게 무시할 수 있었으며, HPC 및 AI 워크로드의 반복적 특성에 의해 이를 분산 처리할 수 있었다.
  • 작업하중 특성에 기반한 최적의 NaN 복구 값 결정을 위한 향후 연구에 대한 탄탄한 기반을 제공한다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.