$\require{mediawiki-texvc}$

연합인증

연합인증 가입 기관의 연구자들은 소속기관의 인증정보(ID와 암호)를 이용해 다른 대학, 연구기관, 서비스 공급자의 다양한 온라인 자원과 연구 데이터를 이용할 수 있습니다.

이는 여행자가 자국에서 발행 받은 여권으로 세계 각국을 자유롭게 여행할 수 있는 것과 같습니다.

연합인증으로 이용이 가능한 서비스는 NTIS, DataON, Edison, Kafe, Webinar 등이 있습니다.

한번의 인증절차만으로 연합인증 가입 서비스에 추가 로그인 없이 이용이 가능합니다.

다만, 연합인증을 위해서는 최초 1회만 인증 절차가 필요합니다. (회원이 아닐 경우 회원 가입이 필요합니다.)

연합인증 절차는 다음과 같습니다.

최초이용시에는
ScienceON에 로그인 → 연합인증 서비스 접속 → 로그인 (본인 확인 또는 회원가입) → 서비스 이용

그 이후에는
ScienceON 로그인 → 연합인증 서비스 접속 → 서비스 이용

연합인증을 활용하시면 KISTI가 제공하는 다양한 서비스를 편리하게 이용하실 수 있습니다.

통합 메모리를 사용하는 NVIDIA 파스칼 GPU에서의 CPU 메모리와 GPU 메모리 간 데이터 통신 분석
Evaluation of the Data Migration between CPU Memory and GPU Memory for a NVIDIA Pascal GPU Using Unified Memory 원문보기

한국컴퓨터정보학회 2018년도 제58차 하계학술대회논문집 26권2호, 2018 July 13, 2018년, pp.7 - 10  

신필규 (서울대학교 전기정보공학부) ,  홍성수 (서울대학교 전기정보공학부)

초록
AI-Helper 아이콘AI-Helper

통합 메모리는 CPU 메모리와 GPU 메모리 간의 데이터 통신을 개발자에게 투명하게 내재적으로 수행하는 소프트웨어 런타임 환경으로 개발자에게 CPU 메모리와 GPU 메모리가 통합된 하나의 메모리로 보이게 해준다. 통합 메모리는 장점에도 불구하고 아직 널리 사용되지 못하고 있는데 그 이유는 내재적으로 수행되는 데이터 통신의 오버헤드가 큰 것으로 알려져 있기 때문이다. 하지만 이 데이터 통신이 구체적으로 어떻게 이루어지고 오버헤드는 어떻게 발생하는지 분석한 연구는 아직 존재하지 않는다. 우리는 NVIDIA 사의 최신 GPU 마이크로아키텍처 중 하나인 파스칼을 사용하는 GPU를 대상으로 하여, 통합 메모리를 사용할 시 데이터 통신이 이루어지는 조건과 GPU 응용의 수행시간에 데이터 통신이 끼치는 영향을 실험을 통해 분석한다. 실험 결과 통합 메모리의 오버헤드는 두 가지 원인 때문에 발생한다. 첫째, 통합 메모리를 사용하면 CPU 또는 GPU가 데이터에 접근할 때마다 이 데이터는 CPU 또는 GPU 메모리로 옮겨지고 옮겨진 데이터는 제거된다. 따라서 재사용할 데이터도 제거되어 추가적인 데이터 통신이 발생하고, 이 데이터 통신의 지연시간은 GPU 응용의 수행시간에 더해진다. 둘째, 통합 메모리를 사용하면 데이터 통신과 커널들이 서로 다른 스트림에 할당되어도 동시에 수행되지 못한다. 따라서 GPU 응용의 수행시간은 동시에 수행되던 데이터 통신과 커널의 수행시간만큼 증가한다.

AI 본문요약
AI-Helper 아이콘 AI-Helper

* AI 자동 식별 결과로 적합하지 않은 문장이 있을 수 있으니, 이용에 유의하시기 바랍니다.

문제 정의

  • 본 논문에서는 NVIDIA 사의 최신 GPU 마이크로아키텍처 중하나인 파스칼을 사용하는 GPU를 대상으로 하여, 통합 메모리를 사용할 시 CPU 메모리와 GPU 메모리 사이에서 데이터 통신이 이루어지는 조건과 GPU 응용의 수행시간에 이 데이터 통신이 끼치는 영향을 분석한다. 우리는 이를 위해 두 가지 실험을 수행한다.

가설 설정

  • 둘째, 똑같은 데이터를 옮긴다면 통합 메모리와 전통적 CUDA 프로그래밍 모델은 수행시간에 차이가 없다. (a)의 라인 13과 (b)의 라인 8은 수행시간은 비슷하다. (a)의 라인 14와 (b)의 라인 14도 마찬가지다.
본문요약 정보가 도움이 되었나요?

질의응답

핵심어 질문 논문에서 추출한 답변
전통적인 CUDA 프로그램은 어떤 단계를 거쳐 수행되나요? 전통적인 CUDA 프로그램은 크게 세 단계를 거쳐 수행된다. 첫번째 단계에서는 CPU 메모리에 있는 데이터를 GPU 메모리로 옮긴다. 이는 cudaMemcpy()라는 CUDA API를 통해 이루어진다. 두 번째 단계에서는 GPU 메모리에 있는 데이터를 사용하여 연산을 수행한다. 수행하는 연산은 C나 C++ 언어의 함수로 표현되는데, 이를 커널이라고 한다. 개발자는 커널을 수행시킬 때 스레드 수와 블록 수를 지정하여야 한다. 스레드 수는 동시에 커널을 수행하는 인스턴스의 수를 의미하고 블록 수는 동시에 수행되는 인스턴스 묶음의 수를 의미한다. 세 번째 단계에서는 연산 수행 결과를 다시 cudaMemcpy()를 사용하여 GPU 메모리에서 CPU 메모리로 옮긴다.
GPU란 무엇인가요? GPU는 데이터 병렬 처리에 강점을 가진 하드웨어로 그래픽 응용뿐만 아니라 심층 학습과 같은 광범위한 GPGPU 응용에 사용되고 있다. 이러한 GPU 응용들은 데이터 집약적인 특성이 있으므로 CPU 메모리와 GPU 메모리 사이의 데이터 통신은 개별 GPU에서 성능에 있어 매우 중요한 요소 중 하나다.
전통적인 GPU 프로그래밍 모델에서는 데이터 통신을 누가 관리하고 최적화하나요? 전통적인 GPU 프로그래밍 모델에서는 이 데이터 통신을 개발자가 명시적으로 관리하고 최적화한다. 하지만 이는 개발자에게 GPU의메모리 아키텍처를 고려하여 프로그래밍해야만 하는 부담을 준다.
질의응답 정보가 도움이 되었나요?
섹션별 컨텐츠 바로가기

AI-Helper ※ AI-Helper는 오픈소스 모델을 사용합니다.

AI-Helper 아이콘
AI-Helper
안녕하세요, AI-Helper입니다. 좌측 "선택된 텍스트"에서 텍스트를 선택하여 요약, 번역, 용어설명을 실행하세요.
※ AI-Helper는 부적절한 답변을 할 수 있습니다.

선택된 텍스트

맨위로