교육과정 세부 정보
본 2일 교육과정에서는 MATLAB® 코드의 실행 속도를 향상시키는 다양한 기법들을 다룹니다. 메모리 사전할당(preallocation) 및 벡터화 연산(vectorization) 등을 사용하여 계산상의 병목 현상을 제거하는 방법, MATLAB Coder™를 사용하여 MATLAB 코드를 MEX 파일로 컴파일하는 방법, Parallel Computing Toolbox™를 사용하여 병렬 for 루프에 의한 컴퓨터의 멀티 코어 기능을 활용하는 방법, 그리고 MATLAB Parallel Server™를 사용하여 일반적인 개수의 코어에서 HPC(고성능 컴퓨팅)에 이르는 클러스터나 클라우드로 처리 규모를 확장하는 방법 등을 다룹니다. 이 방법들의 상호 작용들을 교육과정 전반에 걸쳐 학습할 것입니다. 시뮬레이션 시간이 오래 걸렸던 엔지니어 분들은 본 교육과정에서 제공하는 다양한 실습 및 연습문제들을 통해 도움을 받을 수 있습니다. 본 교육과정에서 다루는 주요 내용은 다음과 같습니다.
- MATLAB 핵심 기능 내에서 성능 개선
- MEX 파일 생성
- 병렬 연산
- 오프로딩 실행
- 클러스터 활용
- GPU 연산
1일차
성능 개선
학습목표: 코드 성능을 분석하고 MATLAB 내에서 속도를 높이기 위해 여러 기법을 활용합니다.
- 병목 현상 식별
- 배열 사전할당
- 다양한 방법으로 연산 벡터화
- 알고리즘 재작성
MEX 파일 생성
학습목표: 성능 향상을 위해 MATLAB 코드에서 컴파일된 코드 파일을 생성합니다.
- MATLAB Coder 개요 및 워크플로
- MEX 파일 생성 및 확인
- 지원되지 않는 함수 호출
- MEX 파일 생성을 위한 설정 조정
병렬 연산
학습목표: 다중 코어를 활용하기 위해 코드 실행을 병렬화합니다.
- 추가 MATLAB 프로세스 열기
- 병렬 for 루프 실행
- 가속 측정
- 병렬로 여러 개의 파일 처리
2일차
병렬 for 루프
학습목표: 병렬 for 루프를 자세히 살펴보고, for 루프를 parfor 루프로 변환하는 기법을 적용합니다.
- 병렬 for 루프 요구사항
- for 루프 병렬화
- 중간 결과 가져오기
오프로딩 실행
학습목표: 계산을 또 다른 MATLAB 프로세스에 분담하여 그 동안에 MATLAB을 다른 작업에 사용할 수 있도록 합니다. 이는 클러스터 활용을 위한 준비 단계이기도 합니다.
- 일괄 처리
- 배치 작업 생성
- 결과 가져오기
- 작업 모니터 사용
클러스터 활용
학습목표: 여러 대의 컴퓨터를 사용해 계산 속도를 높이고 보다 폭넓은 시뮬레이션을 실현합니다.
- 로컬 및 원격 클러스터
- 동적 라이선싱
- 클러스터 검색 및 연결
- 파일 액세스 관련 고려 사항
GPU 연산
학습목표: 계산 속도를 높이기 위한 또 다른 옵션으로 MATLAB 코드를 컴퓨터의 그래픽 카드(GPU)에서 실행합니다.
- GPU 아키텍처 및 처리 개요
- GPU 처리에 적합한 응용 프로그램
- GPU에서 MATLAB 함수 호출
- GPU Coder™를 사용하여 CUDA® MEX 파일 생성
- 기존 CUDA 코드 사용