arrayfire pow documentation에 따르면 af.pow()
은 현재 실제 배열의 힘 (및 근음 ...) 만 지원합니다. 오류가 발생하지 않지만 복소수 입력을 사용하여 af.pow()
을 사용하면 다른 함수가 입력으로 사용되는 경우 (예 : af.pow(af.ifft(array), 2)
) 큰 메모리 누수가 발생할 수 있음을 발견했습니다.Arrayfire를 사용하여 Python에서 복잡한 배열을보다 빠르게 지수화합니다
이 문제를 해결하기 위해 아래에 함수 complexPow
을 작성했습니다. 이것은 메모리 누수가없는 복잡한 배열에서 실행되는 것으로 보이며 빠른 비교를 통해 내 complexPow
함수는 numpy.sqrt()
및 **
연산자와 같은 값을 반환합니다.
def complexPow(inData, power):
for i in af.ParallelRange(inData.shape[0]):
theta = af.atan(af.imag(inData[i])/af.real(inData[i]))
rSquared = af.pow(af.real(inData[i]), 2.0) + \
af.pow(af.imag(inData[i]), 2.0)
r = af.pow(rSquared, .5)
inData[i] = af.pow(r, power) * (af.cos(theta*power) + \
1j*af.sin(theta*power))
return inData
더 빠른 방법으로 병렬 요소 단위 지수 연산을 수행 할 수 있습니까? 나는 하나를 찾았지만, 내가 여기에 트릭을 ... 누락 무서워하지 않은
이 조금 더 빠른 병렬for
루프없이
이것은 분명히 버그처럼 들립니다. [github] (https://github.com/arrayfire/arrayfire-python/issues)에서이를 신고 할 수 있습니까? – aatish
예. 나는 그렇게 생각했다. 내일 할거야. 메모리 누수를 보여주는 최소한의 작업 예제가 있습니다. –