UPC 运行时错误:UPC_SHARED_HEAP_SIZE的大小超出范围



我尝试运行在Berkeley UPC上编译xcorupc_alaska代码

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

我的计算机上的总内存64 GB,我想将18 GB分配给3CPU(它是四核处理器(,因此它应该是可行的(使用情况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最大共享内存。这解决了我的问题。

此错误的最常见原因是您的 Berkeley UPC 版本配置为面向 32 位应用程序可执行文件,这些可执行文件无法可靠地处理每个进程超过 2GB 的共享堆。您可以通过检查此命令输出中的"架构"行来确认这一点:

upcrun -i xcorupc_alaska(或以任何 BUPC 可执行文件的名称交换(

鉴于您的硬件配置,我强烈建议您为 LP64 ABI 重建伯克利 UPC,假设您的操作系统支持它(大多数现代操作系统都支持(。

执行此操作的详细信息取决于您的翻译器和编译器。假设您使用的是默认的在线伯克利UPC转换器和类似gcc的编译器套件,您可能需要如下所示的配置行:

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

确保在全新的构建目录中运行它,以确保您从头开始。然后像往常一样构建和安装(详细信息在$(srcdir)/INSTALL.TXT(。

相关内容

  • 没有找到相关文章

最新更新