본문 바로가기
KERD
논문KCI 등재

GPU 프로그램의 수행 중에 원자성위배를 자율적으로 수리하는 도구

A Tool for On-the-fly Repairing of Atomicity Violation in GPU Program Execution

0

조회

0

다운로드

0

인용

0

참고문헌

키워드

주제분류컴퓨터학

초록

본 논문은 GPU 프로그램의 메모리의 상태 및 접근사건과 배리어 위치 정보를 감시하고, 실제 메모리쓰기를 배리어 영역 종료 직전에 발생시키거나 배리어 영역을 재수행시켜 원자성 위배를 수행 중에수리하는 도구인 ARCAV (Atomatic Recovery of CUDA Atomicity violation)를 제시한다. 기존의 연구들은Lock과 Sleep 명령어를 사용하여 원자성 위배를 진단 및 수리하도록 구현되었기 때문에 지원되는 명령어와 동기화 기법이 CPU (Central Processing Unit) 프로그램과 다른 GPU (Graphics Processing Unit) 프로그램에는 적용될 수 없었고, GPU 프로그램에서는 원자성 위배의 탐지에 대한 연구만 수행되었다. 제안하는ARCAV는 GPU 프로그램의 실행모델에서 수행될 수 있도록 설계되어 스레드 구성과 메모리 계층에무관하게 실세계에서 발생한 원자성 위배를 대표하는 네 가지 패턴의 원자성 위배를 실시간으로 탐지하고 수리할 수 있다. 실험 결과 동시에 실행되는 스레드 개수와 구성에 무관하게 일정한 오버헤드를보였다. 원자성 위배를 프로그램 수행 중에 실시간으로 탐지하고 수리하기 위해 소요되는 오버헤드는네 개의 실세계 GPU 커널에서 실험되었고, 원본 프로그램 대비 평균 2.1배의 수행시간으로 동작하였다.

Abstract

In this paper, we propose a tool called ARCAV (Atomatic Recovery of CUDA Atomicity violation) to automatically repair atomicity violations in GPU (Graphics Processing Unit) program. ARCAV monitors information of every barrier and memory to make actual memory writes occur at the end of the barrier region or to make the program execute barrier region again. Existing methods do not repair atomicity violations but only detect the atomicity violations in GPU programs because GPU programs generally do not support lock and sleep instructions which are necessary for repairing the atomicity violations. Proposed ARCAV is designed for GPU execution model. ARCAV detects and repairs four patterns of atomicity violations which represent real-world cases. Moreover, ARCAV is independent of memory hierarchy and thread configuration. Our experiments show that the performance of ARCAV is stable regardless of the number of threads or blocks. The overhead of ARCAV is evaluated using four real-world kernels, and its slowdown is 2.1x, in average, of native execution time.

참고문헌 (19)

  1. Robert H. B. Netzer, "What are race conditions?", ACM Letters on Programming Languages and Systems, 1(1), pp.74~88 (1992), Association for Computing Machinery (ACM)[DOI]
  2. S. Lu, "Learning from mistakes : a comprehensive study on real world concurrency bug characteristics", ACM SIGOPS Operating Systems Review, 42, pp.329~339 (2008)[DOI]
  3. B. Krena, "Healing data races on-the-fly", Proceedings of the 2007 ACM workshop on Parallel and distributed systems: testing and debugging, pp.54~64 (2007)
  4. B. Lucia, "Atom-aid : Detecting and surviving atomicity violations", ACM SIGARCH Computer Architecture News, 36, pp.277~288 (2008)[DOI]
  5. J. Yu, "Tolerating concurrency bugs using transactions as lifeguards", Proceedings of the 2010 43rd Annual IEEE, 2010, 263~274
  6. Suxia Zhu, "Tuning lock-based multicore program based on sliding windows to tolerate data race", The Journal of Supercomputing, 75(12), pp.7872~7894 (2019), Springer Science and Business Media LLC[DOI]
  7. Jie Yu, "A case for an interleaving constrained shared-memory multi-processor", ACM SIGARCH Computer Architecture News, 37(3), pp.325~336 (2009), Association for Computing Machinery (ACM)[DOI]
  8. Mingxing Zhang, "A Lightweight System for Detecting and Tolerating Concurrency Bugs", IEEE Transactions on Software Engineering, 42(10), pp.899~917 (2016), Institute of Electrical and Electronics Engineers (IEEE)[DOI]
  9. Y. Xu, "Software transactional memory for gpu architectures", Proceedings of Annual IEEE, 2014, 1~10
  10. Erik Lindholm, "NVIDIA Tesla: A Unified Graphics and Computing Architecture", IEEE Micro, 28(2), pp.39~55 (2008), Institute of Electrical and Electronics Engineers (IEEE)[DOI]
  11. C. Nvidia, "CUDA C Programming Guide, version 9.1", NVIDIA Corp, ~ (2018)
  12. P. Li, "LD : Low-overhead GPU race detection without access monitoring", ACM Transactions on Architecture and Code Optimization, 14, pp.9~ (2017)
  13. Z. Gu, "Has the bug really been fixed?", Proceedings of the 32nd ACM, 2010, pp.1, 55~64
  14. P. Godefroid, "Concurrency at Microsoft: An exploratory survey", CAV Workshop on Exploiting Concurrency Efficiently and Correctly (2008)
  15. L.L. Pullum, "Software fault tolerance techniques and implementation" (2001), Artech House
  16. B. Pourghassemi, "CudaCR : an in-kernel application-level checkpoint", restart scheme for CUDA-enabled GPUs, 2017 (2017), 725~732
  17. S. Che, "Rodinia: A Benchmark Suite for Heterogeneous Computing", Proceedings of the IEEE International Symposium on Workload Characterization (IISWC), pp.44~54 (2009)
  18. A. Eizenberg, "BARRACUDA : binary-level analysis of runtime RAces in CUDA programs", ACM SIGPLAN Notices, pp.126~140 (2017)
  19. Yuanfeng Peng, "CURD: a dynamic CUDA race detector", ACM SIGPLAN Notices, 53(4), pp.390~403 (2018), Association for Computing Machinery (ACM)[DOI]

관련 논문AI추천

이 간행물의 다른 논문 (21건)