Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何解决UPC运行时错误:共享内存不足_Upc - Fatal编程技术网

如何解决UPC运行时错误:共享内存不足

如何解决UPC运行时错误:共享内存不足,upc,Upc,我正试图在一台拥有64内核和256 GBRAM的计算机上运行Berkeley UPC代码。但是,由于找不到足够的内存,代码无法运行。由于51 x 5=255 GB

我正试图在一台拥有
64
内核和
256 GB
RAM的计算机上运行
Berkeley UPC
代码。但是,由于找不到足够的内存,代码无法运行。由于51 x 5=255 GB<256 GB,因此以下各项应能正常工作

upcrun -n 51 -shared-heap=5GB xcorupc_sac inputpgas_sac{$rc1}.txt
..
UPCR: UPC thread  3 of 51 on range (pshm node 0 of 1, process  3 of 51, pid=191914)
UPCR: UPC thread 16 of 51 on range (pshm node 0 of 1, process 16 of 51, pid=191927)
UPC Runtime warning: Requested shared memory (5120 MB) > available (2515 MB) on node 0 (range): using 2515 MB per thread instead

UPC Runtime error: out of shared memory
  Local shared memory in use:  1594 MB per-thread,  81340 MB total
  Global shared memory in use:    0 MB per-thread,     1 MB total
  Total shared memory limit:   2515 MB per-thread,  128281 MB total
upc_alloc unable to service request from thread 0 for 1672245248 more bytes

NOTICE: Before reporting bugs, run with GASNET_BACKTRACE=1 in the environment to generate a backtrace. 
NOTICE: We recommend linking the debug version of GASNet to assist you in resolving this application issue.
我不明白为什么
总共享内存限制
128 GB
,占现有物理内存总量的一半。即使使用
sharedheap
标志,我也无法超越它,因为我明确要求每个线程
5GB
。有什么建议吗

cat /proc/meminfo 
MemTotal:       263378836 kB
UPC构建是使用标志
——sptr压缩位=20,9,35
编译的,每个线程最多允许2^35=32 GB的共享内存

EDIT1:下面是命令的输出
upcc--version

[avinash@range jointinvsurf5_cajoint_compile]$ upcc --version
This is upcc (the Berkeley Unified Parallel C compiler), v. 2019.4.4
  (getting remote translator settings...)
----------------------+---------------------------------------------------------
 UPC Runtime          | v. 2019.4.4, built on Feb 11 2020 at 23:31:40
----------------------+---------------------------------------------------------
 UPC-to-C translator  | v. 2.28.0, built on Jul 19 2018 at 20:29:47
                      | host aphid linux-x86_64/64
                      | gcc v4.2.4 (Ubuntu 4.2.4-1ubuntu4)
----------------------+---------------------------------------------------------
 Translator location  | http://upc-translator.lbl.gov/upcc-2019.4.0.cgi
----------------------+---------------------------------------------------------
 networks supported   | smp udp mpi ibv
----------------------+---------------------------------------------------------
 default network      | ibv
----------------------+---------------------------------------------------------
 pthreads support     | available (if used, default is 2 pthreads per process)
----------------------+---------------------------------------------------------
 Configured with      | '--with-translator=http://upc-translator.lbl.gov/upcc-2
                      | 019.4.0.cgi' '--with-sptr-packed-bits=20,9,35'
                      | '--prefix=/usr/local/berkeley_upc/opt'
                      | '--with-multiconf-magic=opt'
----------------------+---------------------------------------------------------
 Configure features   | trans_bupc,pragma_upc_code,driver_upcc,runtime_upcr,
                      | gasnet,upc_collective,upc_io,upc_memcpy_async,
                      | upc_memcpy_vis,upc_ptradd,upc_thread_distance,upc_tick,
                      | upc_sem,upc_dump_shared,upc_trace_printf,
                      | upc_trace_mask,upc_local_to_shared,upc_all_free,
                      | upc_atomics,pupc,upc_types,upc_castable,upc_nb,nodebug,
                      | notrace,nostats,nodebugmalloc,nogasp,nothrille,
                      | segment_fast,os_linux,cpu_x86_64,cpu_64,cc_gnu,
                      | packedsptr,upc_io_64
----------------------+---------------------------------------------------------
 Configure id         | range Tue Feb 11 23:18:39 PST 2020 gnome-initial-setup
----------------------+---------------------------------------------------------
 Binary interface     | 64-bit x86_64-unknown-linux-gnu
----------------------+---------------------------------------------------------
 Runtime interface #  | Runtime supports 3.0 -> 3.13: Translator uses 3.6
----------------------+---------------------------------------------------------
                      |  --- BACKEND SETTINGS (for ibv network) ---
----------------------+---------------------------------------------------------
 C compiler           | /usr/bin/gcc
                      |   GNU/4.8.5/4.8.5 20150623 (Red Hat 4.8.5-39)
                      |   gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39) Copyright
                      |   (C) 2015 Free Software Foundation, Inc.
----------------------+---------------------------------------------------------
 C compiler flags     | -O3 --param max-inline-insns-single=35000 --param
                      | inline-unit-growth=10000 --param
                      | large-function-growth=200000 -Wno-unused
                      | -Wunused-result -Wno-unused-parameter -Wno-address
                      | -std=gnu99
----------------------+---------------------------------------------------------
 linker               | /data/seismo82/avinash/Programs/openmpiinstall/bin/mpic
                      | c
                      |   GNU/4.8.5/4.8.5 20150623 (Red Hat 4.8.5-39)
                      |   gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39) Copyright
                      |   (C) 2015 Free Software Foundation, Inc.
----------------------+---------------------------------------------------------
 linker flags         | -D_GNU_SOURCE=1 -O3 --param
                      | max-inline-insns-single=35000 --param
                      | inline-unit-growth=10000 --param
                      | large-function-growth=200000 -Wno-unused
                      | -Wunused-result -Wno-unused-parameter -Wno-address
                      | -std=gnu99 -L/data/seismo82/avinash/Programs/myupc/opt
                      | -L/data/seismo82/avinash/Programs/myupc/opt/umalloc
                      | -lupcr-ibv-seq -lumalloc
                      | -L/data/seismo82/avinash/Programs/myupc/opt/gasnet/ibv-
                      | conduit -lgasnet-ibv-seq -libverbs -lpthread -lrt
                      | -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5 -lgcc -lm
----------------------+---------------------------------------------------------
EDIT2:以下是
df-h/dev/shm
命令的输出

[avinash@range jointinvsurf5_cajoint_compile]$ df -h /dev/shm
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           126G   21M  126G   1% /dev/shm

默认情况下,Berkeley UPC使用内核共享内存服务在位于同一位置的进程之间交叉映射UPC共享段。对于smp导管,这是唯一的操作模式

假设这是一个配置默认值的Linux系统,最可能的解释是内核提供的POSIX共享内存空间耗尽。您可以通过查看虚拟文件系统来确认这一点。下面是一个配置最多20G共享内存的系统示例:

$df -h /dev/shm /var/shm /run/shm
df: '/var/shm': No such file or directory
df: '/run/shm': No such file or directory
Filesystem      Size  Used Avail Use% Mounted on
tmpfs            20G  504K   20G   1% /dev/shm
此值限制每个节点共享内存段的总空间。管理员通常可以通过调整内核设置来提高此限制,尽管详细信息因发行版而异

有关更多信息,请参阅中的“POSIX共享内存的系统设置”部分


最后,请注意,即使解决了上述问题,在具有256 GB物理DRAM(99.6%)的系统上请求255 GB共享内存堆也可能是不可取的。这为应用程序内存的非共享部分(堆栈、静态数据、malloc堆)以及内核和守护进程的内存开销留下了很少的空间。根据您的内核设置,这可能会触发内存不足恐慌,从而开始终止进程。我们通常建议将85%的物理内存限制为安全的经验法则(假设系统处于空闲状态),并在该限制之外“小心操作”。

默认情况下,Berkeley UPC使用内核共享内存服务在位于同一位置的进程之间交叉映射UPC共享段。对于smp导管,这是唯一的操作模式

假设这是一个配置默认值的Linux系统,最可能的解释是内核提供的POSIX共享内存空间耗尽。您可以通过查看虚拟文件系统来确认这一点。下面是一个配置最多20G共享内存的系统示例:

$df -h /dev/shm /var/shm /run/shm
df: '/var/shm': No such file or directory
df: '/run/shm': No such file or directory
Filesystem      Size  Used Avail Use% Mounted on
tmpfs            20G  504K   20G   1% /dev/shm
此值限制每个节点共享内存段的总空间。管理员通常可以通过调整内核设置来提高此限制,尽管详细信息因发行版而异

有关更多信息,请参阅中的“POSIX共享内存的系统设置”部分


最后,请注意,即使解决了上述问题,在具有256 GB物理DRAM(99.6%)的系统上请求255 GB共享内存堆也可能是不可取的。这为应用程序内存的非共享部分(堆栈、静态数据、malloc堆)以及内核和守护进程的内存开销留下了很少的空间。根据您的内核设置,这可能会触发内存不足恐慌,从而开始终止进程。我们通常建议将物理内存的安全经验限制为85%(假设系统处于空闲状态),并在该限制之外“小心操作”。

请提供
upcc--version
的完整输出。假设这是Linux,请同时提供
df-h/dev/shm
(如果该目录不存在,那么/var/shm或/run/shm)@DanBonachea请查看
upcc--version
df-h/dev/shm
命令的输出。根据您的回答,内核提供的POSIX共享内存空间似乎确实限制在
126 GB
。有没有关于如何提高这一限额的建议?我会尽量把它限制在建议的85%。操作系统是
Red Hat Enterprise Linux Server 7.7 3.10.0-1062.12.1.el7.x86_64
ok我读了GASNET自述网页上的那一节。似乎需要管理员权限和技能才能真正进行更改。我两个都没有。感谢您帮助理解这一点。是的,您绝对需要管理员来重新配置内核的/dev/shm分配。考虑到您的不足,您最好的办法可能是说服管理员为您进行更改,或者将您的可用容量限制在126GB。请提供
upcc--version
的完整输出。假设这是Linux,请同时提供
df-h/dev/shm
(如果该目录不存在,那么/var/shm或/run/shm)@DanBonachea请查看
upcc--version
df-h/dev/shm
命令的输出。根据您的回答,内核提供的POSIX共享内存空间似乎确实限制在
126 GB
。有没有关于如何提高这一限额的建议?我会尽量把它限制在建议的85%。操作系统是
Red Hat Enterprise Linux Server 7.7 3.10.0-1062.12.1.el7.x86_64
ok我读了GASNET自述网页上的那一节。似乎需要管理员权限和技能才能真正进行更改。我两个都没有。感谢您帮助理解这一点。是的,您绝对需要管理员来重新配置内核的/dev/shm分配。考虑到您的不足,您最好的办法可能是说服管理员为您进行更改,或者将您的使用限制在126GB。