【问题标题】:R hangs when ncdf4 nc_open is called in HPC cluster在 HPC 集群中调用 ncdf4 nc_open 时 R 挂起
【发布时间】:2019-01-31 19:16:33
【问题描述】:

我已经开始在 HPC 服务器上使用 R (R/3.5.1-foss-2018b)。它似乎工作正常,除非它必须处理 NetCDF 文件。我正在使用 ncdf4 包中的 nc_open 函数来读取 NetCDF 文件。当我调用这个函数时(不管 NetCDF 文件的大小),程序只是挂起,我完全失去了对它的任何控制。但是,在我自己的笔记本电脑上使用相同版本的 R,它工作正常(所以它不似乎是一个R错误)。我宁愿认为与安装在集群上的模块(依赖项)存在兼容性问题,但我无法找出是哪个模块以及为什么会出现问题。这就是我得到的输入sessionInfo():

    R version 3.5.1 (2018-07-02)
    Platform: x86_64-pc-linux-gnu (64-bit)
    Running under: CentOS Linux 7 (Core)

    >Matrix products: default
    BLAS/LAPACK: /mnt/ebinstall/software/OpenBLAS/0.3.1-GCC-7.3.0-2.30/lib/libopenblas_haswellp-r0.3.1.so

    locale:
     [1] LC_CTYPE=en_GB.UTF-8       LC_NUMERIC=C              
     [3] LC_TIME=en_GB.UTF-8        LC_COLLATE=en_GB.UTF-8    
     [5] LC_MONETARY=en_GB.UTF-8    LC_MESSAGES=en_GB.UTF-8   
     [7] LC_PAPER=en_GB.UTF-8       LC_NAME=C                 
     [9] LC_ADDRESS=C               LC_TELEPHONE=C            
    [11] LC_MEASUREMENT=en_GB.UTF-8 LC_IDENTIFICATION=C       

    attached base packages:
    [1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a namespace (and not attached):
[1] compiler_3.5.1

我可以使用module list获取当前加载的模块列表:

1) easybuild/software

2) sge/8.5.5

3) GCCcore/7.3.0

4) binutils/2.30-GCCcore-7.3.0

5) GCC/7.3.0-2.30

6) zlib/1.2.11-GCCcore-7.3.0

7) numactl/2.0.11-GCCcore-7.3.0

8) XZ/5.2.4-GCCcore-7.3.0

9) libxml2/2.9.8-GCCcore-7.3.0

10) libpciaccess/0.14-GCCcore-7.3.0

11) hwloc/1.11.10-GCCcore-7.3.0

12) OpenMPI/3.1.1-GCC-7.3.0-2.30

13) OpenBLAS/0.3.1-GCC-7.3.0-2.30

14) gompi/2018b

15) FFTW/3.3.8-gompi-2018b

16) ScaLAPACK/2.0.2-gompi-2018b-OpenBLAS-0.3.1

17) foss/2018b

18) bzip2/1.0.6-GCCcore-7.3.0

19) expat/2.2.5-GCCcore-7.3.0

20) libpng/1.6.34-GCCcore-7.3.0

21) freetype/2.9.1-GCCcore-7.3.0 

22) ncurses/6.1-GCCcore-7.3.0

23) util-linux/2.32-GCCcore-7.3.0

24) fontconfig/2.13.0-GCCcore-7.3.0

25) X11/20180604-GCCcore-7.3.0

26) GMP/6.1.2-GCCcore-7.3.0

27) nettle/3.4-foss-2018b

28) libdrm/2.4.92-GCCcore-7.3.0

29) LLVM/6.0.0-GCCcore-7.3.0

30) Mesa/18.1.1-foss-2018b

31) libGLU/9.0.0-foss-2018b

32) pixman/0.34.0-GCCcore-7.3.0

33) libffi/3.2.1-GCCcore-7.3.0

34) gettext/0.19.8.1-GCCcore-7.3.0

35) PCRE/8.41-GCCcore-7.3.0

36) GLib/2.54.3-GCCcore-7.3.0

37) cairo/1.14.12-GCCcore-7.3.0

38) libreadline/7.0-GCCcore-7.3.0

39) Tcl/8.6.8-GCCcore-7.3.0

40) SQLite/3.24.0-GCCcore-7.3.0

41) NASM/2.13.03-GCCcore-7.3.0

42) libjpeg-turbo/2.0.0-GCCcore-7.3.0

43) LibTIFF/4.0.9-GCCcore-7.3.0

44) Java/1.8.0_181(1.8)

45) Tk/8.6.8-GCCcore-7.3.0

46) cURL/7.60.0-GCCcore-7.3.0

47) Python/3.6.6-foss-2018b

48) Szip/2.1.1-GCCcore-7.3.0

49) HDF5/1.10.2-foss-2018b

50) netCDF/4.6.1-foss-2018b

51) GEOS/3.6.2-foss-2018b-Python-3.6.6

52) JasPer/2.0.14-GCCcore-7.3.0

53) PROJ/5.0.0-foss-2018b

54) libgeotiff/1.4.2-foss-2018b

55) GDAL/2.2.3-foss-2018b-Python-3.6.6

56) NLopt/2.4.2-GCCcore-7.3.0

57) libsndfile/1.0.28-GCCcore-7.3.0

58) ICU/61.1-GCCcore-7.3.0

59) UDUNITS/2.2.26-foss-2018b

60) R/3.5.1-foss-2018b

我曾经遇到过与ncdump 类似的问题,但我在加载此模块时解决了它:module load netCDF/4.4.1-intel-2016b

此外,当我添加以下模块时:module load HDF5/1.10.2-foss-2018b 我还收到一条错误消息,表明 HDF 库之间存在不匹配。就是这样:

Warning! ***HDF5 library version mismatched error***
The HDF5 header files used to compile this application do not match
the version used by the HDF5 library to which this application is linked.
Data corruption or segmentation faults may occur if the application continues.
This can happen when an application was compiled by one version of HDF5 but linked with a different version of static or shared HDF5 library.
You should recompile the application or check your shared library related settings such as 'LD_LIBRARY_PATH'. You can, at your own risk, disable this warning by setting the environment variable 'HDF5_DISABLE_VERSION_CHECK' to a value of '1'.
Setting it to 2 or higher will suppress the warning messages totally.
Headers are 1.10.1, library is 1.10.2

这就是为什么我坚信我的“挂起”问题是由某些模块引起的。 有没有人知道什么是解决方案?

【问题讨论】:

    标签: r linux hpc netcdf4


    【解决方案1】:

    试试:

    export HDF5_DISABLE_VERSION_CHECK=1 
    

    在运行 R 脚本之前。

    您可以使用高于1 的值来完全抑制警告。

    【讨论】:

    • 质量答案作为对长期价值的解释,因此未来的访问者可以了解此解决方案为何有效,并确定它是否有助于解决他们的编码问题。考虑退出以添加文档链接,或解释该命令如何/为何解决问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-29
    • 1970-01-01
    • 2017-12-02
    • 1970-01-01
    • 2016-09-10
    • 2017-02-13
    • 1970-01-01
    相关资源
    最近更新 更多