본문 바로가기
목차
ML

[PyTorch] tensor의 vectorized operation

by ds31x 2025. 12. 4.
728x90
반응형

PyTorch에서 제공하는 Tensor Operators

PyTorch에서 제공하는 텐서 연산(operator)은

  • homogeneous하고 contiguous한 텐서에 대해
  • 모든 element에 동일한 연산을 적용하도록 설계된
  • vectorized operation의 형태를 취함.
  • 다른 이름으로 elementwise operation이라고도 불림.

이는 파이썬의 반복문 기반 연산에 비해

  • 압도적으로 빠른 속도를 제공하며,
  • 단일 연산자 호출만으로 전체 텐서에 대한 연산을 수행할 수 있게 함.

PyTorch의 elementwise 연산은

  • NumPy의 ufunc과 기능적으로 유사한 역할(아래 3가지 참고)을 수행하지만,
    1. broadcasting 처리
    2. elementwise kernel 처리
    3. dtype promotion 처리
  • 보다 광범위한 backend 를 통해 실행됨.

여기서, 커널(kernel)은 OS등의 kernel이 아님.
텐서나 배열의 요소에 대해 연산을 수행하는
C/C++ 혹은 CUDA로 구현된 실제 계산 함수(executable routine) 를 의미.

GPU·CPU에서
병렬 처리되는 "작은 단위의 계산 루틴"이라는 의미로
kernel
이라는 용어를 사용함
(High-Performance Computing분야에서 많이 사용됨)

더보기

 

즉, CPU뿐 아니라 GPU, XLA 장치 등 다양한 디바이스에서
동일한 연산이 자동으로 벡터화된 방식으로 처리됨.

 

실제로 PyTorch의 이러한 elementwise 연산들은

  • homogeneous하고 contiguous한 데이터 레이아웃에 최적화된
  • 고성능 바이너리 커널 구현물에 대한 바인딩(binding)이라고 볼 수 있음.
  • 참고로, non-contiguous 텐서도 내부에서 contiguous copy를 만들거나 stride-aware kernel을 사용하는 방식으로 처리는 가능함 (약간의 성능감소는 있을 수 있음)

 

Python에서 간단히 사용할 수 있도록 high-level interface가 제공되지만,

  • 실제 tensor 연산은 내부적으로 C++ 기반의 ATen backend를 통해
  • CPU kernel 또는 CUDA kernel로 dispatch됨.
  • 특히 GPU tensor 연산의 경우 CUDA kernel이 실행되어 대규모 tensor 연산을 병렬로 빠르게 처리함.

주요 예제

주요 예제는 다음의 글을 참고할 것:

2024.03.19 - [Python] - [Tensor] vectorized op. (or universal func)

 

[Tensor] vectorized op. (or universal func)

Numpy에서 제공하는 ufunc. (Universal Functions)은 homogeneous and contiguous tensor 에서 모든 elements에 같은 연산을 적용하여기존의 반복 loop에 기반한 연산에 비해 압도적인 속도를 보이면서 간편한 연산자

ds31x.tistory.com

 

inplace op.는 다음을 참고

2025.03.13 - [Python] - [PyTorch] in-place 연산이란?

 

[PyTorch] in-place 연산이란?

in-place 연산이란?in-place 연산은 원본 데이터 구조를 직접 수정하여 별도의 복사본을 만들지 않는 연산 방식을 가리킴.메모리 효율성이 높지만,원본 데이터가 변경된다는 점을 주의해야 함.주의

ds31x.tistory.com


같이 보면 좋은 자료

2025.03.07 - [Python] - [DL] Tensor 다루기 기초 - PyTorch 중심

 

[DL] Tensor 다루기 기초 - PyTorch 중심

https://dsaint31.tistory.com/891 [ML] Tensor: Scalar, Vector, Matrix.Tensor 종류1. Scalar (0차원 tensor)하나의 숫자로 표현되는 가장 기본적인 형태.크기(magnitude)만을 가지며 방향은 없음.예시: 온도(25°C), 나이(20),

ds31x.tistory.com


 

728x90