4 개의 GPU가 있고 50 개의 CUDA 프로그램을 병렬로 실행하고 싶다고 가정 해 보겠습니다. 제 질문은 : NVIDIA 드라이버가 다른 GPU에서 50 개의 CUDA 프로그램을 실행할만큼 똑똑합니까 아니면 각 프로그램에 대해 CUDA 장치를 설정해야합니까? 복수의 GPU와 복수의 실행 파일
는답변
을 만들 수있는 첫 번째 점을 감사 당신은 그냥 CUDA 플랫폼에 대한 4 개 GPU에서 병렬 50 응용 프로그램 을 실행할 수 있다는 것입니다. Hyper-Q 지원 GPU를 사용하는 경우 최대 32 개의 스레드 또는 MPI 프로세스가 GPU에 대한 대기열 작업을 수행 할 수 있습니다. 그렇지 않으면 단일 명령 대기열이 있습니다.
최신 Kepler Tesla 카드가 아닌 CUDA 드라이버는 한 번에 하나의 활성 컨텍스트 만 지원합니다. GPU에서 하나 이상의 응용 프로그램을 실행하면 프로세스는 "선착순"방식으로 서로 경쟁하는 컨텍스트를 갖게됩니다. 한 응용 프로그램이 장시간 실행중인 커널 또는 다른 응용 프로그램을 차단하면 선제 또는 다른 프로세스로 프로세스를 양보하게하는 다른 요소가 없습니다. GPU를 디스플레이 관리자와 공유 할 때 응용 프로그램에서 컨텍스트가 종료되기까지 몇 초의 상한을 부과하는 워치 독 타이머가 있습니다. 결과적으로 한 번에 하나의 컨텍스트 만 하드웨어에서 실행됩니다. 컨텍스트 스위칭은 무료가 아니며 단일 장치에 대해 여러 프로세스가 경쟁하는 데 성능이 저하 될 수 있습니다.
또한 GPU에있는 모든 컨텍스트에는 장치 메모리가 필요합니다. Linux에서 묻는 플랫폼에서 메모리 페이징이 없으므로 모든 컨텍스트의 리소스가 GPU 메모리에 공존해야합니다. 현재의 GPU에서 12 개의 사소한 컨텍스트가 동시에 실행될 수 있다고 믿지는 않습니다 - 그 번호보다 먼저 사용 가능한 메모리가 부족할 것입니다. 더 많은 응용 프로그램을 실행하려고하면 컨텍스트 설정이 실패합니다.
여러 GPU에서 여러 응용 프로그램을 배포하는 드라이버의 동작은 Linux 드라이버가 하나 이상의 GPU가 기본이 아닌 계산 모드에있는 경우를 제외하고는 GPU간에 인텔리전트 프로세스 배포를 수행하지 않습니다 . 특별히 요청 된 장치가 없으면 드라이버는 프로세스 나 스레드를 실행할 수있는 유효한 첫 번째 유효한 무료 GPU를 항상 찾으려고 시도합니다. GPU가 사용 중이며 연산 배타적 (스레드 또는 프로세스)으로 표시되거나 금지 된 것으로 표시된 경우 드라이버는 실행할 GPU를 찾으려고 할 때 건너 뜁니다. 모든 GPU가 독점적으로 사용 중이거나 사용이 금지 된 경우 유효한 응용 프로그램 사용 가능 오류가 발생하여 응용 프로그램이 실패합니다.
요약하면 Hyper-Q 장치 이외의 모든 장치에 대해서는 사용자가 요구하는대로 성능 향상이 없습니다 (반대의 경우도 마찬가지입니다) 시도해도 성능이 저하 될 것으로 예상됩니다. 훨씬 건전한 방법은 Torque 또는 이전 Sun Grid Engine 버전 중 하나와 같은 자원 관리 작업 스케줄러와 함께 계산 배타성을 사용하는 것입니다.이 스케줄러는 GPU 가용성에 따라 프로세스가 일정한 방식으로 실행되도록 예약 할 수 있습니다. 이것이 대부분의 범용 HPC 클러스터가 다중 gpu 환경에서 일정을 처리하는 방법입니다.
- 1. 복수의 인수로 레이크 실행
- 2. 복수의 Bower json 파일
- 3. 복수의 라즈베리 파이를 함께 실행
- 4. 복수의 야간 감시 인스턴스 실행
- 5. 복수의 CALayer 애니메이션 동시에 실행
- 6. 복수의 파이썬 파일을 동시에 실행
- 7. 블렌더에서 복수의 .fbx 파일 내보내기
- 8. 복수의 결과
- 9. 복수의 임의 게시물 쿼리가 실행 중입니다.
- 10. 복수의 C++ 프로그램 통합
- 11. 복수의 SerialPort가 실시간으로 반환됩니다.
- 12. 복수의 이미지 링크를 클릭하면 같은 페이지에 복수의 툴팁이 표시됩니다
- 13. 복수의 문자 대체
- 14. 복수의 열을 추출하는 경우
- 15. 복수의 iOS 개발자 계정
- 16. 복수의 열에 mysql 쿼리
- 17. 복수의 보류 의도?
- 18. 복수의 DBMS를 사용하는 경우
- 19. 복수의 깨끗한 URL 변수
- 20. 복수의 필드가있는 CCK 필드
- 21. 복수의 mysql 데이터베이스 설정
- 22. 가능한 복수의 sqldependancy vb.net에서?
- 23. 복수의 프레임 애니메이션
- 24. JQuery와 복수의 동적 형태에
- 25. 복수의 브라우저에서의 글꼴 가중치
- 26. 복수의 끈적한 요소
- 27. 레일 first_or_create 복수의 레코드
- 28. 복수의 IP를 전달하는 프록시
- 29. 복수의 외래 키
- 30. CSS가있는 복수의 div 스타일
정확히 어떤 CUDA 드라이버입니까? 이 질문에 대한 답이 두 가지 이상 있습니다. – talonmies
리눅스에서 cuda 5.5와 함께 nvidia 드라이버 버전 331.20을 사용하고 있습니다. – adk
탈론의 대답은 훌륭합니다. 추가 할 내용이 있습니다. CUDA 프로그램이 NVIDIA 엔진을 사용하는 경우 워크로드 배포가 아직 지원되지 않았는지 확인하십시오. 만약 그들이 일반적인 CUDA 프로그램이라면 탈론의 대답은 아마도 IMHO로가는 유일한 방법 일 것입니다. –