코스 개요

소개

  • OpenACC란 무엇인가?
  • OpenACC vs OpenCL vs CUDA vs SYCL
  • OpenACC 기능과 아키텍처 개요
  • 개발 환경 설정

시작하기

  • Visual Studio Code에서 OpenACC 프로젝트 생성
  • 프로젝트 구조와 파일 탐색
  • 프로그램 컴파일과 실행
  • printf와 fprintf를 사용하여 출력 표시

OpenACC 디렉티브와 절

  • OpenACC 디렉티브와 절 이해
  • 병렬 영역 생성을 위한 병렬 디렉티브 사용
  • 컴파일러 관리 병렬성을 위한 커널 디렉티브 사용
  • 루프 병렬화를 위한 루프 디렉티브 사용
  • 데이터 이동 관리를 위한 데이터 디렉티브 사용
  • 데이터 동기화를 위한 업데이트 디렉티브 사용
  • 캐시 디렉티브를 사용하여 데이터 재사용 개선
  • 루틴 디렉티브를 사용하여 장치 함수 생성
  • 이벤트 동기화를 위한 대기 디렉티브 사용

OpenACC API

  • OpenACC API의 역할 이해
  • 장치 정보 및 기능 조회
  • 장치 번호와 타입 설정
  • 오류와 예외 처리
  • 이벤트 생성과 동기화

OpenACC 라이브러리와 상호운용성

  • OpenACC 라이브러리와 상호운용성 이해
  • 수학, 난수, 복소수 라이브러리 사용
  • CUDA, OpenMP, MPI 등 다른 모델과의 통합
  • cuBLAS, cuFFT 등의 GPU 라이브러리와의 통합

OpenACC 도구

  • 개발에서 OpenACC 도구 이해
  • OpenACC 프로그램 성능 분석과 디버깅
  • PGI 컴파일러, NVIDIA Nsight Systems, Allinea Forge를 사용한 성능 분석

최적화

  • OpenACC 프로그램 성능에 영향을 미치는 요소
  • 데이터 로컬리티 최적화와 전송 감소
  • 루프 병렬성과 융합 최적화
  • 커널 병렬성과 융합 최적화
  • 벡터화와 자동 튜닝 최적화

요약과 다음 단계

요건

  • C/C++ 또는 Fortran 언어와 병렬 프로그래밍 개념에 대한 이해
  • 컴퓨터 아키텍처 및 메모리 계층 구조에 대한 기본 지식
  • 명령줄 도구와 코드 편집기에 대한 경력

대상

  • OpenACC를 사용하여 이종 장치를 프로그래밍하고 병렬성을 활용하길 원하는 개발자들
  • 다양한 플랫폼과 장치에서 실행할 수 있는 휴대성과 확장성이 뛰어난 코드를 작성하기를 원하는 개발자들
  • 이종 프로그래밍의 고급 측면을 탐구하고 코드 생산성을 최적화하길 원하는 프로그래머들
 28 시간

참가자 수


참가자당 가격

예정된 코스

관련 카테고리