본문 바로가기

dev_AI_framework

GPU 연산 성능 및 메모리 전송 비용 비교

🎯 실험 목적

  • CPU 메모리에서 생성한 데이터를 GPU로 전송하여 연산하는 경우와
  • 처음부터 GPU 메모리에 생성하여 연산하는 경우의 성능 차이를 비교

 

🧪 실험 항목 및 결과 (단위: 초)

0 NumPy 행렬 생성 (CPU) 0.198
1 NumPy → CuPy 전송 (H2D) 0.150
2 CuPy 행렬 곱 (H2D 이후) 0.090
3 CuPy 직접 생성 (GPU) 0.046
4 CuPy 행렬 곱 (직접 생성) 0.028
5 PyTorch CPU 텐서 생성 0.126
6 PyTorch → GPU 전송 (H2D) 0.047
7 Torch GPU 연산 (H2D 이후) 0.035
8 PyTorch 직접 CUDA 텐서 생성 0.012
9 Torch 행렬 곱 (직접 생성) 0.024
 

 

🔍 분석 요약

💡 1. 전송 비용은 연산보다 크다

  • NumPy나 Torch에서 CPU 메모리에 생성한 후 GPU로 복사할 경우, 복사 자체가 상당한 비용을 유발
  • 특히 NumPy → CuPy (H2D)는 연산보다도 느림

💡 2. GPU에서 직접 생성이 훨씬 효율적

  • CuPy, PyTorch 모두 GPU에 직접 생성한 경우 메모리 전송 비용이 없으므로 전체 연산 시간이 대폭 단축

💡 3. PyTorch가 가장 효율적

  • GPU 텐서 직접 생성 시간: 0.012s (가장 빠름)
  • GPU 행렬 곱 수행 시간: 0.024s (성능 최적화 상태)

 

✅ 결론

GPU 직접 생성 후 연산 전송 비용 제거, 속도 최대
PyTorch (GPU 생성) 생성 + 연산 속도 모두 최적
NumPy → CuPy 방식 지양 전송 비용이 크고 비효율적