Course | NVIDIA
Previous Next Previous Next
learn.nvidia.com
CUDA?
Nvida GPU에서 대량 병렬 방식으로 코드를 실행할 수 있도록 하는 compute platform.
Numba?
수치 중심(numerically-focused)의 Python 함수를 가속화하기 위한 함수 컴파일러.특히 Numpy 배열에서 이미 무거운 계산 작업을 수행하고 있을 때 효과적.
Course Structure
- Introduction to CUDA Python with Numba
Numpy 배열에서 요소별 연산 수행하는 파이썬 코드를 GPU로 가속할 수 있도록 한다.
- Custom CUDA Kernels in Python with Numba
1D 데이터 세트에서 수치 중심 함수의 큰 범위를 GPU로 가속화
- Multidimensional Grids and Shared Memory for CUDA Python with Numba
GPU 가속 코드를 작성하기 위한 가장 중요한 최적화 전략 중 몇 가지를 활용하면서 Numba를 사용하여 1D 및 2D 데이터 세트에서 Python으로 GPU 가속 코드를 작성
1. Introduction to CUDA Python with Numba
Objectives for this Section
By the time you complete this section you will be able to:
- Use Numba to compile Python functions for the CPU.
- Understand how Numba compiles Python functions.
- GPU accelerate NumPy ufuncs.
- GPU accelerate hand-written vectorized functions.
- Optimize data transfers between the CPU host and GPU device.
What is Numba?
Numba가 CUDA로 프로그래밍하는 유일한 방법은 아니다. 가장 일반적인 방법은 C/C++ 언어 확장을 사용하는 것이다.
python에서 puCUDA는 Numba 외의 GPU 가속의 대안이 될 수 있다. 세 옵션을 간단히 비교해보고 Numba에 대해 학습할 것이다.
1) CUDA C/C++
- CUDA를 활용하는 가장 일반적이고 성능이 뛰어나며 유연한 방법
- C/C++ 애플리케이션을 가속화
2) pyCUDA
- CUDA C/C++ API 전체를 공개
- Python에 사용할 수 있는 가장 성능이 좋은 CUDA 옵션
- Python에서 C 코드를 작성해야 하며 일반적으로 많은 코드 수정이 필요
3) Numba
- pyCUDA보다 성능이 떨어질 가능성이 있음
- 아직은 CUDA C/C++ API 전체를 공개하지 않는다.
- 여전히 매우 적은 코드 수정으로 엄청난 가속을 가능하게 한다.
- 개발자가 Python으로 직접 코드를 작성할 수 있는 편의성을 제공.
- 또한 CPU에 대한 Python 코드를 최적화.
First Steps: Compile for the CPU
실제로 Numba를 사용하여 CPU나 GPU에 대한 코드를 공부할 것이다. 우선 CPU에 대해 컴파일해보겠다. 이후 CPU에 최적화된 Numba 코드와 GPU 가속을 위한 Numba 코드의 성능을 비교할 것이다.
for numba import jit
import math
@jit
def hypot(x, y):
x = abs(x); #절대값 표시 함수
y = abs(y);
t = min(x, y);
x = max(x, y);
t = t / x;
return x * math.sqrt(1+t*t)
hypot(3.0, 4.0)
hypot.py_func(3.0, 4.0) # Numba 활용
# 두 코드의 결과 값이 같다.
위 코드를 비교하며, Numba의 성능을 보겠다.
내가 선언한 hypot 함수를 Numba를 사용하면 더 빠른 속도로 계산함을 알 수 있다.
하지만 파이썬 내장 함수인 math에 비해는 느리다. 매우 빠른 위 같은 함수는 파이썬 내장 함수가 더 빠를 수 있다. 그렇기에 우리는 항상 함수 속도를 측정하기 위해 벤치마킹 해야한다.
How Numba Works
음.. Numba 컴파일러를 사용해봤다. 실제로 어떤 일이 일어난 건지 알아보겠다.
계속..(9.2....)