首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UPC运行时错误: UPC_SHARED_HEAP_SIZE的超出范围大小

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

Stack Overflow用户
提问于 2018-06-14 22:28:28
回答 1查看 74关注 0票数 1

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

代码语言:javascript
复制
upcrun -n 3 -shared-heap=18GB xcorupc_alaska inputpgas0.txt

我的计算机上的总内存是64 GB,我想将18 GB分配给3 CPU(它是一个四核处理器),所以它应该是可行的(使用18x3=54 GB)。但是我得到了这个错误。

代码语言:javascript
复制
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最大共享内存。这解决了我的问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-15 16:29:58

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

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中的详细信息)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50866799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档