cupy 설치(cuda 용 Numpy) CPU>GPU
pyrorch 와 Numpy 를 섞으면 환상이라더니....
cupy 설치
pip install cupy
컴파일 하느라 굉장히 오래 걸림.
결과는 CPU>GPU
느림
CPU (Numpy 사용 X)
(D:\conda\yolov10) C:\Users\asdfasdf>python a2.py
100%|███████████████████████████████████████████████████████████████████| 10000000/10000000 [02:12<00:00, 75346.22it/s]
tensor([[ 0.2782, -3.0256, -3.1502],
[-0.1047, 2.8828, 3.4342],
[ 0.3741, 2.6240, 3.8739]])
CPU에서 1천만번 연산 수행 시간: 285.913432598114초
(D:\conda\yolov10) C:\Users\asdfasdf>python a.py
100%|███████████████████████████████████████████████████████████████████| 10000000/10000000 [02:00<00:00, 83238.87it/s]
CPU에서 1천만번 연산 수행 시간: 263.38377356529236초
(D:\conda\yolov10) C:\Users\asdfasdf>python a.py
100%|███████████████████████████████████████████████████████████████████| 10000000/10000000 [02:06<00:00, 78967.26it/s]
CPU에서 1천만번 연산 수행 시간: 269.3785479068756초
GPU (Numpy 사용 X)
(D:\conda\yolov10) C:\Users\asdfasdf>python c2.py
100%|███████████████████████████████████████████████████████████████████| 10000000/10000000 [06:27<00:00, 25824.64it/s]
GPU에서 1천만번 연산 수행 시간: 542.9870045185089초
CPU (Numpy 사용 O)
(D:\conda\yolov10) C:\Users\asdfasdf>python d.py
100%|██████████████████████████████████████████████████████████████████| 10000000/10000000 [00:28<00:00, 346396.77it/s]
CPU에서 1천만번 연산 수행 시간: 29.15070939064026초
GPU (cupy 사용 O)
(D:\conda\yolov10) C:\Users\asdfasdf>python dcupy.py
100%|███████████████████████████████████████████████████████████████████| 10000000/10000000 [07:04<00:00, 23532.63it/s]
CPU에서 1천만번 연산 수행 시간: 424.95506954193115초
다른 pc
CPU (Numpy 사용 X)
(yolov9) D:\temp\cmd>python a.py
100%|███████████████████████████████████████████████████████████████████| 10000000/10000000 [06:27<00:00, 25836.44it/s]
CPU에서 1천만번 연산 수행 시간: 825.3457431793213초
CPU (Numpy 사용 X)
(yolov9) D:\temp\cmd>python a.py
100%|██████████████████████████████████████████████████████████████████| 10000000/10000000 [01:31<00:00, 108955.42it/s]
CPU에서 1천만번 연산 수행 시간: 1304.359778881073초
CPU (Numpy 사용 X)
(yolov9) D:\temp\cmd>python a.py
100%|███████████████████████████████████████████████████████████████████| 10000000/10000000 [06:27<00:00, 25836.44it/s]
CPU에서 1천만번 연산 수행 시간: 825.3457431793213초
CPU (Numpy 사용 X)
(yolov9) D:\temp\cmd>python a.py
100%|██████████████████████████████████████████████████████████████████| 10000000/10000000 [01:31<00:00, 108955.42it/s]
CPU에서 1천만번 연산 수행 시간: 1304.359778881073초
CPU (Numpy 사용 X)
(yolov9) D:\temp\cmd>python a.py
100%|██████████████████████████████████████████████████████████████████| 10000000/10000000 [01:34<00:00, 105439.51it/s]
CPU에서 1천만번 연산 수행 시간: 195.89095854759216초
GPU (cupy 사용 O)
(yolov9) D:\temp\cmd>python dcupy.py
100%|███████████████████████████████████████████████████████████████████| 10000000/10000000 [06:40<00:00, 24963.92it/s]
CPU에서 1천만번 연산 수행 시간: 400.5937759876251초
(yolov9) D:\temp\cmd>python a.py
100%|██████████████████████████████████████████████████████████████████| 10000000/10000000 [01:19<00:00, 126136.76it/s]
CPU에서 1천만번 연산 수행 시간: 169.49878072738647초
(yolov9) D:\temp\cmd>python a.py
100%|███████████████████████████████████████████████████████████████████| 10000000/10000000 [02:10<00:00, 76677.14it/s]
CPU에서 1천만번 연산 수행 시간: 262.5778257846832초
CPU (Numpy 사용 O)
(yolov9) D:\temp\cmd>python d.py
100%|██████████████████████████████████████████████████████████████████| 10000000/10000000 [00:52<00:00, 188891.68it/s]
CPU에서 1천만번 연산 수행 시간: 55.312193155288696초
(yolov9) D:\temp\cmd>
pip install cupy-cuda11x0
오래 안 걸림
CuPy: CUDA 기반 Numpy 호환 API
 `CuPy`[^cupy]는 NumPy와 호환되는 API를 제공하는 …
wikidocs.net
PyTorch로 Numpy를 대체하여 성능을 끌어올려보자 #pytorch #numpy #gpu #cuda #python #colab
PyTorch의 Tensor와 Numpy의 ndarray는 유사한 형태를 가지고 있고 PyTorch의 경우 GPU를 사용한 연산이 가능하기 때문에 Numpy로 작업시 연산 부분을 PyTorch대체해서 처리 속도를 끌어 올릴 수 있다. 다음과
yungyikim-blog.tistory.com
cuda_11.8.0_522.06_windows.exe
설치 안해도 yolov10 예제 돌아갔으나
cupy 예제는 아래처럼 오류남.
cuda_11.8.0_522.06_windows.exe
설치하면 아래 오류 해결 됨.
pip install cupy-cuda11x 했더니
nvrtc64_112_0.dll 없다고....
(D:\conda\yolov10) C:\Users\asdfasdf\yolov10>pip install cupy-cuda11x
Collecting cupy-cuda11x
Downloading cupy_cuda11x-13.5.1-cp39-cp39-win_amd64.whl.metadata (2.5 kB)
Requirement already satisfied: numpy<2.6,>=1.22 in d:\conda\yolov10\lib\site-packages (from cupy-cuda11x) (1.24.4)
Collecting fastrlock>=0.5 (from cupy-cuda11x)
Downloading fastrlock-0.8.3-cp39-cp39-win_amd64.whl.metadata (7.9 kB)
Downloading cupy_cuda11x-13.5.1-cp39-cp39-win_amd64.whl (77.1 MB)
---------------------------------------- 77.1/77.1 MB 25.6 MB/s eta 0:00:00
Downloading fastrlock-0.8.3-cp39-cp39-win_amd64.whl (37 kB)
Installing collected packages: fastrlock, cupy-cuda11x
Successfully installed cupy-cuda11x-13.5.1 fastrlock-0.8.3
(D:\conda\yolov10) C:\Users\asdfasdf\yolov10>cd..
(D:\conda\yolov10) C:\Users\asdfasdf>python cup.py
File "C:\Users\asdfasdf\cup.py", line 5
python cupytest.py
^
SyntaxError: invalid syntax
(D:\conda\yolov10) C:\Users\asdfasdf>python cup.py
D:\conda\yolov10\lib\site-packages\cupy\_environment.py:215: UserWarning: CUDA path could not be detected. Set CUDA_PATH environment variable if CuPy fails to load.
warnings.warn(
Traceback (most recent call last):
File "cupy_backends\\cuda\\_softlink.pyx", line 25, in cupy_backends.cuda._softlink.SoftLink.__init__
File "D:\conda\yolov10\lib\ctypes\__init__.py", line 374, in __init__
self._handle = _dlopen(self._name, mode)
FileNotFoundError: Could not find module 'nvrtc64_112_0.dll' (or one of its dependencies). Try using the full path with constructor syntax.
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\Users\asdfasdf\cup.py", line 3, in <module>
x = cp.arange(6).reshape(2, 3)
File "D:\conda\yolov10\lib\site-packages\cupy\_creation\ranges.py", line 60, in arange
_arange_ufunc(typ(start), typ(step), ret, dtype=dtype)
File "cupy\\_core\\_kernel.pyx", line 1374, in cupy._core._kernel.ufunc.__call__
File "cupy\\_core\\_kernel.pyx", line 1401, in cupy._core._kernel.ufunc._get_ufunc_kernel
File "cupy\\_core\\_kernel.pyx", line 1082, in cupy._core._kernel._get_ufunc_kernel
File "cupy\\_core\\_kernel.pyx", line 94, in cupy._core._kernel._get_simple_elementwise_kernel
File "cupy\\_core\\_kernel.pyx", line 82, in cupy._core._kernel._get_simple_elementwise_kernel_from_code
File "cupy\\_core\\core.pyx", line 2382, in cupy._core.core.compile_with_cache
File "cupy\\_core\\core.pyx", line 2320, in cupy._core.core.assemble_cupy_compiler_options
File "cupy_backends\\cuda\\libs\\nvrtc.pyx", line 57, in cupy_backends.cuda.libs.nvrtc.getVersion
File "cupy_backends\\cuda\\libs\\_cnvrtc.pxi", line 72, in cupy_backends.cuda.libs.nvrtc.initialize
File "cupy_backends\\cuda\\libs\\_cnvrtc.pxi", line 75, in cupy_backends.cuda.libs.nvrtc._initialize
File "cupy_backends\\cuda\\libs\\_cnvrtc.pxi", line 147, in cupy_backends.cuda.libs.nvrtc._get_softlink
File "cupy_backends\\cuda\\_softlink.pyx", line 32, in cupy_backends.cuda._softlink.SoftLink.__init__
RuntimeError: CuPy failed to load nvrtc64_112_0.dll: FileNotFoundError: Could not find module 'nvrtc64_112_0.dll' (or one of its dependencies). Try using the full path with constructor syntax.