2014-10-17 3 views
2

기본적으로 단일 GPU (NVidia K20c)에서 여러 MPI 등급을 실행하고 싶습니다. MPS 및 케플러 Hyper-Q의 존재를 알고 있습니다.하나의 GPU에서 여러 MPI 랭크를 실행할 때 정말로 MPS가 필요합니까, 아니면 Kepler의 Hyper-Q로 충분합니까?

그러나 내 질문은 Hyper-Q 자체가 내 필요에 충분합니까? 아니면 MPS를 사용해야합니까? 위의 하이퍼 -Q 링크에 따르면 "Hyper-Q를 사용하려면 별도의 코딩 작업이 필요하지 않으며, CUDA 5를 설치 한 Tesla K20 GPU와 환경 변수를 설정하면 여러 MPI 순위에서 GPU를 공유 할 수 있습니다. 그러면 Hyper-Q를 사용할 수 있습니다. "

MPS가 전혀 필요 없다는 뜻입니까?

p.s. 또한 비슷한 주제에 대해 다음 질문을 알고 있지만 내 질문에 명확하게 대답하지 않는 것 같습니다. Do I have to use the MPS (MULTI-PROCESS SERVICE) when using CUDA6.5 + MPI?

감사합니다.

답변

4

단일 GPU에서 MPS없이 여러 MPI 등급을 실행할 수 있습니다. 이 경우 모든 순위 (GPU) 코드가 직렬화됩니다. 주어진 랭크의 GPU 코드는 이전 랭크와 관련된 GPU 코드가 완전히 끝나고 GPU를 종료 할 때만 실행되기 시작합니다.

한 등급의 GPU 코드가 다른 등급의 GPU 코드와 동시에 실행될 수있는 기회가 있으면 MPS가 필요합니다. 랭크와 관련된 GPU 코드가 GPU를 완전히 사용하게되면 MPS에서 많은 이점을 얻지 못할 것입니다. 상당한 이점은 다른 등급의 GPU 코드와 동시에 실행할 수있는 등급 GPU 코드에서 관찰됩니다.

+0

빠른 응답을 보내 주셔서 감사합니다. 그러나 Hyper-Q가 어떤 역할을하는지 명확하지 않습니다. 위의 링크에 따르면, Hyper-Q 자체는 "호스트와 GPU간에 32 개의 작업 대기열을 제공하여 GPU에서 여러 MPI 프로세스를 동시에 실행할 수있게하는 것"이라고 Fermi 아키텍처는 여러 순위의 실행을 직렬화합니다. Hyper-Q가 모든 순위를 직렬화하는 경우 Hyper-Q의 요점은 무엇입니까? 또는 Hyper-Q는 하드웨어 기능 일 뿐이며 원래의 Hyper-Q 게시에서 생략 된 중요한 점인 병렬 처리를 사용하려면 MPS와 함께 사용해야합니다. 감사! – rsm

+3

단일 프로세스에서 오는 CUDA 작업과 여러 프로세스에서 오는 CUDA 작업 간에는 차이점이 있습니다. Hyper-Q는 단일 프로세스에서 발생하는 요청에 대한 동시성에 대한 일부 장벽을 제거합니다. 그러나 Hyper-Q와 관련없는 CUDA 동작으로 인해 여러 프로세스의 요청이 계속해서 발생합니다. MPS는 여러 프로세스/순위에서 CUDA 작업을 수집하여 단일 프로세스에서 온 것처럼 GPU에 발급하여 Hyper-Q를 적용 할 수있는 "퍼널"역할을합니다. –

+0

설명 주셔서 대단히 감사합니다. – rsm