2011-04-27 3 views
1

PyCUDA는 결함과 관련하여 위키에서 제공되는 매우 훌륭한 예제를 가지고 있으며 위키에서 다운로드 할 수 있습니다. 그러나 필자는 PyCUDA 방식으로 여러 기기에 작업 부하를 역동적으로 할당하는 방법을 보여주는 예제 나 문서 (또는 간단한 Google 검색)에서 아무 것도 찾을 수 없었습니다.PyCUDA;

아무에게도 내가해야 할 일을 암시하거나 예제를 가르쳐 줄 수 있습니까?

하나의 아이디어는 멀티 프로세싱을 사용하여 각각 하나의 장치에 묶인 N 개의 프로세스 풀을 생성 한 다음 클래스가 호출 될 때 (나는 모든 GPU 기능이 별도의 클래스에 있고 아마도 최고의 아이디어지만 작동합니다) 라운드 로빈은 멀티 프로세스입니다. 아이디어가 얼마나 좋았거나/지쳤습니까?

PS 내 dev 컴퓨터는 GPU가 1 개이고 GPU가 4 개인 GPU이기 때문에 동적 인 장치 수를 처리 할 수있는 솔루션이 필요합니다. 또한 다른 컴퓨팅 기능을 지원하지도 않습니다. 하지만 그 생명)

답변

1

CUDA에는 본질적 다중 GPU 지원이 없기 때문에 Pycuda에는 본질적인 다중 GPU 지원이 없었습니다. API가 스레드 안전 및 다중 GPU를 인식하도록 변경 되었기 때문에 CUDA 4.0에서 변경됩니다. 그러나 Pycuda는 아직 AFAIK를 지원하지 않습니다. 그것이 올 때라도, 각 장치는 명시 적으로 관리되어야하고, 작업 부하는 당신에 의해 나누어 져야합니다. 자동 워크로드 분배 또는 그와 같은 것은 없습니다.

멀티 GPU의 경우 일반적으로 mpi4py를 사용합니다. 잠재적으로 다중 쓰레드 파이썬 스키마를 사용할 수 있습니다. 각 스레드는 Pycuda에서 별도의 컨텍스트를 엽니 다. 가장 잘 작동하는 것은 장치간에 얼마나 많은 통신이 필요한지에 달려 있습니다.

+0

즉, 없음. 포인터 주셔서 감사! – Bolster