1
나는 당황스럽게 병렬 응용 프로그램이 있습니다. 스레드가 GPU를 관리 할 수 있도록 다중 CPU 스레드를 실행할 수 있습니까? 가능한 경우 CPU 쪽에서 어떤 스레딩 라이브러리를 사용해야합니까? OpenMP? Pthreads?멀티 (CPU) 스레드를 사용한 멀티 GPU 프로그래밍
나는 당황스럽게 병렬 응용 프로그램이 있습니다. 스레드가 GPU를 관리 할 수 있도록 다중 CPU 스레드를 실행할 수 있습니까? 가능한 경우 CPU 쪽에서 어떤 스레딩 라이브러리를 사용해야합니까? OpenMP? Pthreads?멀티 (CPU) 스레드를 사용한 멀티 GPU 프로그래밍
Cuda 4.0이 릴리스 되었기 때문에 가능하지만 필요하지 않습니다. 이제 Cuda API는 스레드로부터 안전하므로 단일 호스트 스레드를 사용하여 여러 장치를 비동기식으로 관리 할 수 있습니다.
실제로 여러 호스트 스레드를 사용하려는 경우 모든 호스트 라이브러리가 수행합니다. 성공적으로 pthreads, boost :: thread 및 리눅스의 핵심적인 운영체제를 Linux 및 OS X의 Cuda와 함께 사용했습니다.
i 번째 CPU 스레드가 데이터의 i 번째 청크를 보내도록 i 번째 스레드로 CUDA 장치를 관리 할 수 있습니까? i 번째 장치? –
예, 특별한 것은 필요하지 않습니다. 주의해야 할 유일한 것은 각 스레드가 고유 한 GPU를 얻는 지 확인하는 것입니다. 이를 위해 마스터 스레드가 모든 장치를 열거하고 각 스레드에 장치 ID를 할당 및 브로드 캐스트하거나 TCC/Linux 드라이버에서 계산 단독 설정을 사용하여 드라이버가 자동으로 각 스레드에 장치를 할당하도록합니다. – talonmies
TCC에서 연산 배타적 설정을 자세히 설명해 주시겠습니까? –