Вопрос или проблема
Я участвую в конкурсе по высокопроизводительным вычислениям, и моя команда получила ответственность за выполнение бенчмарков MILC с использованием NERSC.
Мы сделали следующее:
$ git clone https://github.com/milc-qcd/milc_qcd.git
$ cd milc_qcd
$ git checkout develop
$ cd ks_imp_rhmc
$ cp ../Makefile .
Наш Makefile выглядит следующим образом:
# Дополнительные баллы будут присваиваться командам, которые используют как GNU, так и Intel компиляторы
COMPILER=gcc
COMPILER=intel # нам сказали использовать oneAPI
# Определите это с помощью lscpu
ARCH=epyc
# Вы НЕ компилируете для GPU
WANTQUDA=false
# Вы можете протестировать с помощью последовательного запуска, но бенчмарк не завершится без MPI и/или потоков OpenMP
MPP=true
# Вы должны использовать двойную точность
PRECISION=2
OMP=true
Мы попытались создать этот файл с помощью:
$ make su3_rhmd_hisq 2>&1 | tee make_logfile.log
Однако процесс сборки потерпел неудачу и вернул сообщение об ошибке, показанное ниже:
Ответ или решение
Ситуация, с которой вы столкнулись, требует тщательного анализа и понимания ошибок, возникающих при компиляции MILC. Вы предоставили подробности о процессе, который вы прошли, и ошибках, с которыми столкнулись. Давайте рассмотрим возможные причины ошибки и потенциальные пути решения.
Проблемы компиляции MILC: Ошибка 2
Контекст и начальные шаги
Вы выполнили следующие действия:
-
Клонирование репозитория: Вы правильно загрузили исходный код MILC с помощью git, что является стандартной практикой для получения актуальной версии программного обеспечения.
-
Проверка ветки develop: Переключение на ветку develop должно обеспечить вам доступ к последним изменениям, которые могут включать улучшения и исправления ошибок.
-
Копирование Makefile: Вы скопировали Makefile из родительской директории, что является важным шагом для настройки среды компиляции.
Анализ Makefile
Ваш Makefile содержит конфигурацию для компиляции:
# Использование как GNU, так и Intel компиляторов
COMPILER=gcc
COMPILER=intel
...</code>
Обратите внимание на повторное определение переменной COMPILER
. В результате компилятор будет использован intel
, так как именно он объявлен последним. Убедитесь, что вы действительно хотите использовать компилятор Intel и что он установлен на вашей системе.
# Архитектура
ARCH=epyc
Убедитесь, что флаг архитектуры правильно определяет вашу систему. Вы можете использовать lscpu
, чтобы проверить параметры архитектуры.
# Параметры компиляции
PRECISION=2
WANTQUDA=false
MPP=true
OMP=true
Эти параметры, как правило, верны, хотя настройка WANTQUDA=false
может уменьшить производительность на поддерживаемых архитектурах с поддержкой GPU.
Ошибка во время компиляции
Вы упомянули, что при использовании команды make
для сборки возникла ошибка, однако не была включена конкретная информация о самой ошибке. Если ошибка указана в вашем лог-файле, ключевыми моментами при ее анализе могут быть:
-
Проблемы с зависимостями: Убедитесь, что все необходимые библиотеки и инструменты установлены. Обратите внимание на отсутствие заголовочных файлов или библиотек, которые могли бы привести к ошибке компиляции.
-
Правильный путь к компиляторам: Убедитесь, что пути к компиляторам
gcc
иintel
корректны, и что соответствующие версии компиляторов установлены и доступны в вашем окружении. -
Поддержка MPI и OpenMP: Убедитесь, что ваш компилятор поддерживает необходимые библиотеки для параллельных вычислений, такие как MPI и OpenMP. При необходимости установите соответствующие пакеты.
Рекомендации по исправлению ошибок
-
Перепроверьте Makefile: Убедитесь, что в файле нет конфликтующих настроек, и все переменные правильно инициализированы.
-
Очистите кеш сборки: Иногда старые артефакты могут вызвать ошибки. Попробуйте выполнить команду
make clean
, а затем повторную сборку. -
Проверьте логи: Изучите содержимое
make_logfile.log
на предмет подсказок, связанных с ошибками. Это может помочь выявить, что именно пошло не так. -
Обратитесь к документации: Проверьте официальную документацию MILC и сторонние ресурсы для поиска известных проблем и их решений, связанных с компиляцией на вашем оборудовании.
Заключение
Компиляция MILC может быть сложной задачей, особенно в контексте высокопроизводительных вычислений. Следуя приведенным рекомендациям и избегая дублирования конфигурационных параметров, вы сможете устранить возникшие проблемы и успешно завершить тестирование. Не забывайте также о возможностях, предоставляемых сообществом, и механизмах обратной связи для получения дополнительных советов и решений.