CBJH 2025. 4. 7. 10:38
728x90
반응형

https://namu.wiki/w/NumPy

GPU 연산 전에 꼭 알아야 할 파이썬 수학 연산의 기본기


👋 시작하며

“GPU 연산? CUDA? PyCUDA? JAX?”
이런 단어들이 눈에 띄기 시작했다면,
그 전에 먼저 NumPy를 제대로 이해하는 것이 아주 중요합니다.

오늘은 수치 연산의 기본기이자,
GPU 연산의 출발점이라고 할 수 있는 NumPy
예제 중심으로 쉽고, 빠르게 이해해보겠습니다.


🧩 NumPy란?

**NumPy(Numerical Python)**는 과학 계산에 특화된 파이썬 라이브러리입니다.
특히 배열 연산, 선형대수, 통계 처리 등에서 많이 쓰여요.

간단히 말해서:

"파이썬을 수학 계산용 언어로 만들어주는 도구"

https://decodingdatascience.com/numpy-the-foundation-of-data-science-and-ai/


💡 NumPy를 쓰면 뭐가 좋을까?

기능설명
고성능 다차원 배열 ndarray라는 타입을 사용
브로드캐스팅 지원 크기가 다른 배열 간 연산 자동 처리
벡터화 연산 반복문 없이 연산 처리 가능 (빠름!)
다양한 수학 함수 np.sin, np.mean, np.dot 등 풍부한 API

🔧 NumPy 설치

pip install numpy

🧪 NumPy 기본 예제

import numpy as np

# 1차원 배열 만들기
a = np.array([1, 2, 3])
print("a:", a)

# 벡터화된 연산
b = a * 2
print("a * 2:", b)

# 2차원 배열 (행렬)
mat = np.array([[1, 2], [3, 4]])
print("행렬:\n", mat)

# 행렬 곱
result = np.dot(mat, mat)
print("행렬곱:\n", result)

✅ 출력 결과:

a: [1 2 3]
a * 2: [2 4 6]
행렬:
 [[1 2]
  [3 4]]
행렬곱:
 [[ 7 10]
  [15 22]]

🚀 왜 NumPy는 빠를까?

➤ 벡터화(Vectorization)

a + b  # 반복문 없이 배열끼리 연산

➤ 내부는 C로 구현되어 있음

→ Python의 느린 for문 대신,
C로 작성된 배열 연산을 사용하여 속도가 빠름!


🔄 GPU 연산과의 연결점?

NumPy는 CPU에서만 작동해요.
하지만, 우리가 다룰 PyCUDAJAX는 NumPy 스타일을 그대로 따라하면서,
연산을 GPU로 오프로드합니다.

즉, NumPy를 잘 다루는 개발자라면 PyCUDA/JAX도 쉽게 적응할 수 있어요.


✨ 마무리하며

NumPy는 딥러닝, 데이터 분석, 과학 계산 등 수많은 분야의 "연산 엔진"입니다.

이 글에서 우리는:

  • NumPy가 뭔지
  • 왜 중요한지
  • 기본 사용법

을 다뤘어요.


📌 다음 글 예고

👉 [다음 편] PyCUDA란 무엇인가? Python으로 GPU를 직접 다루는 법
PyCUDA는 GPU 코드를 Python에서 직접 작성하고 실행할 수 있는 강력한 무기입니다.
다음 글에서는 CUDA 커널이 뭔지, PyCUDA는 어떻게 사용하는지
쉽고 강력한 예제로 풀어보겠습니다.