pyopencl을 사용하여 GPU를 사용하여 계산 속도를 높이고 다음 문제로 신비화되었습니다.for 루프에서 간단한 곱셈을 사용하여 pyopencl의 할당 오류
임 다음 코드
import numpy as np
import pyopencl as cl
import pyopencl.array as cl_array
from pyopencl.elementwise import ElementwiseKernel
ctx = cl.create_some_context(0)
queue = cl.CommandQueue(ctx)
multiply = ElementwiseKernel(ctx,
"float *x, float *y, float *z",
"z[i] = x[i] * y[i]",
"multiplication")
x = cl_array.arange(queue, 1000000, dtype=np.complex64)
y = cl_array.arange(queue, 1000000, dtype=np.complex64)
z = cl_array.empty_like(x)
for n in range(10000):
z = x*y
multiply(x.real, y.real, z.real)
multiply(x, y, z)
을 사용하여 for 루프에 두 개의 배열의 간단한 곱셈을하고 마지막 세 줄의 과정, 즉 같은 일 곱셈을한다. 그러나 처음 두 옵션은 다음과 같은 오류가 발생합니다 (I 물론 다른 두에서 주석) : 처음 두 옵션은 할당 오류로 실행하는 이유는 단지 잃었어요
pyopencl.MemoryError: clEnqueueNDRangeKernel failed: mem object allocation failure
.
참고 :
GPU : [0] pyopencl.Device '카보 베르데'를 0x2a76d90 나는 복잡한 유형이 제대로 처리되지 않는다는 것을 알고
>>> pyopencl.VERSION
(2013, 1)
에서 'AMD가 병렬 처리를 가속'에 있지만, np.float32로 변경하면 같은 문제가 발생합니다.