クイックリンク:
g95 で emacs をセットアップする
共有プログラムを R とリンクする方法
g95でmkmfを使用する方法
g95 での Photran のセットアップ
g95 を使用した LAPACK の構成
g95 で ARPACK を構成する
g95 を使用した MPICH2-1.0.1 の構成
g95 を使用した BLACS の設定
g95 を使用した SCALAPACK の構成
g95 で SUPERLU-3.0 を構成する
g95 を使用した UMFPACK の構成
g95 を使用した MUMPS-4.3.2 の構成
g95 を使用した AZTEC-2.1 の構成
g95 プログラムを MATLAB とリンクする方法
g95 プログラムを MATLAB とリンクする方法 (Windows)
g95 で DLL をビルドする方法
IRIX モジュールで g95 を使用する方法
SciTE で g95 を使用する方法
Python プログラムとのインターフェース方法
SCILAB とのインターフェース方法
g95 で scons を使用する方法
g95 を使用した MATRAN の構成
g95 で PGPLOT を使用する方法
トップに戻る
g95 エラーメッセージ用に emacs を設定する方法
(Helge Avlesen)
次の行を .emacs ファイルに追加します。
;; g95 をコンパイル モードに追加
(eval-after-load “compile”
‘(setq compilation-error-regexp-alist
(cons ‘(“^In file \\(.+\\):\\([0-9]+ \\)” 1 2)
コンパイル エラー正規表現リスト)))
これにより、emacs はコンパイル モードで次のエラー メッセージを見つけることができます。
トップに戻る
共有 g95プログラムを R とリンクする方法
「libf95.so」を作る
g95 をインストールした後、ファイル「libf95.a」を見つけます。これを空のサブディレクトリにコピーし、すべてのオブジェクトを抽出します: “ar -x libg95.a”。次に共有ライブラリを作成します: “gcc -shared -o libg95.so *.o”。”libg95.so” ファイルをユーザーが利用できる場所 (つまり /usr/local/lib) に置くと便利です。
次のように g95 でソース ファイルをコンパイルします。 g95 -c -fPIC mylib.f オブジェクトを独自の共有ライブラリにします。 gcc -shared -o mylib.so mylib.o 以上です。R でライブラリを次のように使用します。
> dyn.load(“/path-to/libg95.so”,local=FALSE)
> dyn.load(“/path-to/mylib.so”)
例: (二乗ベクトル) myib.f:
サブルーチン fsquv(n, x)
integer n
倍精度 x(n)
integer i
do 100 i = 1, n
x(i) = x(i) ** 2
100 continue
End
R で上記の手順を実行した後:
> dyn.load(“/path-to/libg95.so”,local=FALSE)
> dyn.load(“/path-to/mylib.so”)
次に、Rで「ラッパー」関数を定義して、簡単にします
squarevector <- function(x) {
if (!is.numeric(x)) stop(“引数 x は数値でなければなりません”)
out <- .Fortran(“fsquv”,n=as.integer(length(x)),
x=as.double(x))
return(out$x)
}
次に、ラッパー関数を使用します。
> 正方形ベクトル (1:5)
[1] 1 4 9 16 25
トップに戻る
g95 で mkmf を使用する方法
最終更新日: 2007 年 3 月 7 日
この Howto には、Hani Andreas Ibrahim と Mohammad Rahmani からの寄稿が含まれています。
さらなる提案を歓迎します!
mkmfは、Makefile を構築する perl5 で書かれたツールです。< http://www.gfdl.noaa.gov/fms/pubrel/k/am2/bin/mkmf.html >から入手できます。mkmf は、f90 の依存関係 (モジュールと使用)、fortran の include ステートメント、および cpp の #include ステートメントをあらゆるタイプのソースで認識します。mkmf の使用に関する詳細情報は、上記のリンクで提供されています。
mkmf を使用するには、Perl 5 をインストールする必要があります。Windows を使用している場合、Perl は msysDTK パッケージに含まれています。www.mingw.orgから「msys」と「msysDTK」の両方をダウンロードしてインストールします。mingw\bin および Msys\1.0\bin ディレクトリを PATH に含めます。
1. mkmf スクリプトをダウンロードして、システムのどこかに保存します (例: c:\mingw\bin)。
2. mkmf は現在、.f、.F、.f90、および .F90 のソース ファイル名拡張子のみを識別します。他の Fortran 拡張機能のサポートを追加する場合は、mkmf perl スクリプトの 59 行目から 82 行目を次のように変更します。それ以外の場合は、手順 3 に進みます。
#いくつかの定数
my $endline = $/;
my @src_suffixes = ( q/\.F/, q/\.FOR/, q/\.F90/, q/\.F95/,q/\.F03/, q/\.c/, q/\ .f/, q/\.for/,q/\.f90/, q/\.f95/, q/\.f03/ );
my @inc_suffixes = ( q/\.H/, q/\.fh/, q/\.h/, q/\.inc/ );
# push @inc_suffixes, @src_suffixes; # ソースファイルもインクルードファイルにすることができます: DISALLOW, 6 May 2004
my %compile_cmd = ( # ソースファイルサフィックスから .o ファイルを作成するコマンド
q/.F/ => q/$(FC) $(CPPDEFS) $(CPPFLAGS) $(FFLAGS) -c/,
q/.FOR/ => q/$(FC) $(CPPDEFS) $(CPPFLAGS) $(FFLAGS) -c/,
q/.F90/ => q/$(FC) $(CPPDEFS) $(CPPFLAGS) $(FFLAGS) -c/,
q/.F95/ => q/$(FC) $(CPPDEFS) $(CPPFLAGS) $(FFLAGS) -c/,
q/.F03/ => q/$(FC) $(CPPDEFS) $(CPPFLAGS) $(FFLAGS) -c/,
q/.c/ => q/$(CC) $(CPPDEFS) $(CPPFLAGS) $(CFLAGS) -c/,
q/.f/ => q/$(FC) $(FFLAGS) -c/,
q/.for/ => q/$(FC) $(FFLAGS) -c/,
q/.f90/ => q/$(FC) $(FFLAGS) -c/,
q/.f95/ => q /$(FC) $(FFLAGS) -c/,
q/.f03/ => q/$(FC) $(FFLAGS) -c/ );
my %delim_match = ( q/’/ => q/’/, # インクルード ファイル区切り文字のペアを見つけるためのハッシュ
q/”/ => q/”/,
q/</ => q/>/ );
#MAKEFILE のフォーマット コマンド、非常に長い行を 256 文字に保持
3. コンパイラがユーザー環境に適応するためのテンプレート ファイルを作成します。
以下は、g95 のテンプレート ファイルの例です。
FC = g95
LD = g95
FFLAGS = -I c:/mingw/include
LDFLAGS = $(LIBS)
# LIBS= の後にライブラリを追加します。例: -lblas
LIBS = c:/mingw/lib
上記のテンプレート ファイル (g95_args など) に名前を付けて、c:\mingw\bin\g95_args として保存します。
4. mkmf を使用するための構文は次のとおりです。
mkmf [-a abspath] [-c cppdefs] [-d] [-f] [-m makefile] [-p プログラム] [-t テンプレート] [-v] [-x] [args]
-a abspath は、ソース ファイルへのすべての相対パスの先頭に abspath を付加します。
cppdefs は、ソース ファイルに渡される cpp #defines のリストです。この状態に変更があった場合、影響を受けるオブジェクト ファイルは選択的に削除されます。
-dは mkmf のデバッグ フラグです (-v よりもはるかに詳細ですが、おそらく mkmf 自体を変更する場合にのみ使用されます)。
-fは、makefile の行を 256 文字に制限するフォーマット フラグです。これにより、vi を使用してメイクファイルを編集できます。それより長い行は、必要に応じて継続行を使用します。
makefile は、書き込まれる makefile の名前です (デフォルトの Makefile)。
テンプレートは、makefile の先頭に記述された make マクロまたはコマンドのリストを含むファイルです。
program は最終ターゲットの名前です (デフォルトは a.out、Windows システムでは a.exe に変更)。
-v は、mkmf への詳細フラグです。
-x はメイクファイルをすぐに実行します。
args は、ターゲットと依存関係を検索するディレクトリとファイルのリストです。
5. 使い方
5.1. g95 コンパイラで mkmf を使用して Makefile を作成するには、ソース ファイルを含むディレクトリに移動し、次のコマンドを発行します。
Perl c:\mingw\bin\mkmf -tc:\mingw\bin\g95_args
5.2. メイクファイルを作成し、オプションのターゲット名を指定してすぐに実行するには、次のようにします。
mkmf -tc:\mingw\bin\g95_args -p myproj.exe -x
ここで、「myproj.exe」は最終ターゲット (出力) の名前です。
6. mkmf をより簡単に使用するには、スクリプト ファイル (Windows では mkmf-g95.bat など) を作成し、c:\mingw\bin に配置します。(これが PATH に含まれていることを確認してください。) スクリプト ファイルには次のものが含まれている必要があります (セットアップに合わせて変更します)。
Echo off REM このファイルをどこからでも呼び出して、その場所にある Fortran ソース ファイルに基づいて
Makefile REM を作成できます。REM a.exe は最終出力の名前です。必要に応じて変更してください。REM 無視すると、mkmf スクリプトはデフォルトで a.out を使用します。REM g95_args は、ユーザーの REM 環境変数を設定するために使用されるテンプレート ファイルの名前です。必要に応じて変更してください。REM REM Perl c:\mingw\bin\mkmf -tc:\mingw\bin\g95_args -p a.exe If (%1)==() ( Perl c:\mingw\bin\mkmf -tc:\mingw\ bin\g95_args -p a.exe ) Else ( Perl c:\mingw\bin\mkmf -tc:\mingw\bin\g95_args -p %1 ) REM 上記により、ターゲット名を引数として渡すことができます
上記のコードで、ターゲット名を引数として mkmf-g95.bat に渡すと、出力としてターゲット名を持つ Makefile が生成されます。そうしないと、スクリプトは a.exe を出力ターゲットとする Makefile を生成します。
7. a.out を a.exe に変更します [Windows マシンのみ]。mkmf スクリプトは a.out をターゲットとして Makefile を作成しますが、これは Windows には適していないため、mkmf を変更して、デフォルトの出力として “a.out” ではなく “a.exe” を生成する必要があります。これを行うには、mkmf スクリプト ファイルをテキスト エディターで開き、すべての a.out を a.exe に置き換えます。
トップに戻る
G95でフォトランを使用する方法
最終更新日: 2007 年 3 月 7 日
このインストール ガイドは、Photran 3.1 Beta 2 for Windows で正常にテストされています。
この Howto には、Hani Andreas Ibrahim (25/01/2007) と Mohammad Rahmani (9/02/2007) からの寄稿が含まれています。
g95 コンパイラと Perl が PATH にある必要があります
改善および/または修正のためのさらなる提案を歓迎します!
Eclipse ベースのフル機能の Fortran IDEであるPhotranを使用して、g95 で Fortran プログラムを開発できるようになりました。Windows システムと Linux システムの両方で使用できます。これは、Windows XP システムで Photran と g95 をセットアップするために必要な手順の概要です。
1. MinGW を使用している場合は、 www.mingw.orgから「msys」と「msysDTK」をダウンロードしてインストールすると便利です。Msys bin ディレクトリがパスにある必要があります。
2. g95 Makefile の自動生成
(Makefile の自動作成に mkmf を使用したくない場合は、このセクションをスキップしてください)
How to use mkmf with with g95に記載されているすべての指示に注意深く従って、mkmf をセットアップします。パスがインストール手順で使用されているものと異なる場合は、次の手順で使用されるパスを適切に調整してください。
Photran で mkmf を使用するには、Perl 5 をインストールする必要があります。Windows を使用している場合、Perl はwww.mingw.orgの msysDTK パッケージに含まれています。
2.1 Photran を開き、[実行 -> 外部ツール -> 外部ツール…] をクリックします。
2.1.1メイン タブで、次のようにフォームに入力します。
名前: g95 make Makefile
場所: c:/mingw/bin/mkmf-g95.bat
作業ディレクトリ: ${container_loc}
引数: ${project_name}
注: ファイル c:\mingw\bin\mkmf-g95.bat は、g95 で mkmf を使用する方法のセクション 6 で説明されている mkmf Perl スクリプトを実行するためのバッチ ファイルです。
2.1.2リフレッシュタブ
タブを更新するには、次のようにフォームに入力します。
[x] 完了時にリソースを更新
(x) 選択したリソースを含むフォルダー
[x] サブフォルダーを再帰的に含める
2.1.3共通タブ
(x) ローカルファイル
お気に入りメニューに表示
[x] 外部ツール
[x] バックグラウンドで起動
2.1.4 . 「適用」をクリック
2.2 Photran ツールバーで、[実行] -> [外部ツール] -> [外部ツール…] メニューをクリックします。
2.2.1 新しい構成を開始します。
2.2.2 メイン タブで、フォームに次のように入力します。
名前: g95 ビルド
場所: c:/msys/1.0/bin/make.exe
作業ディレクトリ: ${container_loc}
引数: すべて
2.2.3 セクション 2.1.2 の [Refresh] タブとセクション 2.1.3 の [Common] タブに入力します。
2.2.4 「適用」をクリック
2.3 Photran ツールバーで、[実行] -> [外部ツール] -> [外部ツール…] メニューをクリックします。
2.3.1 新しい構成を開始します。
2.3.2 メイン タブで、次のようにフォームに入力します。
名前: 走る
場所: ${container_loc}/${resource_name}
作業ディレクトリ: ${container_loc}
引数:
2.3.3 セクション 2.1.2 の [Refresh] タブとセクション 2.1.3 の [Common] タブに入力します。
2.3.4 「適用」をクリック
3. Windows->Preferences->C/C++->Make->Makefile Editor->New Make Projects メニューをクリックします。
タブ「バイナリパーサー」を選択します。「PE Windows パーサー」を有効にし、他のすべてを無効にします。[OK] ボタンをクリックします。
4.セットアップが完了しました。
Fortran プログラムを編集、コンパイル、および実行するには、次の手順を実行します。
1. File->New->Standard Make Fortran Project. [プロジェクト名] フィールドでプロジェクトに名前を付けます。[完了] をクリックします。
2. 左側の「Fortran プロジェクト」または「ナビゲータ」フレームでプロジェクト名が強調表示されていることを確認します。[ファイル] -> [新規] -> [ソース ファイル] をクリックします。「ソース ファイル」フィールドに入力します (例: myprogram.f90)。[完了] をクリックします。
3. 新しいエディター タブにコードを入力して保存します ([ファイル] -> [保存])。
4. 必要に応じて、さらにソース ファイルを追加します。
5. Navigator または Fortran プロジェクト フレームでソース ファイルの 1 つをクリックします。
6. Makefile の作成
6.1. mkmf (セクション 2 を参照) をセットアップしている場合は、次のようにします。
6.1.1. メニュー「実行->外部ツール->外部ツール…」をクリックします
6.1.2. (例) “g95 make Makefile” を選択し、”Run” ボタンをクリックします。Navigator/Fortran Projects フレームで、プロジェクト セクションに「Makefile」ファイルが表示されます。(「g95 make Makefile」の最初の実行後、簡単に起動できるように、外部ツール サブメニューまたはツールバー アイコンのルート セクションに表示されます。)
6.2. システムに mkmf をセットアップしていない場合は、Makefile を自分でコーディングする必要があります。
7. Navigator/Fortran Projects フレームでソース ファイルの 1 つを再度選択します。
8. メニュー「実行->外部ツール->外部ツール…」をクリックし、「g95ビルド」を選択します。
9. コンパイル後、Navigator/Fortran プロジェクト フレームに「myprogram.exe」が表示されます。
10. Navigator/Fortran Projects フレームで「myprogram.exe」を選択し、メニュー「Run->External tools->External tools …」をクリックして、「Run」を選択します。プログラムの出力がコンソールに表示されます。
Cygwin での Photran の設定については、ftp: //ftp.swcp.com/pub/walt/F/photran.pdfを参照してください。
トップに戻る
g95 用に LAPACK を構成する方法
x86 マシン用の LAPACK を正しくビルドするために行う必要がある唯一の変更は、make.inc で NOOPT マクロを設定することです。
NOOPT=-float-store
これにより、浮動小数点ユニットのさまざまな特性を照会しようとするサブルーチンに最適化が干渉するのを防ぎます。
トップに戻る
ARPACK を g95 でコンパイルする方法
(Guglielmo Pasa)
このtarballの ARmakeg95.inc と Makefileg95.make と OBjectg.make を使用して、arpack の静的および動的ライブラリを構築します。
トップに戻る
g95 でMPICH2-1.0.1 を構成する方法
(Guglielmo Pasa)
bash/sh の場合、以下を使用できます。
エイリアス f77=g95 -ffixed-form -fno-underscoring
エイリアス f90=g95 -ffree-form -fno-underscoring
または csh/tcsh の場合:
Setenv F90
Setenv F77
Setenv CC
正しいコンパイラが検出されていることを確認してから実行します
$ ./configure –prefix=/usr/local –enable-f77 –enable-f90 \
–with-pm=smpd –with-pmi=smpd
$ make
$ make install
いくつかのテストを試してください。MPICH2 サイトにある MPICH2 WinXP サービス バイナリ ディストリビューションを使用できます。別の手順 (Patti Michelle) は、次のように構成することです。
$ F77=/path/to/g95 F90=/path/to/g95 ./configure
$ make
$ make install
トップに戻る
g95で BLACS を設定する方法
(Guglielmo Pasa)
BLACSソースツリーが$(HOME)/BLACSにある場合 Bmake.incを編集して変更
TOPdir=$(HOME)/BLACS
COMMLIB = MPI
PLAT = g95xp # たとえば
MPIdir = /usr/local # MPICH のルート インストール ディレクトリ
MPILIBdir = $(MPIdir)/lib
MPIINCdir = $(MPIdir)/include
MPILIB = -L$ (MPILIBdir) -lmpich -lpmpich -lmpich -lcrypto
….
INTFACE = -DNoChange # C オブジェクトのシンボルを g95 のシンボルと同じ形式のままにします
# つまり、アンダースコアと小文字を使用しません
…
TRANSCOMM = -DCSameF77
…
F77 = g95
F77NO_OPTFLAGS = -ffixed-form -fno-underscoring
…
RANLIB = ranlib
これが完了したら、SRC/MPI に移動して Makefile を変更します。
Clong
= …
Windows を使用している場合は、すべての .C 拡張子を .Z に変更します。Windows はファイルのコピー/書き込みで大文字と小文字を区別しないため、cygwin で大文字と小文字が区別されていても、.C と .c を区別できないことがあります。
…
Cintobj = $(comm.:.o=.Z) $(supp:.o=.Z) $(Clong)
…
clean:
rm -f … $(long:.o=.Z )
…
Cblacs_gridinit_.C : etc すべての拡張子 .C を .Z に変更
…
.SUFFIXES: .o .Z
.cZ:
$(CC) -o C$*.o -c $(CCFLAGS) $(BLACSDEFS ) -DCallFromC $<
mv C$*.o $*.Z
次に、BLACS のルートに移動して実行します。
mpiを作る
ライブラリを手動でインストールします。
トップに戻る
g95 でSCALAPACK を構成する方法(Guglielmo Pasa)
SLmake.incの編集・修正
home = $(HOME)/SCALAPACK # ここは SCALAPACK ソース ツリーです
PLAT = g95xp # 選択肢の一貫性のためだけに ;o)
BLACSdir = /usr/local/lib # BLACS が配置されている場所
USEMPI = -DUsingMpiBlacs
SMPLIB = -L/ usr/local/lib -lmpich -lpmpich -lmpich -lcrypto
…
F77 = g95 -ffixed-form -fno-underscoring
…
CDEFS = -DNoChange $(USEMPI)
…
RANLIB = ranlib
# LAPACK3 とそのATLAS のパフォーマンスが悪いため BLAS ディストリビューション (以下を参照)
# _sf77 は s=static を表し (私も _f77.dll を持っています)、f77 は
…f77 (aka 95)を
表します BLASLIB = -L/usr/local/lib -lblas_sf77
#テストアプリにのみ必要です
トップに戻る
g95 でSUPERLU-3.0 を設定する方法
(Guglielmo Pasa)
Makefile を変更します。
PLAT = g95xp
BLASLIB = -L/usr/local/lib -lblas_sf77
RANLIB = ranllib
FORTRAN = g95 -ffixed-form -fno-underscoring
CDEFS = -DNoChange
トップに戻る
g95 でUMFPACK を構成する方法
(Guglielmo Pasa)
UMFPACKv4.4/AMD/Make/Make.include を編集・修正
F77 = g95
F77FLAGS = -ffixed-form -fno-underscoring
…
CONFIG = -DBLAS_NO_UNDERSCORE
…
include ../Make/Make.cygwin
次に、AMD/Make で Make.linux を Make.cygwin にコピーし、変更します。
CC = gcc
CFLAGS = -O2
… LIB = -L/usr/local/lib -lblas_sf77 -lf95 #最初に libf95.a を /lib # または /usr/local/lib
にコピーする必要があります!!
C プログラムとのリンクで gcc によって必要とされます
次に AMD/ に移動し、make を実行します (matlab も使用する場合は、正しくインクルードする方法がまだわかりません!無効にしないと、ライブラリ libamd.a がビルドされた後にエラーが発生します。ライブラリが必要なだけです! make が mex を見つけられないというエラーが表示されます)。
次に UMFPACK に移動して実行します
hbを作る
libumfpack.a と hb の例をビルドします。次に、ライブラリを /usr/local/lib に、インクルード ファイルを /usr/local/include にコピーできます。
トップに戻る
g95 でMETIS-4.0 を設定する方法
(Guglielmo Pasa)
Makefile.in を編集
RANLIB = ランリブ
make を実行し、libmetis.a を /usr/local/lib/libmetis-4.0.a にコピーします。
トップに戻る
g95 でMUMPS-4.3.2 を構成する方法
(Guglielmo Pasa)
Makefile.inc/ から Makefile.inc.generic と Makefile.inc.generic.SEQ をそれぞれ Makefile.inc と Makefile.inc.SEQ として MUMPS ソース ツリーのルートにコピーし、Makefile.inc を編集します (パラレル バージョン、それに応じて SEQ を次のように編集します)。ファイルで引用されている MPI 表示)
LMETISDIR = /usr/local/lib
LMETIS = -$(LMETISDIR) -lmetis-4.0
注文 = -Dmetis -Dpord
注文SF = -Dpord -Dmetis
…
FC = g95
RANLIB = ranlib
SCALAP = -lscalapack \
/usr/local/ lib/blacs_MPI-g95xp-0.a \
/usr/local/lib/blacsF77init_MPI-g95xp-0.a \
/usr/local/lib/blacs_MPI-g95xp-0.a
# MPI のディレクトリを含める
INCPAR = -I/usr /local/include
# MUMPS の並列バージョンで使用されるライブラリ: $(SCALAP) および MPI
LIBPAR = $(SCALAP) -L/usr/local/lib -lmpich -lpmpich -lmpich -lcrypto
# BLAS ライブラリをここに定義
LIBBLAS = -lblas_sf77
CDEFS = # 空!!
#コンパイラ オプション
OPTF = -O -fno-underscoring
トップに戻る
g95 でAztec 2.1 を構成する方法
(Guglielmo Pasa)
必要なファイルをダウンロードし (get_packages/netlib_mail を調べて必要なファイルを確認します。dblas1.f などは実際のソースではないことに注意してください。実際に必要なファイルを確認するには、これらのファイルの中を調べる必要があります)、get_packages に入れます。 . rip.exe を作成し、スクリプト process_netlib を実行します。
lib/Makefile.template を編集
COMM = SERIAL
MACHINE = GENERIC
MPI_INCLUDE_DIR = -I/usr/local/include
MPI_LIB = -L/usr/local/lib -lmpich -lpmpich -lmpich -lcrypto -lm
…
CC_TFLOP = gcc
FC_TFLOP = g95
AR_TFLOP = ar
RANLIB_TFLOP = ranlib
TIME_TFLOP = md_timer_sun.c
CFORT_TFLOP = -Dmatched
CFLAGS_TFLOP = -O2
FFLAGS_TFLOP = -O2 -ffixed-form -fno-underscoring
Makefile.template の末尾は次のようになります。
aztec: $(OBJ)
@echo “Building library $(TARGET)”
@rm -f libaztec$(COMM).a
$(AR) ruv libaztec$(COMM).a $(OBJ)
@$(RNLIB) libaztec$ (コンマ
Makefile.template の最初の数行は次のようになります。1) MPI ライブラリの場合
COMM = MPI
MACHINE = TFLOP
MPI_INCLUDE_DIR = -I/usr/local/include
MPI_LIB = -L/usr/local/lib -lmpich -lpmpich -lmpich -lcrypto -lm
2) SERIAL ライブラリの場合
COMM = シリアル
マシン = TFLOP
MPI_INCLUDE_DIR =
MPI_LIB =
他は何も変更しないでください。app/ で同じことを行います
./set_makefiles
cd lib
make
cp libaztec.a /usr/local/lib
cp *.h /usr/local/include
cd ..
cd app
make
デモを実行します。
トップに戻る
g95 プログラムを MATLAB とリンクする方法
(Aaron Schmidt)
MATLAB は、C または Fortran コードを組み込む簡単な方法を提供します。プログラマーは、C/Fortran と MATLAB の間で変数をやり取りするゲートウェイと呼ばれる小さなサブルーチンを作成する必要があります。コードは、通常、外部コンパイラを呼び出す MATLAB コマンド ‘mex’ を使用してコンパイルされます。コンパイルされたコードは、MATLAB 関数とまったく同じように使用できます。mex ファイルの作成の詳細については、ヘルプ ファイルを参照してください。
G95 は公式にサポートされているコンパイラではありませんが、問題なく動作するようです。Fortran コンパイラは、[MATLAB ルート]/bin に格納されている mexopts.sh ファイル、または ~/.matlab のどこかに保存されているローカル コピーで指定されます。G95 を使用するには、mexopts.sh を開き、お使いの OS に関連するセクションに移動します。変数 ‘FC’ を変更して、G95 へのフル パスを指定します。また、libf95.a にリンクする必要があります。そうしないと、特定の組み込み関数を使用しようとすると MATLAB がクラッシュするため、それを ‘FLIBS’ 変数に追加します。他の変数は、必要な追加のフラグと最適化オプションに設定する必要があります。例として、Mac OS X および MATLAB 7 では、mexopts.sh の関連セクションは次のようになります。
FC=’/usr/local/g95-install/bin/powerpc-apple-darwin6.8-g95′
FFLAGS=’-ffree-form’
FLIBS=’-L/usr/local/g95-install/lib/gcc- lib/powerpc-apple-darwin6.8/4.0.0/ -lf95′
FOPTIMFLAGS=’-O’
FDEBUGFLAGS=’-g’
ノート
MATLAB との間でデータをやり取りする最も簡単な方法は、%VAL() コンストラクトまたは F2003 VALUE 属性を使用することです。
私は G95 を MATLAB 7 と Mac OS X でしかテストしていないので、見落としている可能性があります。MATLAB およびその他の Fortran90 コンパイラの使用に関する情報は Web 上にあり、役立つ場合があります。
MATLAB がクラッシュしないように、Fortran コードが c++ 例外をスローする extern “C” c++ 関数を使用する場合は、FFLAGS で -fexceptions を使用します。(ディミトリー・マークマン)
トップに戻る
Windowsで g95 と MATLAB を使用する
(Ivo Houtzager)
次のプログラムが必要です。
MinGW
G95-MinGW
Gnumex ( gnumex.sourceforge.net )
G95-MinGW を MinGW のルート ディレクトリにインストールします (例: C:\MinGW) Gnumex をインストールします (例: C:\Gnumex に) パッチを C:\Gnumex にコピーし、ファイル gnumex.m および linkmex.pl にパッチを適用します。
patch -l < gnumex.patch
Matlab でパス C:\Gnumex を追加します。
>>path(パス,’C:\Gnumex’)
Matlab で “gnumex” を呼び出します。リンク用に Mingw を選択し、「コンパイル用の言語」で G95 を選択します。ドロップボックス。C:\MinGW が MinGW ルート ディレクトリでない場合は、「Mingw ルート パス」を調整します。詳細については、gnumex.sourceforge.net Gnumex と MinGW に関するコメントを参照してください。 2 および pentium4 の悪い結果を設定するコンパイラ。原因は、コンパイラの最適化 -mfpmath=sse です。この最適化を削除した設定「pentium4 -f」を追加しました。
トップに戻る
g95 で IRIX モジュールを使用する方法
(Charles Castevens)
root として、ユーザーがロードする「g95」というモジュール ファイルを作成します。
touch /opt/modulefiles/g95
chmod a+r /opt/modulefiles/g95
vi /opt/modulefiles/g95
#%モジュール################################################ ##
# http://ftp.g95.org/g95-mips-irix.tgz default modulefile
# IRIX version Fri Jul 21 21:14:30 EDT 2006
#
proc ModulesHelp { } {
puts stderr “g95 modulefile はデフォルトを定義しますpath need to use
#g95”
puts stderr “Type \”module load g95\” to load g95 and then”
puts stderr “\”module list\” to verify g95 modulefile is
#loaded.”
}
set _module_name [モジュール情報名]
set is_module_rm [モジュール情報モードの削除]
set G95_CURPATH /opt/g95/bin
prepend-path PATH $G95_CURPATH
http://ftp.g95.org/g95-mips-irix.tgz を /usr/tmp にコピーしてから、
cd /usr/tmp
mkdir -p /opt/g95/bin
mkdir -p /opt/g95/lib/gcc-lib/mips-sgi-irix6.5/4.0.1
gunzip -c g95-mips-irix.tgz | tar -xvf –
cd g95-install/bin
mv mips-sgi-irix6.5-g95 /opt/g95/bin
cd ../lib/gcc-lib/mips-sgi-irix6.5/4.0.1
mv * / opt/g95/lib/gcc-lib/mips-sgi-irix6.5/4.0.1
cd /opt/g95
chown -R nobody.nobody . *
chmod a+rx . bin
cd bin
ln -s mips-sgi-irix6.5-g95 g95
cd ../lib/gcc-lib
chmod a+rx . ..
cd mips-sgi-irix6.5/4.0.1
chmod a+rx . .. *
chmod ax *.a *.o *.1
通常の操作を行った後のユーザー プロンプトから
ソース /opt/modules/modules/init/csh
モジュール ロード モジュール
プロンプトで、または .cshrc または .tcshrc で。見る
grelnotes モジュール &
詳細については、「次の章」をクリックしてください。モジュールがマシン上で動作するようになると、ユーザーはすぐにアクセスできるようになります。
モジュールロード g95
ログインすると、g95 の準備が整います。
g95 -O3 -s program.f -o program
./program
トップに戻る
SciTE で g95 を使用する方法
(Doug Cox)
無料の SciTE エディターは、Fortran を含む多くのプログラミング言語で動作します。SciTE は、Linux システムと Windows システムの両方で利用できます。Windows バージョンは、デフォルトで Lahey コンパイラ用に構成されています。Msys/MinGW および Windows 上の Cygwin に含まれる make の動作バージョンを備えたシステムでは、SciTE を使用して、fortran ファイルの編集、g95 でのコンパイル、および実行可能ファイルのテストを行うことができます。g95 で使用する SciTE をセットアップする方法は次のとおりです。
http://scintilla.sourceforge.net/SciTEDownload.htmlから SciTE をダウンロードします。
適当なディレクトリに解凍してインストールします。
[オプション] メニューにリストされている fortran.properties ファイルを編集します。コンパイラ名を次のように変更します。
fc77=g95
fc90=g95
コンパイル用のコマンドを含む fortran.properties ファイルの行を次のように変更します。
command.compile.*.f=$(fc77) -I.\ -L.\ $(1) $(2) -c $(FileNameExt) $(3) $(4) -info command.compile.*
. for=$(fc77) -I.\ -L.\ $(1) $(2) -c $(FileNameExt) $(3) $(4) -info command.compile.*.f90=$(fc90
) -I.\ -L.\ $(1) $(2) -c $(FileNameExt) $(3) $(4) -info
command.compile.*.f95=$(fc90) -I.\ -L .\ $(1) $(2) -c $(FileNameExt) $(3) $(4) -info
MinGW と Msys を使用する Windows システムの場合、c:\Msys\1.0\bin ディレクトリ (またはシステム上の同等のディレクトリ) を PATH に追加して、SciTE が Msys の make プログラムを見つけられるようにし、必要に応じて c:\mingw を追加します。 \bin ディレクトリを PATH に追加して、SciTE が g95 を検出できるようにします。
SciTE では、[ツール] メニューからコードをコンパイルして実行できます。ファイルをコンパイルし、make を使用してプロジェクトをビルドし、SciTE シェルで実行可能ファイルを実行するためのコマンドがあります。
g95 の -M オプションを使用する
g95 でコンパイルする場合、-M オプションを使用して Makefile を作成できます。このオプションを使用すると、g95 は Makefile が必要とする形式で依存関係を書き出します。出力は、make プログラムが必要とする Makefile で使用できます。この機能により、g95 用の makefile の作成が容易になります。Makefile をソース ファイルと同じディレクトリに配置します。SciTE の [ツール] メニューで [ビルド] をクリックするだけで、make を実行できます。ビルドが成功した場合、[実行] をクリックすると、コンパイルされたプログラムが実行されます。
トップに戻る
Python プログラムとのインターフェース方法(Bill McLean)
次のインターフェイスでサブルーチン foo を呼び出したいとします。
subroutine foo(n, a)
整数、intent(in) :: n
実数、intent(out) :: a(n,n)
end subroutine foo
最初の方法: ctypes を使用:
numpyをインストールします(>=バージョン 1.0)。
Pythonのバージョンが 2.5 未満の場合は、ctypes をインストールするか、現在の python バージョン (標準ライブラリに ctypes が含まれています) をインストールします。「make altinstall」を使用すると、既存の古いバージョンと一緒に新しい Python バージョンを使用して、Python 依存パッケージで発生する可能性のある問題を回避できることに注意してください。
foo.f95 を共有ライブラリにコンパイルします。
g95 -共有 -fPIC foo.f95 -o foo.so
ルーチンのシンボルの名前を確認します
nm foo.so | grep foo
この名前は、foo が外部プロシージャの場合は foo_ になりますが、モジュール bar に含まれる foo の場合は bar_MP_foo_ になります。BIND(C) 機能を使用して、シンボルの実際の名前を制御できます。
foo の Python ラッパーを次のように記述します。
from numpy import *
from ctypes import c_int, POINTER, byref
foolib = ctypeslib.load_library(‘foo’, ‘.’)
_foo =foolib.foo_ # or _foo =foolib.bar_MP_foo_
_foo.restype = None
def foo(n):
a = zeros((n,n,), dtype=float32, order=’FORTRAN’)
arg = ctypeslib.ndpointer(dtype=float32, shape=(n,n,), flags=’FORTRAN’)
_foo.argtypes = [ POINTER(c_int), arg]
cn = c_int(n)
_foo(byref(cn), a) a a = foo(4)
を返す
2 番目の方法: f2py を使用する
fortran-to-python インターフェイス ジェネレーターである f2py を含む numpy (バージョン>=1.0) をインストールします。行う
f2py -c –help-fcompiler
f2py が g95 を認識することを確認します。
f2py を使用して署名ファイル foo.pyf を生成します。
f2py foo.f95 -m foo -h foo.pyf
より複雑な例では、foo.pyf を手動で調整する必要がある場合があります。
再び f2py を使用して、Python 拡張モジュール foo.so を自動的に作成します。
f2py -c –fcompiler=g95 foo.pyf foo.f95
ここで、 –fcompiler フラグを省略すると、f2py はファイル numpy/distutils/fcompiler/__init__.py (現在は g77) の _default_compilers 変数によって決定される既定のコンパイラを使用します。
Python からの foo の呼び出しが簡単になりました。
from numpy import *
import foo
print foo.foo.__doc__ # f2py によって生成された Python インターフェイスを表示
a = foo.foo(4)
トップに戻る
g95 での Scons の使用 (Doug Cox)
Scons ビルド システムはhttp://www.scons.orgから入手できます。Sconsは「ソフトウェア構築」を意味します。これは「make」の代替です。Scons には Pythonがインストールされている必要があります。引数なしで呼び出されると、Scons は「SConstruct」という名前のファイルを探します。これも Python スクリプトです。
デフォルトでは、Scons の Windows バージョンは Microsoft C コンパイラで動作するように設定されていますが、他の多くの種類のプロジェクトのビルドにも使用できます。以下は、Msys シェルの g95 の MinGW バージョンで動作する SConstruct ファイルの例です。この例では、ファイル foo1.f90 .. foo4.f90 がモジュール ファイルであり、foo.f90 がモジュールを使用するメイン プログラムです。ファイル foo4.f90 には、foo2.f90 が必要とするモジュールが含まれているため、foo2.f90 の前にリストされています。Scons は、以前のビルド以降に変更されたソース ファイルを検出し、必要なものだけを再構築します。
# Msys/MinGW での Scons のビルド スクリプトの例
# Msys シェルで、ソース ディレクトリに cd します
# このスクリプトをファイル名 SConstruct で保存します
# ビルドするには、「c:/python25/scripts/scons」と入力し
ます import os
env = Environment(プラットフォーム = ‘win32’、
ENV = os.environ、
ツール = [‘mingw’]、
FORTRAN = ‘g95’、
FORTRANFLAGS = ‘-O3’、
CC = ‘gcc’、
LINK = ‘g95’ )
env.Program( ターゲット= ‘foo.exe’,
source = [
‘foo1.f90’, # モジュール ソース ファイル
‘foo4.f90’, # foo2.f90 で使用されるモジュール ソース ファイル
‘foo2.f90’, # モジュール ソース ファイル
‘foo3.f90’ 、# モジュールソースファイル
‘foo.f90’ # メインプログラム
])
# 詳細については、次を参照してください:
# http://www.scons.org/doc/HTML/scons-man.html
トップに戻る
g95 を使用した MATRAN の構成
http://www.cs.umd.edu/~stewart/matran/Matran.tarからマトランのソースを取得します
tar -xvf Matran.tar を適切な場所に配置します。
cdマトラン/マトラン
Makefile を編集し、次の行を変更します
FC = f95 $(FC) -c -fpp -D$(PREC) $<
から
FC = g95 $(FC) -c -cpp -D$(PREC) $<
g95 が検出できるディレクトリにライブラリ blas.a と lapack.a があることを確認してください。ライブラリの名前が異なる場合は、必ず Makefile で変更してください
「make all」を発行してから「make arch」を発行します
Matran.a を目的の場所にコピー (および名前変更) します。
トップに戻る
g95 で PGPLOT を使用する方法
Aleksander Schwarzenberg-Czerny は、PGPLOT の一連の構成ファイルに貢献しました。Clive Page には、Windows 用の 手順があります。