fortran について書きます。

【メモ帳】JupyterLab に CoArray Fortran

JupyterLab ?

Jupyter Notebook より インターフェースが洗練されたものが出ていたようです。よく分かりません。

WSL 側にインストールした anaconda で動かしたものを、windows10 側のブラウザにアドレス・トークンをコピペして 実行しています。


JupyterLab Documentation — JupyterLab 0.18.4 documentation

Coarray Fortran Kernel で module の分離コンパイル

cell に module のみを置いて、コンパイル・オプションに -c を与えてオブジェクト生成のみとして shift-enter します。すると、その時に無理に実行しようとして失敗して出るエラーメッセージに、/tmp 以下に生成されたオブジェクトファイル名が出るので、次の cell のコンパイル・オプションにそのファイル名をコピペすれば、分離コンパイルが出来ます。

Jupyter の仕組みが分かれば、分離・分割コンパイルの仕組みを作れそうですが、幼女には難しそうw
エラトステネスの篩で、100 以下の素数を求めています。

%num_images: 1
%fcflags: -c 
module m_test
    implicit none
    function eratos(n) result(ires)
        integer, intent(in)  :: n
        integer, allocatable :: ires(:) 
        integer :: i, m(n)
        m = [0, (i, i = 2, n)]
        do i = 1, int(sqrt(real(n)))
            if (m(i) /= 0) m(i**2::i) = 0
        end do    
        ires = pack(m, m /= 0)
    end function eratos  
end module m_test

[proxy:0:0@HP8] HYDU_create_process (utils/launch/launch.c:75): execvp error on file /tmp/tmpc1vroea8.out (Permission denied)
Error: Command:
`/usr/bin/mpiexec -np 1 --disable-auto-cleanup /tmp/tmpc1vroea8.out`
failed to run.
[Coarray Fortran kernel] Executable exited with code 255

%num_images: 1
%fcflags: /tmp/tmpc1vroea8.out
program test
    use m_test
    print '(10i4)', eratos(100)
end program test
   2   3   5   7  11  13  17  19  23  29
  31  37  41  43  47  53  59  61  67  71
  73  79  83  89  97
  • To control the number of images we have implemented a jupyter notebook "magic" for the form:

where should be replaced by a suitable (read small) positive integer.

  • Controlling compilation

Additional "magics" have been implemented to control the compilation of the program. These are as follows:

%fcflags: [ [ ... []]]
Use this magic to pass flags to the fortran compiler, GFortran, via the caf compiler wrapper script. The caf script ensures propper compilation linking against OpenCoarrays.
%ldflags: [ [ ... []]]
Specify flags to pass to the linker. This should rarely be necessary.

  • Controlling arguments passed to compiled programs

The %args: [ [ ... []]] "magic" may be used to pass command line arguments to your program. In addition, quoting is respected, so you can pass arguments with spaces as well.

Coarray Fortran Kernel / OpenCoarray Install

Open coarray2.2.0 を install 後、Jupyter への coarray の統合は以下のページに従いました。


Open coarray2.2.0 に team 機能のお試し版を統合しようと頑張りましたがうまくいきませんでした。gfortran のコンパイラとして働くところまでは行きましたが、cafrun で MPI 実行するところでうまくいきませんでした。

Binder というものもやってみたいのですが、わけわかめで意味不明です。