2026/01/21

JAGURS on Debian

 Debianであればパッケージでかなりの物が入るのでコンパイルに困ることはなさげですが,検証.

Makefile.gfortran を使う

インストールするパッケージ(sudo apt installで可能)

  • gfortran
  • libnetcdff-dev
  • libfftw3-dev
proj@4 だけは自分でコンパイルが必要.例えば,$HOME/proj4 にインストールしたら,実行時に LD_LIBRALY_PATH=$HOME/proj4/lib が必要

Makefile の修正点は以下の感じ

% rcsdiff Makefile
=============================
RCS file: Makefile,v
retrieving revision 1.1
diff -r1.1 Makefile
2c2
< FC=mpif90
---
> FC=gfortran
7c7
< PROJ4_DIR=$(HOME)/JAGURS/local
---
> PROJ4_DIR=$(HOME)/proj4
43c43
< MPI=ON
---
> MPI=OFF

2025/06/11

Debianized

 MacOSのあぷでから見捨てられた MacPro / MacBook Air (13-inch, 2017)  を Debian へ


Thunderbolt Disk

解析用に使ってた Thunderbolt 2 な 外部Disk はそのままでは使えない.Thunderbolt DISK の有効化(Thunderbolt Display は何もしなくても使えた)が必要で,その後 ext4 でフォーマットが無難.


Touch Pad

最近のDebianではインストール時点からグラフィカルにマウスが使えたりするけど,MacBook のインストールでTouch Pad を使うのは難しいようなので,テキストベースのインストールを選択するほうが無難.GNOME 等のGUI環境をインストールし終われば,問題なく使える(一部,挙動は変,もしくは足りないらしい).


Wi-Fi

インストール時からWi-Fi を使うのは難しいようなので,USB-A や Thunderbolt な Ether アダプタを持ってきてインストールするのが無難.もしくは,ローカルDVDのみでインストールをしてから,Wi-Fi の設定かな.

lspci | grep -in network で認識を確認

03:00.0 Network controller: Broadcom Inc. and subsidiaries BCM4360 802.11ac Wireless Network Adapter (rev 03)

% cat /etc/modprobe.d/blacklist.conf

blacklist bcma

blacklist brcmsmac

 

% sudo apt install broadcom-sta-dkms

% sudo modprobe -r b43 bcma brcmsmac
% sudo modprobe wl

再起動で完了.以下,メモ:
カーネルをアップグレードしたときに Wi-Fi が動かなくなった場合 → dkms が自動でビルドできなかった可能性あり → sudo dpkg-reconfigure broadcom-sta-dkms で再ビルドできます。
起動後に Wi-Fi ネットワークが見えない → sudo modprobe wl で再ロードしてみてください。

 

 

 

 

2023/12/28

JAGURS on (intel) Mac w/ Homebrew

More recent information on June 4, 2024, we need to prepare ourself proj because proj@7 has been disabled. It's still available if you are using MacPorts.

Error: proj@7 has been disabled because it is a versioned formula! It was disabled on 2024-02-12.

(2024.9.6追記)

LIBS=-L$(PROJ4_DIR)/lib -L$(NETCDF)/lib -lnetcdff -lnetcdf -lsz -lproj $(FFTW3_LIB) -lm

のように,homebrew で他のバージョンのprojが /usr/local 等に入っている場合,自分で入れたPROJ4のディレクトリを先にリンカに指定する必要がある.


2023年12月27日現在の macOS Ventura 13.6.3 + Homebrew でのJAGURSのコンパイルについて再整理しておく。


  • gcc ... gfortran を使うので、gcc と gfortran をbrew で入れて、/usr/local/bin/gcc を使う。
    • FC=/usr/local/bin/gfortran
    • CC=/usr/local/bin/gcc
      • /usr/local/bin/gcc は無さそうなので, /usr/local/bin/gcc-14
  • proj ... メインのproj は、9.3.1 なので、おそらく動かない?ので、7.2.1 なproj@7 パッケージを使う。
    •   PROJ4_DIR=/usr/local/opt/proj@7
  • netcdf ... netcdf-fortran パッケージを入れる
  • fftw3 ... Homebrew のパッケージ名が fftw に変わってた
% brew install gcc gfortran proj@7 netcdf-fortran fftw


Makefile.gfortran をベースにして、以下の修正。

-FC=mpif90

+FC=/usr/local/bin/gfortran


-PROJ4_DIR=$(HOME)/local

-CC=gcc

+PROJ4_DIR=/usr/local/opt/proj@7

+CC=/usr/local/bin/gcc-13


-FFTW3_INCLUDE_DIR=$(HOME)/local/include

+FFTW3_INCLUDE_DIR=/usr/local/include


-NETCDF=$(HOME)/local

+NETCDF=/usr/local


-MPI=ON

+MPI=OFF


特殊な手続きは無しでコンパイル出来るようになったな。。。この記事の役割もほぼ終わったな。


input/ の中でそのままテスト計算(MPI部分はtsun.parから削除) on 1.4GHz dual cores Core i7

../src/jagurs par=tsun.par  4113.94s user 52.32s system 120% cpu 57:42.04 total

 

 



2022/02/06

JAGURS on MacOS Monterey with homebrew


 iMac 24" (M1)と iMac 27" (Intel) で改めてJAGURSで計算できる環境を作ったのでそのまとめ.

【訂正】2022.4.23

homebrew で, proj@7 が入っていることを同僚が教えてくれました.ので,proj-4.9.3は必要なく,Makefileで/opt/homebrew/Cellar/proj@7/7.2.1を/opt/homebrew/lib より前に指定すれば大丈夫なようです.かつ,最新版JAGURS(D0516)で,2020年に書いた mapproject.c の対応が本流に入ってるので,proj@7で無修正で動くようになりました.

ライブラリとして,netcdf, fftw3, proj4 が必要だけど,proj4は新しいのだと動かないので古いのを持ってくる.netcdfとfftw3は homebrew ので問題なし.

% brew install netcdf netcdf-fortran fftw3

proj4は,past-release から proj-4.9.3.tar.gz を持ってきました.

% ./configure --prefix=$HOME/local

% make

% make install


JAGURSのコンパイルは,Makefile.gfortran をベースにしました.

% rm Makefile (Makefile.SC_ICEに向いてるので)

% cp Makefile.gfortran Makefile


MPIはなし,とりあえず /usr/bin/gcc

% rcsdiff -u Makefile

===================================================================

RCS file: Makefile,v

retrieving revision 1.1

diff -u -r1.1 Makefile

--- Makefile    2022/02/04 21:52:49     1.1

+++ Makefile    2022/02/04 22:58:07

@@ -1,18 +1,18 @@

 # FC: Specify Fortran90 compiler command.

-FC=mpif90

+FC=gfortran


 # Added for displacement.

 # PRJ4_DIR: Specify PROJ.4 install directory.

 # CC&CFLAGS: Specify C compiler command and flags.

 PROJ4_DIR=$(HOME)/local

-CC=gcc

+CC=/usr/bin/gcc

 CFLAGS=-g -I$(PROJ4_DIR)/include


 # BASE: Specify basic compiler options.

 BASE=-cpp -fconvert=big-endian


 # FFTW3_INCLUDE_DIR: Specify FFTW3 include directory.

-FFTW3_INCLUDE_DIR=$(HOME)/local/include

+FFTW3_INCLUDE_DIR=/opt/homebrew/include


 # FFTW3_LIB: Specify linker options to link FFTW3.

 FFTW3_LIB=-lfftw3

@@ -21,7 +21,7 @@

 OPT=-O2 -fopenmp -I$(FFTW3_INCLUDE_DIR)


 # NETCDF: Specify the path to NetCDF library.

-NETCDF=$(HOME)/local

+NETCDF=/opt/homebrew


 # LIBS: Specify linker options.

 LIBS=-L$(NETCDF)/lib -lnetcdff -lnetcdf -lhdf5_hl -lhdf5 -lsz -L$(PROJ4_DIR)/lib -lproj $(FFTW3_LIB) -lm

@@ -40,7 +40,7 @@


 # MPI=ON: MPI version is made.

 # Else, serial version is made.

-MPI=ON

+MPI=OFF


 # USE_ALLTOALLV=ON: Use MPI_Alltoallv for inter-nest communications.

 # Else, MPI_Allreduce is used.

 

せっかくなので,inputにあるサンプルをベースにして,ベンチマーク.

Intel ... 3.6GHz 10コア第10世代Intel Core i9プロセッサ

M1 ... 4つの高性能コアと4つの高効率コアを搭載した8コアCPU、8コアGPU、16コアNeural Engineを持つApple M1チップ

% cat gridfile.dat

SD01 SD01 1 bathy.SD01.grd disp.SD01.grd

SD02 SD01 0 bathy.SD02.grd disp.SD02.grd

SD03 SD02 0 bathy.SD03.grd disp.SD03.grd


tsun.par:

dt=0.5

tend=21600

itmap=1200


こんな感じの設定で,M1はフルに8コアなので,Intelもそれに合わせて OMP_NUM_THREADS=8 に制限して実行した.

Intel ... All 5187.004 [s](デフォ20coresで 4823.238[s])

M1 ... All 5174.547 [s]


2020/11/25

JAGURS on MacOS Big Sur with homebrew


自分の環境のパッケージ管理を MacPorts から homebrew に乗り換えたりしたので改めてJAGURS を作り直してみる.ソースコードは,github から latest release になってる V0515a を持ってくる.使う環境は以下の通り:

MacBook Air (13-inch, 2017)

2.2GHz dual core Intel Core i7

8GB 1600MHz DDR3 memory

Big Sur

ライブラリのインストール

% brew install gmt fftw

 どうやら,proj_api.h が標準include pathに入ってくれなくなった?ようです.ので,

% find /usr/local -name proj_api.h

で探して,出てきたディレクトリを 

PROJ4_DIR=/usr/local/Cellar/proj@7/7.2.1

のように設定して下さい.以下のMakefileでは設定されていません (汚い).

Makefileの編集(編集後のファイルをリンク先に置いておきます)

Makefile@ -> Makefile.SC_ICE されてるので,とりあえず解除してから編集しています.編集箇所は,コンパイラを gcc-10, gfortran-10 にして,ライブラリ関係を /usr/local に設定. -lfftw が必要.MPI= なしに設定.-openmp は -o penmp として機能してしまうので, -fopenmp に修正.

% rm Makefile

% cp Makefile.SC_ICE Makefile

% rcsdiff Makefile

===================================================================

RCS file: Makefile,v

retrieving revision 1.1

diff -r1.1 Makefile

2c2

< FC=ifort

---

> FC=/usr/local/bin/gfortran-10

7,9c7,9

< PROJ4_DIR=/home/G10004/t-katou/JAGURS/local

< CC=icc

< CFLAGS=-g -traceback -I$(PROJ4_DIR)/include

---

> PROJ4_DIR=/usr/local

> CC=/usr/local/bin/gcc-10

> CFLAGS=-I$(PROJ4_DIR)/include

12c12

< BASE=-fpp -assume byterecl

---

> BASE=-cpp

18c18

< FFTW3_LIB=-mkl=sequential

---

> FFTW3_LIB=-lfftw3

23c23

< OPT=-O2 -openmp -openmp-report2 -I$(FFTW3_INCLUDE_DIR)

---

> OPT=-O2 -fopenmp

27c27

< NETCDF=/opt/atlocal/netcdf/4.1.3

---

> NETCDF=/usr/local

31c31

< LIBS=-i-dynamic -L$(NETCDF)/lib -lnetcdff -lnetcdf -L/opt/atlocal/supplibs/lib -lhdf5_hl -lhdf5 -lcurl -lsz -L$(PROJ4_DIR)/lib -lproj $(FFTW3_LIB) # for NetCDF4!

---

> LIBS=-L$(NETCDF)/lib -lnetcdff -lnetcdf -lhdf5_hl -lhdf5 -lcurl -lsz -lproj $(FFTW3_LIB) # for NetCDF4!

47c47

< MPI=ON

---

> MPI=


あと,mapproject.c の修正が必要です.#include <proj_api.h> の前に #define ACCEPT_USE_OF_DEPRECATED_PROJ_API_H を追加します.

% rcsdiff -p mapproject.c

===================================================================

RCS file: mapproject.c,v

retrieving revision 1.1

diff -p -r1.1 mapproject.c

*** mapproject.c        2020/11/25 05:49:41     1.1

--- mapproject.c        2020/11/25 05:50:08

***************

*** 1,6 ****

--- 1,7 ----

  #include <stdio.h>

  #include <string.h>

  #include <stdlib.h>

+ #define ACCEPT_USE_OF_DEPRECATED_PROJ_API_H

  #include <proj_api.h>


  static  projPJ pj_tmerc, pj_latlong;