, 하나는 CUDA/OpenCL을 커널에 일부 similarites를 볼 수 있습니다 - 예를 들면 : 당신이 필요로하는python의 멀티 스레딩 응용 프로그램은 opencl/cuda와 매우 비슷해 보입니다. 응용 프로그램을 GPU 멀티 스레딩으로 이식 할 수 있습니까? 하나는 병렬 벡터를 추가하는 함수 <code>kernel</code>가 정의 다음과 같은 멀티 스레딩 코드를 살펴 취하면
- 스레드 ID/커널 - 벡터를 해결하기위한 ID 당신이 가져 오기를 스레딩에서 손
전에 출력의 메모리를 할당 할 필요가
def kernel(i,A,B,C):
"""
Does a vector addition
@param A output vector
@param B input vector
@param C input vector
"""
A[i] = B[i] + C[i]
vec_length = 1000
#Allocate memory
A = [None] * vec_length
B = [1] * vec_length
C = [2] * vec_length
processes = []
for i in range(0,vec_length):
processes.append(Thread(target=kernel,args=[i,A,B,C]))
processes[i].start()
for i in range(0,vec_length):
processes[i].join()
print(A)
내 질문은 GPU로 코드의 병렬 처리를 내보내는 쉬운 방법이 있다면 내 질문입니다. 물론 CUDA/OpenCL을 작성하는 것이 아니라이 문제에 대해 기존 도구를 사용하거나 가능한 경우 그러한 도구를 만드는 것입니다.
물론 고급 응용 프로그램에서는 작동하지 않을 수 있습니다. 저는 PyCuda에 대해 알고 있습니다.하지만이 경우 응용 프로그램을 다시 작성하게 될 것입니다.