2024년 9월 3일 화요일

CuPy 사용해 CUDA 프로그래밍하기

이 글은 AI 딥러닝에 핵심적으로 사용되는 CUDA를 손쉽게 사용하기 위해 CuPy 와 사용법을 간략히 알아본다. 이 라이브러리는 NumPy와 유사한 방식으로 CUDA를 사용할 수 있다. CuPy는 NVIDIA의 RAPIDS 데이터 분석 파이프라인에서도 사용된다. 
설치 방법
미리 파이썬 개발환경이 준비되어 있다는 가정하에, 다음 명령을 명렁창에 입력한다.
pip install cupy-cuda11x
pip install nvcc4jupyter


개발하기
다음 코드를 입력해 실행한다.
import cupy as cp

def elementwise_multiply(vector1, vector2):
    # GPU Device 0에서 실행
    with cp.cuda.Device(0):  
        # CuPy 배열로 변환
        vec1_gpu = cp.array(vector1)
        vec2_gpu = cp.array(vector2)
        
        # 요소별 곱을 CuPy를 이용해 병렬로 수행
        result_gpu = vec1_gpu * vec2_gpu
        
        # 결과를 다시 CPU로 가져옴 (필요한 경우)
        result = cp.asnumpy(result_gpu)
    
    return result

# 예시
vector1 = [1, 2, 3, 4]
vector2 = [5, 6, 7, 8]

result = elementwise_multiply(vector1, vector2)
print(result)  # 출력: [ 5 12 21 32 ]

이 코드는 CUDA를 이용해 GPU DEVICE 0번에 벡터값을 전송하고, 벡터곱을 계산한 후, CPU 메모리로 그 값을 전송한다. 

C 언어로 개발하는 CUDA 방식에 비해 매우 간략히 코딩할 수 있다는 것을 알 수 있다.

레퍼런스

댓글 없음:

댓글 쓰기