Я испытал это на 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 просто проверяет результат вывода.