VScode jupyter 内核在使用 f2py 子例程加载大文件时死机

问题描述 投票:0回答:0

在特定情况下我不能

open
大文件。 我怀疑使用 ifort 的编译阶段可能有问题。 有什么解决办法吗?

  1. 我写Fortran90代码,有一行
    open
    读取fortran未格式化文件
!rur/readr.f90
module readr
...
subroutine read_part(...)
...
icpu = cpu_list(i)
part_n = 30
npart_c = cursors(i)
open(unit=part_n, file=part_filename(repo, iout, icpu, mode), status='old', form='unformatted')
! Skip headers
call skip_read(part_n, 2)
read(part_n) npart
call skip_read(part_n, 5)

! Read position(3), velocity(3), mass
do idim = 1, 2*ndim+1
    read(part_n) real_table(idim, npart_c:npart_c+npart-1)
end do
  1. 我使用
    f2py
    gfortran
    ifort
  2. 编译它
#!/bin/bash

F2PY=f2py
f='readr.f90'
bn=$(basename "$f" .f90)

# (gfortran case)
FORT=gfortran
$F2PY -c -lgomp --f90exec=$FORT --f77exec=$FORT $f -m $bn --opt='-O3 -x f95-cpp-input'

# (ifort case)
FORT=ifort
$F2PY -m $bn -liomp5 --f90exec=$FORT --f77exec=$FORT --opt='-O3 -fpp -m64 -free' -c $f
  1. 我在 VScode 的 Jupyter 扩展中导入它
#test.ipynb
...
from rur.readr import readr
readr.read_part(...)
  1. 内核在打开大文件(~80MB)时死机

我检查了这些:

  • gfortran
    案例每次都很好,但是
    ifort
    是个问题

  • 如果我运行 python,而不是 jupyter,那么它运行良好

  • 打开小文件就可以了

  • 设置

    ulimit -s unlimited

  • 我在setting.json中增加了max_buffer_size: “jupyter.jupyterCommandLineArguments”:[

      "--NotebookApp.iopub_msg_rate_limit=1000000000",
      "--NotebookApp.max_buffer_size=10240000000"
    

    ]

python visual-studio-code jupyter-notebook intel-fortran f2py
© www.soinside.com 2019 - 2024. All rights reserved.