Ошибка выполнения UPC: размер вне диапазона для UPC_SHARED_HEAP_SIZE

Я пытался запустить код xcorupc_alaska составлено на Berkeley UPC

upcrun -n 3 -shared-heap=18GB xcorupc_alaska inputpgas0.txt

Общий объем памяти на моем компьютере составляет 64 GB и я хочу выделить 18 GB в 3 Процессоры (это четырехъядерный процессор), поэтому это должно быть выполнимо (использование 18x3=54 GB). Однако я получаю эту ошибку.

UPC Runtime error: out-of-range size for UPC_SHARED_HEAP_SIZE: 18 GB
NOTICE: Before reporting bugs, run with GASNET_BACKTRACE=1 in the environment to generate a backtrace. 
UPC Runtime error: out-of-range size for UPC_SHARED_HEAP_SIZE: 18 GB
NOTICE: Before reporting bugs, run with GASNET_BACKTRACE=1 in the environment to generate a backtrace. 
UPC Runtime error: out-of-range size for UPC_SHARED_HEAP_SIZE: 18 GB
NOTICE: Before reporting bugs, run with GASNET_BACKTRACE=1 in the environment to generate a backtrace.

Любая идея о том, что вызывает эту ошибку и как ее исправить? Спасибо за вашу помощь.


РЕДАКТИРОВАТЬ: даже для 64 bit система, по умолчанию максимальная общая память на поток 16 GB, Согласно информации в INSTALL.TXTПерекомпилировал с флагом --with-sptr-packed-bits=20,9,35, Это ограничивает максимальное количество возможных потоков 2^9, но позволяет 2^16=32 GB максимальная общая память на поток. Это решило мою проблему.

1 ответ

Решение

Наиболее распространенной причиной этой ошибки является то, что ваша сборка Berkeley UPC настроена для работы с 32-разрядными исполняемыми файлами приложений, которые не могут надежно обрабатывать более 2 ГБ общей кучи на процесс. Вы можете подтвердить это, проверив строку "Архитектура" в выходных данных этой команды:

upcrun -i xcorupc_alaska (или поменяйте местами имя любого исполняемого файла BUPC)

Учитывая конфигурацию вашего оборудования, я бы настоятельно рекомендовал перекомпилировать Berkeley UPC для ABI LP64, предполагая, что ваша ОС поддерживает его (большинство современных ОС поддерживают).

Детали для этого зависят от вашего переводчика и компилятора. Предполагая, что вы используете стандартный онлайн-переводчик Berkeley UPC и gcc-подобный набор компиляторов, вам, вероятно, понадобится строка конфигурации, например:

$(srcdir)/configure CC='gcc -m64' CXX='g++ -m64' MPI_CC='mpicc -m64'

убедитесь, что вы запустили его в новой сборочной директории, чтобы начать с чистого листа. Затем соберите и установите как обычно (подробности в $(srcdir)/INSTALL.TXT).

Другие вопросы по тегам