Как запустить тестирование памяти GPGPU

Вопрос или проблема

Мы активно используем вычисления GPGPU (в основном с CUDA, но есть и OpenCL). Часто, когда пользователи запускают код, он выдает ошибку памяти только на одном из наших хостов. Я подозреваю, что одна из карт неисправна. Иногда это приводит к падению всей системы, а иногда программа просто завершает работу с ошибкой.

Какие самые простые, быстрые и тщательные способы полностью протестировать GPU на возможные сбои?

Я знаю, что есть программы, которые входят в состав SDK CUDA от NVIDIA:

   deviceQuery
   nvidia-smi

Но мне нужно что-то гораздо более тщательное. Есть предложения? Опыт?

К де-факто стандарту, похоже, относится CUDA GPU Memtest. Как упоминал @c2h5oh, похоже, это основано на тестовых шаблонах memtest86, так что я уверен, что оно справляется с задачей. Оно работает довольно быстро на высокопроизводительных GPU, которые я тестирую (30 минут на Quadro 6000 и 20 минут на Tesla C2075). Оно работает внутри ОС (в отличие от memtest), поэтому мониторинг немного отличается. Вам, вероятно, будет полезно вывести stdout и stderr в файл, чтобы посмотреть позже. Подумайте о том, чтобы запустить его чем-то вроде этого, чтобы в случае потери вывода терминала вы могли посмотреть, что нашли тесты:

cuda_memtest 2>cuda_memtest.stderr 1>cuda_memtest.stdout &
tail -f cuda_memtest.stdout &
tail -f cuda_memtest.stderr &

Также вам нужно убедиться, что никто не использует систему и/или карты. Вы можете установить для GPU эксклюзивный режим с помощью:

nvidia-smi --compute-mode=EXCLUSIVE_PROCESS

Вот некоторые результаты примеров запуска как Quadro, так и Tesla, если вам интересно, какую информацию о тестировании выводят:

[09/07/2012 11:56:22][hydro][0]:Запуск cuda memtest, версия 1.2.2
[09/07/2012 11:56:23][hydro][0]:Предупреждение: Не удалось получить серийный номер
[09/07/2012 11:56:23][hydro][0]:Версия NVRM: NVIDIA UNIX x86_64 Kernel Module  295.41  Пт Апр  6 23:18:58 PDT 2012
[09/07/2012 11:56:23][hydro][0]:num_gpus=1
[09/07/2012 11:56:23][hydro][0]:Имя устройства=Quadro 6000, общий размер памяти=6441992192
[09/07/2012 11:56:23][hydro][0]:major=2, minor=0
[09/07/2012 11:56:24][hydro][0]:Успешно подключен к устройству 0.
[09/07/2012 11:56:24][hydro][0]:Выделено 6040 МБ
[09/07/2012 11:56:24][hydro][0]:Тест0 [Постоянный 1 бит]
[09/07/2012 11:56:30][hydro][0]:Тест0 завершен за 5.7 секунд
[09/07/2012 11:56:30][hydro][0]:Тест1 [Тест собственного адреса]
[09/07/2012 11:56:33][hydro][0]:Тест1 завершен за 3.5 секунд
[09/07/2012 11:56:33][hydro][0]:Тест2 [Движущиеся инверсии, единицы и нули]
[09/07/2012 11:57:05][hydro][0]:Тест2 завершен за 32.3 секунд
[09/07/2012 11:57:05][hydro][0]:Тест3 [Движущиеся инверсии, 8 битный паттерн]
[09/07/2012 11:57:37][hydro][0]:Тест3 завершен за 31.9 секунд
[09/07/2012 11:57:37][hydro][0]:Тест4 [Движущиеся инверсии, случайный паттерн]
[09/07/2012 11:57:53][hydro][0]:Тест4 завершен за 15.9 секунд
[09/07/2012 11:57:53][hydro][0]:Тест5 [Блочное перемещение, 64 перемещения]
[09/07/2012 11:57:59][hydro][0]:Тест5 завершен за 6.3 секунд
[09/07/2012 11:57:59][hydro][0]:Тест6 [Движущиеся инверсии, 32 битный паттерн]
[09/07/2012 12:18:46][hydro][0]:Тест6 завершен за 1246.6 секунд
[09/07/2012 12:18:46][hydro][0]:Тест7 [Случайная последовательность чисел]
[09/07/2012 12:19:06][hydro][0]:Тест7 завершен за 19.8 секунд
[09/07/2012 12:19:06][hydro][0]:Тест8 [По модулю 20, случайный паттерн]
[09/07/2012 12:19:06][hydro][0]:test8[мод тест]: p1=0x13472f5f, p2=0xecb8d0a0
[09/07/2012 12:20:34][hydro][0]:Тест8 завершен за 88.0 секунд
[09/07/2012 12:20:34][hydro][0]:Тест10 [Тест на нагрузку памяти]
[09/07/2012 12:20:34][hydro][0]:Тест10 с паттерном=0x55f6c69858704128
[09/07/2012 12:21:11][hydro][0]:Тест10 завершен за 36.8 секунд
[09/07/2012 12:21:11][hydro][0]:Тест0 [Постоянный 1 бит]
[09/07/2012 12:21:16][hydro][0]:Тест0 завершен за 5.8 секунд



[09/06/2012 18:49:07][hydro][0]:Запуск cuda memtest, версия 1.2.2
[09/06/2012 18:49:10][hydro][0]:Предупреждение: Не удалось получить серийный номер
[09/06/2012 18:49:10][hydro][0]:Версия NVRM: NVIDIA UNIX x86_64 Kernel Module  295.41  Пт Апр  6 23:18:58 PDT 2012
[09/06/2012 18:49:10][hydro][0]:num_gpus=1
[09/06/2012 18:49:10][hydro][0]:Имя устройства=Tesla C2075, общий размер памяти=5636292608
[09/06/2012 18:49:10][hydro][0]:major=2, minor=0
[09/06/2012 18:49:11][hydro][0]:Успешно подключен к устройству 0.
[09/06/2012 18:49:11][hydro][0]:Выделено 5273 МБ
[09/06/2012 18:49:11][hydro][0]:Тест0 [Постоянный 1 бит]
[09/06/2012 18:49:22][hydro][0]:Тест0 завершен за 11.1 секунд
[09/06/2012 18:49:22][hydro][0]:Тест1 [Тест собственного адреса]
[09/06/2012 18:49:25][hydro][0]:Тест1 завершен за 3.1 секунд
[09/06/2012 18:49:25][hydro][0]:Тест2 [Движущиеся инверсии, единицы и нули]
[09/06/2012 18:49:52][hydro][0]:Тест2 завершен за 27.4 секунд
[09/06/2012 18:49:52][hydro][0]:Тест3 [Движущиеся инверсии, 8 битный паттерн]
[09/06/2012 18:50:20][hydro][0]:Тест3 завершен за 27.9 секунд
[09/06/2012 18:50:20][hydro][0]:Тест4 [Движущиеся инверсии, случайный паттерн]
[09/06/2012 18:50:34][hydro][0]:Тест4 завершен за 13.7 секунд
[09/06/2012 18:50:34][hydro][0]:Тест5 [Блочное перемещение, 64 перемещения]
[09/06/2012 18:50:39][hydro][0]:Тест5 завершен за 5.5 секунд
[09/06/2012 18:50:39][hydro][0]:Тест6 [Движущиеся инверсии, 32 битный паттерн]
[09/06/2012 19:08:34][hydro][0]:Тест6 завершен за 1074.9 секунд
[09/06/2012 19:08:34][hydro][0]:Тест7 [Случайная последовательность чисел]
[09/06/2012 19:08:51][hydro][0]:Тест7 завершен за 17.1 секунд
[09/06/2012 19:08:51][hydro][0]:Тест8 [По модулю 20, случайный паттерн]
[09/06/2012 19:08:51][hydro][0]:test8[мод тест]: p1=0x63136646, p2=0x9cec99b9
[09/06/2012 19:10:10][hydro][0]:Тест8 завершен за 78.4 секунд
[09/06/2012 19:10:10][hydro][0]:Тест10 [Тест на нагрузку памяти]
[09/06/2012 19:10:10][hydro][0]:Тест10 с паттерном=0x26341d134a89ac2b
[09/06/2012 19:10:39][hydro][0]:Тест10 завершен за 29.0 секунд

Google: Memtest + GPU: любой из первых трех результатов кажется действительным ответом. Личного опыта нет.

http://sourceforge.net/projects/cudagpumemtest/

http://www.softpedia.com/get/Tweak/Memory-Tweak/CUDA-MemTest.shtml

https://simtk.org/home/memtest/

Терминал онлайн, чтобы ты знал, что я не получил никаких денег от Tesla, банк с разными счетами, и у меня только один, тебе нужно положить на мой счет с видео на Facebook в приложении банка.

Ответ или решение

Как провести тестирование памяти GPGPU

В условиях увеличения популярности вычислений GPGPU, в том числе с использованием CUDA и OpenCL, важно обеспечить надёжность и работоспособность графических процессоров (GPU). Непредсказуемые ошибки памяти могут приводить к сбоям программ, иногда даже к падению всей системы. В данной статье мы обсудим наиболее эффективные и тщательные методы для тестирования памяти GPU на наличие возможных неисправностей.

1. Подготовка к тестированию

Перед началом тестирования следует выполнить несколько подготовительных этапов:

  • Обеспечение доступа к GPU: Убедитесь, что никакие другие пользователи не используют систему или графические карты. Это особенно важно для предотвращения вмешательства в результаты тестов.

  • Установка режима эксклюзивного доступа: Включите эксклюзивный режим обработки для GPU, чтобы избежать конфликтов. Это можно сделать с помощью команды:

    nvidia-smi --compute-mode=EXCLUSIVE_PROCESS

2. Инструменты для тестирования GPU

Для тестирования памяти GPU можно использовать несколько инструментов, среди которых:

  1. CUDA GPU Memtest:

    • Это приложение является стандартом для тестирования памяти GPU. Оно базируется на тестах, используемых в memtest86 и обладает способностью выявлять различные типы ошибок памяти.
    • Вы можете скачать его здесь.
    • Для запуска используйте команду, которая позволит сохранить вывод в файлы:
      cuda_memtest > cuda_memtest.stdout 2> cuda_memtest.stderr &
      tail -f cuda_memtest.stdout &
      tail -f cuda_memtest.stderr &
  2. nvidia-smi:

    • Это инструмент командной строки для мониторинга состояния GPU. С помощью него можно получать информацию о загрузке памяти, температуре и других важных параметрах. Однако он не предоставляет полноценного тестирования памяти.
  3. Утилиты от других разработчиков:

    • Существует множество альтернативных программ, таких как Memtest и другие, которые могут предоставить дополнительные возможности для тестирования.

3. Процесс тестирования

После подготовки и установки необходимого программного обеспечения, можно начинать тестирование.

  1. Запустите cuda_memtest и наблюдайте за выполнением тестов. Убедитесь, что в процессе тестирования не выполняются другие ресурсоемкие задачи.
  2. Внимательно просматривайте вывод на наличие ошибок или предупреждений. В случае их наличия, это может свидетельствовать о неисправности GPU.

4. Анализ результатов

После завершения тестирования анализируйте собранные данные:

  • Если в выводе были указаны ошибки, рассмотрите возможность замены GPU или его дальнейшего тестирования в другом окружении.
  • Сравните результаты с предыдущими тестированиями (если такие проводились), чтобы отслеживать динамику состояния устройства.

Заключение

Тестирование памяти GPU — важная часть поддержки систем GPGPU. Использование таких инструментов, как CUDA GPU Memtest, обеспечивает глубокую проверку и позволяет выявить потенциальные проблемы, которые могут повлиять на производительность и стабильность вычислений. Убедитесь, что тестирование проводятся регулярно, чтобы предотвратить сбои и неожиданное поведение программ в будущем.

Оцените материал
Добавить комментарий

Капча загружается...