파이톤과 Numba 가속 수치로 계산할 때의 지식
실장 과정에서 각종 오류가 발생하여 걸려 넘어졌기 때문에 우리는 이 지식들을 샘플로 공유할 것이다.
나의 경우 루건 쿠타법의 입자군 최적화법을 사용하여 계산하면 속도가 약 2000초→60초와 33배이다.
※ 주의 ※
njit
1. 환경
$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.15.2
BuildVersion: 19C57
$ python -V
Python 3.8.5
$ pip freeze
numba==0.51.0
numpy==1.19.1
다음 명령을 사용하여 Numba를 설치할 수 있습니다.$ pip install numba
2. 사용 예
2-1. 함수 내의np.empty 사용
numba를 사용할 때 함수
np.empty
에서 사용하면 오류가 발생할 수 있습니다.이런 상황에서 다음과 같이 유형을 지정하면 일을 잘 할 수 있다.
main.py
import numpy as np
from numba import njit
@njit("f8[:,:]()")
def func():
x = np.empty((1, 2), dtype=np.float64)
return x
print(func())
2-2. 여러 반환 값 반환
여러 개의 반환 값을 되돌릴 때
Tuple((i8, i8))
와 같다.괄호는 이중으로 되어 있으니 주의해야 한다.
main.py
import numpy as np
from numba import njit
@njit("Tuple((i8, i8))(i8, i8)")
def func(x, y):
return x, y
print(func(1, 2))
2-3. 다차원 목록 처리
Numba가 다중 레벨 목록을 처리하는 경우
f8[:,:]
처럼 씁니다.2차원이기 때문에 콜럼버스가 두 개만 있는 것은 아니다. 몇 차원이든 두 개든 다 된다.
main.py
import numpy as np
from numba import njit
@njit("f8[:,:](f8[:,:])")
def func(x):
return x ** 2
x = np.random.rand(5, 5)
print(func(x))
3. 끝
파이톤의 고속화에는 씨톤과 주리아 등 다양한 방법이 있지만, 장식물만 쓰는 누바의 방법이 가장 간단하다고 생각한다.
학급과 발전기 사용 불가 등 제한이 있지만 국부적으로 병목을 가속하는 방법이라면 쉽게 실현될 수 있을 것 같다.
4. 참고 문헌
Reference
이 문제에 관하여(파이톤과 Numba 가속 수치로 계산할 때의 지식), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/sonokr/articles/9019be48d7138c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)