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

时间:2018-06-14 22:28:29

标签: upc

我尝试运行在xcorupc_alaska

上编译的代码Berkeley UPC
upcrun -n 3 -shared-heap=18GB xcorupc_alaska inputpgas0.txt

我的计算机上的总内存为64 GB,我想要18 GB分配给3个CPU(它是一个四核处理器),所以它应该是可行的(usage {{ 1}})。但是我收到了这个错误。

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。根据{{​​1}}中的信息,我使用标记16 GB重新编译。这会将可能线程的最大数量限制为INSTALL.TXT,但每个线程允许--with-sptr-packed-bits=20,9,35最大共享内存。这解决了我的问题。

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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

确保在新的构建目录中运行它,以确保从干净的平板开始。然后像往常一样构建和安装(详见$(srcdir)/INSTALL.TXT)。