CudaMalloc не выделяет общую память графического процессора на микроархитектурах Ampere, в отличие от TuringC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 CudaMalloc не выделяет общую память графического процессора на микроархитектурах Ampere, в отличие от Turing

Сообщение Anonymous »


Я использую CUDA Toolkit 11.8 — операционная система — Windows.
Программа скомпилирована под Windows с помощью Nvidia T1200.
Я использую CMAKE 3.15.7 с флагом:

CMAKE_CUDA_ARCH_BIN: 3,5 5,0 5,2 5,3 6,0 6,1 6,2 7,0 7,2 7,5 8,0 8,6 8,7 8,9 9,0 ПРОБЛЕМА Когда я запускаю код на своем ноутбуке (T1200), я вижу, что CudaMalloc сначала выделяет память на выделенной памяти графического процессора, а когда там больше нет свободного места , он автоматически распределяет данные в общую память графического процессора.

Когда тот же код запускается на RTX 3070, CudaMalloc сначала выделяет память в выделенной памяти графического процессора, но когда она заполнена, он больше не выделяет данные в общую память Память графического процессора, но сообщает cudaErrorMemoryAllocation

И я не понимаю, почему поведение на отдельных GPU разное.

Я собираю программу на ноутбуке, затем копирую исполняемый файл на машину с RTX 3070 и выполняю программу там.
КОД
Пример рабочего теста Google

класс CudaTestMemory { публика: беззнаковый символ *m_cudaBuffer; }; TEST_F(Cuda, cudaAllocator) { CudaTestMemory *m_costBuffer[50]; для (int я = 0; я m_cudaBuffer, selectedMemory); если (cudaStatus != cudaSuccess) { // не удалось — невозможно выделить XXXX памяти графического процессора m_costBuffer->m_cudaBuffer = nullptr; throw std::runtime_error(cudaGetErrorString(cudaStatus)); } } } Результат на NVIDIA T1200 NVIDIA T1200 имеет 4 ГБ выделенной памяти графического процессора + 32 ГБ общей памяти графического процессора. Тест завершается сбоем на итерации номер 34, когда на графическом процессоре больше нет свободного места (устройство + общий доступ)
Результат на NVIDIA RTX 3070
NVIDIA RTX 3070 имеет 8 ГБ выделенной памяти + 128 ГБ общей памяти графического процессора. Тест завершается сбоем на итерации номер 7, когда на графическом процессоре больше нет памяти (только устройство).
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»