Это программное обеспечение проверяет память графических процессоров на наличие аппаратных ошибок и мягких ошибок с использованием CUDA (или OpenCL).
Это вилка оригинального, но давнего невозможного проекта по адресу https://sourceforge.net/projects/cudagpumemtest/.
После нашей вилки в 2013 году (v1.2.3) мы в первую очередь сосредоточены на поддержке новых версий CUDA и поддержке нового оборудования NVIDIA. Показатели, поддерживая версии OpenCl, тем не менее, все еще приветствуются.
Лицензия с открытым исходным кодом Иллинойса
Университет Иллинойса/NCSA
Лицензия с открытым исходным кодом
Copyright 2009-2012, Университет Иллинойса. Все права защищены.
Copyright 2013-2019, разработчики PICONGPU в Helmholtz-Zentrum Dresden-Rossendorf
Разработан:
Инновационная системная лаборатория
Национальный центр по суперкомпьютированию приложений
http://www.ncsa.uiuc.edu/aboutus/diretorates/isl.html
Разветвляется и поддерживается для новых графических процессоров Nvidia с 2013 года:
Axel Huebl и Rene Widera
Группа физики вычислительной радиации
Гельмгольц-Зентрум Дрезден-Россендорф
https://www.hzdr.de/crp
Настоящим разрешено бесплатно, любому лицу, получающему копию этого программного обеспечения и связанные с ними файлы документации («Программное обеспечение»), чтобы иметь дело с программным обеспечением без ограничений, включая, помимо прочего, права на использование, копирование, изменение, объединение , публиковать, распространять, сублиценс и/или продавать копии программного обеспечения и разрешить лицам, которым предоставлено программное обеспечение, при условии следующих условий:
Перераспределение исходного кода должно сохранить вышеуказанное уведомление об авторском праве, этот список условий и следующие отказы от ответственности.
Перераспределение в двоичной форме должно воспроизводить вышеуказанное уведомление об авторском праве, этот список условий и следующие отказы от ответственности в документации и/или других материалах, предоставленных при распределении.
Ни названия инновационной системной лаборатории, Национального центра суперкомпьютерных приложений, ни имена ее участников не могут использоваться для одобрения или продвижения продуктов, полученных из этого программного обеспечения, без конкретного предварительного письменного разрешения.
Программное обеспечение предоставляется «как есть», без гарантии любого рода, явного или подразумеваемого, включая, помимо прочего, гарантии товарной пригодности, пригодности для определенной цели и несоответствия. Ни в коем случае не не будут нести ответственность участников или владельцев авторских прав за любые претензии, ущерб или другую ответственность, будь то в действии контракта, деликте или иным образом, возникающим из или в связи с программным обеспечением или использования или других сделок с ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ.
Внутри справочного каталога запустите:
mkdir build
cd build
# build for NVIDIA architecture sm_35
cmake -DCMAKE_CUDA_ARCHITECTURES=35 ..
make
Внутри справочного каталога запустите:
mkdir build
cd build
# build for NVIDIA architecture MI2XX
cmake -DCUDA_MEMTEST_BACKEND=hip -DGPU_TARGETS=gfx90a ..
make
Примечание:
..
- это путь к справочнику. Мы также предоставляем пакет cuda-memtest
в менеджере пакетов Spack.
cuda_memtest
Поведение по умолчанию выполняет тест на все GPU, доступные бесконечно. Есть параметры, чтобы изменить поведение по умолчанию.
cuda_memtest --disable_all --enable_test 10
cuda_memtest --stress
Это запускает тест 10 (стресс -тест). --stress
эквивалентен- --disable_all --enable_test 10 --exit_on_error
cuda_memtest --stress --num_iterations 100 --num_passes 1
Этот делает быстрая проверка здравомыслия на графические процессоры с коротким тестом 10. Подробнее об этом позже.
Смотрите сообщение о справке от
cuda_memtest --help
В каталоге есть простой сценарий sanity_check.sh
. Этот сценарий быстро проверяет, если один графический процессор или все графические процессоры находятся в плохом здоровье.
Пример использования:
# copy the cuda_memtest binary first into the same location as this script, e.g.
cd ..
mv build/cuda_memtest .
./sanity_check.sh 0 //check GPU 0
./sanity_check.sh 1 //check GPU 1
./sanity_check.sh //check All GPUs in the system
Примечание вилки: мы просто запускаем бинарную бинарную карьеру cuda_memtest
. Рассмотрите этот сценарий как источник для вдохновения, или около того.
Даже если вы компилируете с AMD Hip, бинарная инструмента будет назваться cuda_memtest
.
Если вы работаете на AMD -графических процессорах через HIP, инструмент будет упоминаться повсюду CUDA вместо бедра.
Мы не поддерживаем версию OpenCL этой базы кода. Приглашают запросы на восстановление и обновление возможностей OpenCl.
Бег
cuda_memtest --list_tests
Распечатает все тесты и их короткие описания, по состоянию на 18.06.2009 мы реализовали 11 тестов
Test0 [Walking 1 bit]
Test1 [Own address test]
Test2 [Moving inversions, ones&zeros]
Test3 [Moving inversions, 8 bit pat]
Test4 [Moving inversions, random pattern]
Test5 [Block move, 64 moves]
Test6 [Moving inversions, 32 bit pat]
Test7 [Random number sequence]
Test8 [Modulo 20, random pattern]
Test9 [Bit fade test] ==disabled by default==
Test10 [Memory stress test]
Сначала запускается ядро, чтобы написать шаблон. Затем мы выходим из ядра, чтобы память была промыта. Затем мы начинаем новое ядро, чтобы прочитать и проверить, соответствует ли значение шаблону. Ошибка записывается, если она не соответствует каждому местоположению памяти. В том же ядре дополнение шаблона написано после проверки. Третье ядро запускается, чтобы снова прочитать значение и проверить на дополнение к шаблону.
Тест 0 [Walking 1 bit]
Этот тест меняется по одному биту в адресу памяти, чтобы увидеть, как он идет в другое местоположение памяти. Он предназначен для проверки адресных проводов.
Тест 1 [Own address test]
Каждое местоположение памяти заполнено своим адресом. Следующее ядро проверяет, что значение в каждом местоположении памяти все еще согласуется с адресом.
Тест 2 [Moving inversions, ones&zeros]
В этом тесте используется алгоритм движущихся инверсий с шаблонами всех и нулей.
Тест 3 [Moving inversions, 8 bit pat]
Это то же самое, что Test 1, но использует 8 -битную схему «ходячих» и нулей. Этот тест лучше обнаружит тонкие ошибки в «широких» чипах памяти.
Тест 4 [Moving inversions, random pattern]
Тест 4 использует тот же алгоритм, что и тест 1, но шаблон данных является случайным числом и его дополнением. Этот тест особенно эффективен в поиске трудностей для обнаружения чувствительных к данным ошибок. Последовательность случайных чисел отличается с каждым проходом, поэтому несколько проходов повышают эффективность.
Тест 5 [Block move, 64 moves]
Этот тест напряжает память, перемещая воспоминания о блоках. Память инициализируется с помощью смещения шаблонов, которые перевернуты каждые 8 байтов. Затем блоки памяти перемещаются. После того, как ходы завершены, шаблоны данных проверены. Поскольку данные проверяются только после того, как перемещения памяти завершены, невозможно узнать, где произошла ошибка. Сообщаемые адреса представлены только для того, где была найдена плохой шаблон.
Тест 6 [Moving inversions, 32 bit pat]
Это вариант алгоритма движущихся инверсий, который сдвигает шаблон данных, оставил один бит для каждого последовательного адреса. Положение исходного бита смещено влево для каждого прохода. Для использования всех возможных шаблонов данных требуются 32 проходы. Этот тест весьма эффективен при обнаружении ошибок, чувствительных к данным, но время выполнения длительное.
Тест 7 [Random number sequence]
Этот тест записывает серию случайных чисел в память. Блок (1 МБ) памяти инициализируется случайными шаблонами. Эти шаблоны и их дополнения используются в тесте движущихся инверсий с остальной памятью.
Тест 8 [Modulo 20, random pattern]
Генерируется случайная картина. Этот шаблон используется для установки каждого 20 -го местоположения памяти в памяти. Остальная часть местоположения памяти установлена на дополнение к шаблону. Повторите это в течение 20 раз, и каждый раз, когда местоположение памяти, чтобы установить шаблон, сдвинуто правильно.
Тест 9 [Bit fade test, 90 min, 2 patterns]
Тест битового выцветания инициализирует всю память с помощью рисунка, а затем спит в течение 90 минут. Затем память проверяется, чтобы увидеть, изменились ли какие -либо биты памяти. Все и все нулевые узоры используются. Этот тест занимает 3 часа. Тест битовой выцветания отключен по умолчанию
Тест 10 [memory stress test]
Стрессовая память как можно больше. Сгенерируется случайный рисунок, и запускается ядро большого размера сетки и размера блока, чтобы установить всю память на шаблон. Новое ядро чтения и записи запускается сразу после предыдущего ядра записи, чтобы проверить, есть ли какие -либо ошибки в памяти, и установить память в комплемент. Этот процесс повторяется в течение 1000 раз для одного шаблона. Ядро написано для достижения максимальной полосы пропускания между глобальной памятью и графическим процессором. Это увеличит вероятность того, что он поймает ошибку программного обеспечения. На практике мы нашли этот тест довольно полезным для промывания аппаратных ошибок.