2013-06-13 5 views
0

Я испытал это на GTX 690 GPU с 4 Гб оперативной памяти на Windows 7 x64, Visual C++ 10:Multi-GPU Распределение памяти ведет себя по-разному с разным порядком распределения

Я хочу выделить 1,2 Гб оперативной памяти на каждом из два устройства. Если я получаю плунжер с первого устройства, а затем второй, он терпит неудачу и возвращает ошибку распределения памяти, но когда я сначала получаю его с устройства 1, а затем на устройство 0, у него нет проблем. Может ли кто-нибудь сказать мне, почему?

Этот код не:

void * pM1 , * pM2 ; 

CudaCheck(cudaSetDevice(0)) ; 
CudaCheck(cudaMalloc(& pM1 , 1200000000)) ; 
CudaCheck(cudaSetDevice(1)) ; 
CudaCheck(cudaMalloc(& pM2 , 1200000000)) ; 

Этот код работает:

void * pM1 , * pM2 ; 

CudaCheck(cudaSetDevice(1)) ; 
CudaCheck(cudaMalloc(& pM1 , 1200000000)) ; 
CudaCheck(cudaSetDevice(0)) ; 
CudaCheck(cudaMalloc(& pM2 , 1200000000)) ; 

Bests, Рамин

P.S. Функция CudaCheck просто проверяет результат вывода.

ответ

1

Проблема решена. Проблема была связана с активностью SLI. Я отключил его, и теперь он работает плавно.