Fortran 勉強会 第 5 回 辻野智紀

Similar documents
数はファイル内のどの関数からでも参照できるので便利ではありますが 変数の衝突が起こったり ファイル内のどこで値が書き換えられたかわかりづらくなったりなどの欠点があります 複数の関数で変数を共有する時は出来るだけ引数を使うようにし グローバル変数は プログラムの全体の状態を表すものなど最低限のものに留

Microsoft Word _001b_hecmw_PC_cluster_201_howtodevelop.doc

Windows インタフェースモジュール (ver1.451) の更新方法 2017 年 12 月 21 日 株式会社ハイバーテック 本メール添付インストーラを使用して,Windows インタフェースモジュールを更新 ( インストール ) する方法を記載します. 本メール添付ファイル (ver145

memo

インテル(R) Visual Fortran コンパイラ 10.0

分割コンパイル (2018 年度 ) 担当 : 笹倉 佐藤 分割コンパイルとは 一つのプログラムのソースを複数のソースファイルに分けてコンパイルすること ある程度大きなプログラムの場合ソースファイルをいくつかに分割して開発するのが普通 1

この時お使いの端末の.ssh ディレクトリ配下にある known_hosts ファイルから fx.cc.nagoya-u.ac.jp に関する行を削除して再度ログインを行って下さい

Microsoft PowerPoint - Borland C++ Compilerの使用方法(v1.1).ppt [互換モード]

Microsoft Word - CygwinでPython.docx

スクールCOBOL2002

VBコンバータ利用方法

Microsoft PowerPoint - prog03.ppt

Microsoft PowerPoint - 09.pptx

Microsoft PowerPoint - CproNt02.ppt [互換モード]

RX ファミリ用 C/C++ コンパイラ V.1.00 Release 02 ご使用上のお願い RX ファミリ用 C/C++ コンパイラの使用上の注意事項 4 件を連絡します #pragma option 使用時の 1 または 2 バイトの整数型の関数戻り値に関する注意事項 (RXC#012) 共用

ML 演習 第 4 回

7th CodeGear Developer Camp

プログラミング基礎

Microsoft PowerPoint - fortran2.ppt [互換モード]

プログラミング実習I


Microsoft PowerPoint - 1_コンパイラ入門セミナー.ppt

情報処理概論(第二日目)

書式に示すように表示したい文字列をダブルクォーテーション (") の間に書けば良い ダブルクォーテーションで囲まれた文字列は 文字列リテラル と呼ばれる プログラム中では以下のように用いる プログラム例 1 printf(" 情報処理基礎 "); printf("c 言語の練習 "); printf

Microsoft PowerPoint - 計算機言語 第7回.ppt

演習1

Microsoft PowerPoint - 4.ppt [互換モード]

Microsoft PowerPoint - 3.ppt [互換モード]

演習2

OpenAM 9.5 インストールガイド オープンソース ソリューション テクノロジ ( 株 ) 更新日 : 2013 年 7 月 19 日 リビジョン : 1.8

スライド 1

Microsoft Word - VBA基礎(6).docx

DBMSリポジトリへの移行マニュアル

Fortran Builder 5.3 製品ご利用ガイド Fortran Builder 5.3 をお買い求めいただきありがとうございます 本製品のご利用にあたり 以下の説明をお読みください 目次 製品概要 P.11 稼働環境 P.11 バージョン情報 P.11 インストール方法 P.12 ライセン

計算機シミュレーション

Microsoft PowerPoint - OS07.pptx

Java言語 第1回

7th CodeGear Developer Camp

ポインタ変数

GSLetterNeo vol 年 7 月 形式手法コトハジメ TLA + Toolbox を使って (2)- 熊澤努 sra.co.jp はじめに GSLetterNeo Vol.130 で TLA + Toolbox を紹介しました 今回からより詳しく T

Microsoft Word - appli_SMASH_tutorial_2.docx


gengo1-12

ご利用のコンピュータを設定する方法 このラボの作業を行うには 事前設定された dcloud ラボを使用するか 自身のコンピュータをセットアップします 詳細については イベントの事前準備 [ 英語 ] とラボの設定 [ 英語 ] の両方のモジュールを参照してください Python を使用した Spar

C#の基本

Microsoft PowerPoint - 第5章補足-DB2組み込みSQL.ppt

実行形式の作成と構成管理 2012 年 7 月 8 日 海谷治彦 1

PowerPoint プレゼンテーション

UNIX 初級講習会 (第一日目)

PowerPoint プレゼンテーション

< 中略 > 24 0 NNE 次に 指定した日時の時間降水量と気温を 観測地点の一覧表に載っているすべての地点について出力するプログラムを作成してみます 観測地点の一覧表は index.txt というファイルで与えられています このファイルを読みこむためのサブルーチンが AMD

PowerPoint プレゼンテーション

FORTRAN( と C) によるプログラミング 5 ファイル入出力 ここではファイルからデータを読みこんだり ファイルにデータを書き出したりするプログラムを作成してみます はじめに テキスト形式で書かれたデータファイルに書かれているデータを読みこんで配列に代入し 標準出力に書き出すプログラムを作り

目次 1. はじめに 本書対象者 PALRO のアプリケーションについて Ubuntu 8.04LTS の入手について Linux 上での開発環境の構築 事前準備 Ubuntu のインストール..

C/C++からJVMを起動します

Microsoft Word - Training10_プリプロセッサ.docx

memo

Prog1_2nd

KeyCreator2019 SP2 主な新機能と改良内容

PGRelief C/C++ 強化ポイント説明書

PHP 分科会 '12/01 OpenSource 協議会 System i 2012/01/26

初めてのプログラミング

COBOL Enterprise Edition V3 / COBOL Standard Edition V3 開発環境のご紹介 2018 年 10 月 日本電気株式会社

スライド 1

Prog1_6th

Eclipse 操作方法 (Servlet/JSP 入門補助テキスト)

Source Insight

COMET II のプログラミング ここでは機械語レベルプログラミングを学びます 1

Fortran Builder 6.1 for Mac 製品ご利用ガイド Fortran Builder 6.1 for Mac をお買い求めいただき誠にありがとうございま した 本製品のご利用にあたり 以下の説明をお読みください 目次 製品概要 P.11 稼働環境 P.11 ライセンスについて P

Microsoft Word - K5VSSP32-install.docx

24th Embarcadero Developer Camp

ソフトウェア基礎 Ⅰ Report#2 提出日 : 2009 年 8 月 11 日 所属 : 工学部情報工学科 学籍番号 : K 氏名 : 當銘孔太

3.Cygwin で日本語を使いたい Cygwin で以下のコマンドを実行すると それ以降 メッセージが日本語になります export LANG=ja_JP.UTF-8 これは 文字コードを日本語の UTF-8 に設定することを意味しています UTF-8 は Cygwin で標準の文字コードで, 多

Rhino Importer for ARCHICAD ユーザーガイド

説明書

※ ポイント ※

スクールCOBOL2002

テキストファイルの入出力1

OCW-iダランベールの原理

Steinberg 社 - VST3 対応シンセサイザービルド環境テンプレート (Windows 版 ) Quick 説明書 はじめにこの度は Steinberg 社 - VST3 対応シンセサイザービルド環境テンプレートをダウンロードして下さり 誠にありがとうございます 本説明書はビルド環境テンプ

情報処理概論(第二日目)

kiso2-03.key

ブート領域、フラッシュ領域の分割方法 RL78ファミリ用Cコンパイラ CC-RL

about MPI

理工学図書館後期 LS 講習会 きれいなグラフを作ろう! gnuplot 入門

Microsoft PowerPoint - chap10_OOP.ppt

開発・運用時のガイド JDK8への移行に伴う留意点 [UNIX]

슬라이드 1

Java Scriptプログラミング入門 3.6~ 茨城大学工学部情報工学科 08T4018Y 小幡智裕

Microsoft Word - matlab-coder-code-generation-quick-start-guide-japanese-r2016a

Microsoft Word - Cプログラミング演習(1)_2012

PowerPoint プレゼンテーション

gengo1-12

メソッドのまとめ

実験 5 CGI プログラミング 1 目的 動的にWebページを作成する手法の一つであるCGIについてプログラミングを通じて基本的な仕組みを学ぶ 2 実験 実験 1 Webサーバの設定確認と起動 (1)/etc/httpd/conf にある httpd.conf ファイルの cgi-bin に関する

統合開発環境CubeSuite+ V へのバージョンアップのお知らせ

<4D F736F F F696E74202D20352D335F8D5C90AC CF909482CC90B690AC82C695D28F572E707074>

memo

Transcription:

Fortran 勉強会 第 5 回 辻野智紀

今回のお品書き サブルーチンの分割コンパイル ライブラリ 静的ライブラリ 動的ライブラリ モジュール

その前に 以下の URL から STPK ライブラリをインストールしておいて下さい. http://www.gfd-dennou.org/library/davis/stpk 前回参加された方はインストール済みのはず.

サブルーチンの分割コンパイル

サブルーチンの独立化 サブルーチンはメインプログラムとは別のファ イルに記述可能. メインプログラムとは独立に開発が可能. サブルーチンが独立でない場合 ( プログラム A, B はサブルーチン A を call しているとする.) プログラム + サブルーチン A A サブルーチンの修正が生じると プログラム + サブルーチン A A プログラム + サブルーチン B A 両方修正しないとダメ!! プログラム + サブルーチン B A

サブルーチンの独立化 サブルーチンはメインプログラムとは別のファ イルに記述可能. メインプログラムとは独立に開発が可能. サブルーチンが独立である場合 ( プログラム A, B はサブルーチン A を call しているとする.) プログラム A サブルーチンの修正が生じると プログラム A プログラム B プログラム B サブルーチン A サブルーチンファイルを修正するだけ!! サブルーチン A

ソースファイルから実行ファイルを コンパイル 作るには... 人間が作成したプログラムの設計図を計算機がわかる形に変換する作業. この作業で作成されるファイルをオブジェクトファイル ( 拡張子.o ), コンパイルを行うソフトウェアをコンパイラと呼ぶ. リンク この段階ではプログラムは実行できない. オブジェクトファイルにライブラリ ( 後述 ) 等のプログラムを実行するために必 要なその他ファイルをつなげる作業. この作業で作成されるファイルはオブジェクトファイルか実行形式のファイル. リンクを行うソフトウェアをリンカと呼ぶ. よく使われる コンパイルする というのは, コンパイル + リンク = 実行ファイルの作成 を指している.

分割コンパイルの方法 メインプログラムのソースファイル main.f90 ifort -c main.f90 メインプログラムのオブジェクトファイル main.o サブルーチン A のソースファイル sub.f90 ifort -c sub.f90 コンパイル サブルーチン A のオブジェクトファイル sub.o ライブラリファイル libm.a ( コンパイラ標準提供も含む ) リンク ifort main.o sub.o -lm -o main オプション -l = ライブラリファイルの陽的な指定. 直後に来る文字はライブラリファイル名の先頭 3 文字と拡張子を除いた文字. メインプログラム main

実習 1 前回作成したガウスの消去法のサブルーチンを別ファイルに記述し, 分割コンパイルを行って実行ファイルを作成してみましょう.

ライブラリ モジュール

ライブラリファイルとは サブルーチン 関数を 1 つにまとめたもの. サブルーチンを独立化させて, 分割コンパイルはできたが, サブルーチンファイルの数が多くなるとコンパイルが面倒. 利点 コンパイル時間の短縮. 先にサブルーチンファイルだけコンパイルしておけば, メインファイルを書き換えたときにサブルーチンファイルも再コンパイルする必要はない. 汎用性が高ければ パッケージ として関数群を提供可能. lapack, linpack など. 2 つの形 静的ライブラリ 動的ライブラリ

静的ライブラリ オブジェクトファイルを 1 つにまとめたもの. リンク時にオブジェクトファイルそのものを実行ファイルにリンクする ( 実行ファイルを生成するときにオブジェクトファイルも組み込む ). 慣習的な命名規則 先頭 3 文字 lib, 拡張子.a 利点? バージョンを固定できる. 欠点? 一度作成したライブラリファイルはそのオブジェクトファイルをコンパイルした時点のもので固定される ( オブジェクトファイルが変化しても変わらない ). 実行ファイルの容量が大きくなる.

静的ライブラリ ライブラリのソースファイル (Ver.1.0) libtest.a (Ver.1.0) このバージョンでのオブジェクトファイルの情報をすべて所持. ソースが変更される libtest.a を利用しているプログラム ライブラリのソースファイル (Ver.2.0) 静的ライブラリはオブジェクトファイルごとまとめられているので, それを利用しているプログラムはソースの変更があっても影響されない. libtest.a (Ver.1.0) 再コンパイルしなければ Ver.1.0 のまま libtest.a を利用しているプログラム (Ver.1.0 で実行される )

動的ライブラリ オブジェクトファイルの名前を1つにまとめたもの. リンク時にはオブジェクトファイルの場所と名前を実行ファイルにリンクする. 実行ファイルが起動してから各オブジェクトファイルを参照. 慣習的な命名規則 先頭 3 文字 lib, 拡張子.so 利点? 実行ファイルの容量が ( 静的ライブラリに比べて ) 小さくなる. バージョン変化への対応が容易 ( 名前を変えるだけ ). 欠点? 一度作成したライブラリファイルはそのオブジェクトファイルの内容が変化すれば自動的に変化する. バージョン変化によってそれを参照しているプログラムに影響. シンボリックリンク等で対応可能.

動的ライブラリ ライブラリのソースファイル (Ver.1.0) オブジェクトファイル (Ver.1.0) ソースが変更される libtest.so (Ver.1.0) オブジェクトファイルの名前をまとめているだけ libtest.so を利用しているプログラム オブジェクトファイル (Ver.2.0) ライブラリのソースファイル (Ver.2.0) 動的ライブラリはオブジェクトファイルの名前だけリンクしているので, それを利用しているプログラムはソースの変更によって自動的に置き換わる. libtest.so (Ver.2.0) libtest.so を利用しているプログラム (Ver.2.0 で実行される )

モジュール Fortran 90 から追加された機能. 各要素 ( 変数, 定数, 型, 手続き等 ) をまとめることが可 能. 各モジュールに含まれる要素はプログラム内で陽に指定 (use) されないと使用できない. 非常に有用な機能. あるサブルーチンを使いたければ, そのサブルーチンがまとめられているモジュール名を指定しないと使えない. 関数群としてだけではなく, 定数集としても使える.

モジュールの書き方 module モジュール名 use 別モジュール! 別モジュールを組み込むことも可能. implicit none ( もしあれば ) 変数の定義 contains subroutine サブルーチン名 end subroutine サブルーチン名 end module モジュール名

モジュールの使い方 program メインプログラム名 use モジュール名 implicit none 変数の定義処理! モジュール内に含まれている手続き等を call end program

ライブラリ モジュールの コンパイル リンク方法 メインプログラム : main.f90 モジュールプログラム : module.f90 ライブラリファイル : libtest.a $ ifort -c main.f90 オブジェクトファイル main.o 生成. ifort -c module.f90 オブジェクトファイル module.o, モジュールファイル module.mod 生成. ifort -I./ main.f90 module.o -o main -ltest 実行ファイル main 生成.

コンパイルオプションまとめ コンパイル時に用いるオプション -c : コンパイルのみ行う. -o : 実行ファイルの名前. 省略した場合, a.out が生成. -l( エル ) : ライブラリファイルのリンク. 命名規則 : ライブラリファイル名の先頭 3 文字と拡張子を省略した文字 (libtest.a なら -ltest ). ファイルの位置指定. -I( アイ ) : モジュールファイル. -L : ライブラリファイル.

例題 以下をコンパイル, リンクして実行形式ファイルを作成する. メインプログラム : カレントディレクトリの main.f90 ライブラリファイル : /usr/local/lib/libtest.a モジュールプログラム : カレントディレクトリの mo.f90 作成までの流れ コンパイル ifort -c main.f90 ifort -c mo.f90 リンク 注意 ifort -I./ main.o mo.o -L/usr/local/lib -ltest -o main ライブラリファイルをリンクする時は, 必ず参照しているファイルの後にオプション記述すること.

実習 2 STPK ライブラリのディレクトリに demo/unit があるので, fft_test.f90 ファイルをコンパイルして実行ファイル fft_test を作成し, プログラムを実行してみましょう. コンパイル時に, STPK ライブラリをリンクします. ライブラリやモジュールファイルの位置を間違えないよ うに... 詳細は配布資料参照.

実習 3 ~ より実用的な使用 ~ サンプルデータは CReSS の計算結果の隣接 3 時刻 の 3 次元風速データである. サンプルプログラム sample.f90 はこのデータをもとに, 任意の点から流跡線を計算するプログラムである. このプログラムをコンパイルし, 実行ファイルを作成し ましょう. 実行して任意の点での流跡線を計算し, 結果をプロット してみましょう. 流跡線の計算結果はテキスト形式で出力されます. 詳細は配布資料参照.

ctl ファイルと流跡線の計算開始位置を指定. Grads の ctl ファイルから x, y, z の座標軸データを取得. Grads の ctl ファイルから 3 次元速度データ u, v, w のデータを取得. 速度場データを元に流跡線解析を実行. trajx, trajy, trajz に流跡線の x,y,z データが格納される.

実習 4 problem.f90 は実習 3 で用いたサンプルデータの 1 時刻における鉛直第 1 層目の水平収束を計算する書きかけのプログラムである. このプログラムを完成させ, 水平収束を計算し, 結果を図化しましょう. 詳細は配布資料参照.

参考資料 http://docs.oracle.com/cd/e19205-01/820-1203/aeudq/index.html Fortran プログラミングガイド (Oracle) http://www.nag-j.co.jp/fortran/index.html Fortran 入門 (NAG) http://www.atmarkit.co.jp/flinux/rensai/buildlamp/l amp_07/07_1.html ダイナミックリンクとスタティックリンク (@IT) http://www.gfd-dennou.org/library/davis/stpk/ 数値解析ライブラリ (STPK)