2016-07-27 3 views
0

Titan Z라는 듀얼 GPU 카드가 있습니다. Matlab 2016a가 희박한 Ax=b 방정식을 다른 'b'값으로 설정하려고합니다. Titan Z에는 각 GPU에 2 개의 GPU와 6GB RAM이 있습니다.Matlab Dual GPU 메모리 사용량

여기에 문제가 있습니다. 나는 1 개 GPU에 Ax=b 문제를 해결하는 경우

  1. ,의 각 GPU의 VRAM에 2기가바이트, matlab에 사본이 행렬의 'A'매트릭스 크기를 가정 해 봅시다. GPU-Z는 각각의 GPU는 2GB의 데이터와 나는 두 Ax=b 문제 GPU 2를 해결하는 경우
  2. 작업에만 1 GPU를 가지고 를보고의 말 각 GPU 년대에 2기가바이트, matlab에 다시 사본이 행렬의 'A'매트릭스 크기하자 두 번 vram. 이제 GPU-Z는 각 GPU에 4GB의 데이터가 있고 2 개의 GPU가 동시에 작동한다고보고합니다.
  3. 동시에 '4GB'문제를 해결하려고 시도하면 Nvidia 드라이버 이 Vram이 부족하기 때문에이 충돌합니다. 하지만 하나의 GPU에서 해결할 수 있습니다. 동시에 2 GPU가 아닙니다. 그것은 더 흥미롭게 필요하지 않을 때

문제는 두 개의 GPU는 동일한 "A"매트릭스하지만 다른 'b'벡터를 사용하는 경우는이 작업을 수행하는, 그 행렬 회 매트랩 사본이다.

이 문제를 어떻게 해결할 수 있습니까?

+0

코드를 공유 할 수 있습니까? 당신은'spmd' 또는 이와 유사한 것을 사용하고 있습니까? – Edric

+0

그것은 실제로 간단합니다. gpuArray를 사용하여 할당하고 전송 한 다음 parfor 루프 (i = 1 : 2)를 사용하여 방정식 세트를 해결합니다. GPU에서. – coercion

+0

그래서'parfor' 루프 안에'gpuArray'를 만들지 않습니까? 'parfor' 안에'gpuArray'를 빌드하면 어떻게됩니까? – Edric

답변

0

내 자신의 질문에 약간 늦었지만 여기 해결책이 있습니다. Nvidia Control Panel에서 다중 GPU 모드를 비활성화하면 문제가 해결됩니다. 기본적으로 sli를 비활성화하고 gpus는 독립적으로 실행할 수 있습니다. 그 것처럼 간단했습니다.