FORTRAN Ⅳat TECH
FORTRAN Ⅳ - 暇つぶし2ch890:デフォルトの名無しさん
11/07/23 07:42:53.84
スレ違いかもしれませんが、ご存じの方がおりましたら教えていただけないでしょうか

URLリンク(www.ffte.jp)
上記のサイトにあるFFTのサブルーチンをMPIとOpenMPのHybridで使おうと思っています。

tarをダウンロードして、解凍し、"ffte-4.1\mpi\tests\" にあるMakefileの
FFLAGS = -O3 -fomit-frame-pointer -I../.. を
FFLAGS = -O3 -fomit-frame-pointer -I../.. -openmp -openmp-report2
と書き換えてコンパイルをしました。

実行するとセグメンテーション違反と表示されてうまくいきません
-openmp -openmp-report2 を付け加えなければうまくいきます。

どうすれ、いいか教えていただけないでしょうか
よろしくお願いします。

891:デフォルトの名無しさん
11/07/23 11:43:50.25
>>889
レスありがとうございます.
そうですか...別の方向からアプローチしてみます.

892:デフォルトの名無しさん
11/07/28 14:58:20.15
3年ぶりあげ

893:デフォルトの名無しさん
11/08/06 16:33:15.49
LinuxでFORTRANを使う際テキストエディタでプログラムを書き
\(ユーザー名)/FORTRANに保存し端末(コマンドライン端末)を使用し
そのプログラムへの入力と実行結果を生成する
ファイルのコマンドを忘れてしまいました
どなたかわかる方はいらっしゃいますでしょうか

894:デフォルトの名無しさん
11/08/08 13:33:55.54
それはemacsでしょうか。


895:デフォルトの名無しさん
11/08/10 00:07:13.86
>>893
日本語でおk

896:デフォルトの名無しさん
11/08/14 17:20:24.31
FORTRAN77でスタック変更ってどうやるんだ?
でっかい配列定義するとエラる

897:デフォルトの名無しさん
11/08/14 17:23:40.72
>>896
コンパイラの問題だから、一般解はない。マニュアルを見るしかない。

898:デフォルトの名無しさん
11/08/15 07:44:26.69
unlimit
ulimit
ためすか、何か環境変数いじれば動くことがある、アル

899:デフォルトの名無しさん
11/08/16 19:32:51.42
allocate文で動的に確保した変数っていつまで生き残りますか?

allocatable属性を指定した変数を宣言したプログラム単位の終わりまで来たら
自動的にdeallocateされるものですか?

900:デフォルトの名無しさん
11/08/16 20:37:08.77
ALLOCATABLE 属性の配列でF95以降ならそうかな。F90の場合はそうではなかったような気がする。
F90からF95へのマイナー改訂で不便が無くなった記憶がある・・・
POINTERの時は解放されなかったと思う。

間違ってたらゴメンwww謝罪はしても賠償はしない

901:デフォルトの名無しさん
11/08/16 20:51:47.70
ありがとうございます

さらにいくつか質問させてください

リスト構造を作ってなんらかの処理をするsubroutineを作り、
そのsubroutineをdoループで何度も呼び出すようなプログラムを考えています

allocateした変数が自動的に解放されないと仮定すると、

①subroutine呼び出すたびに使用しているメモリが増えて最終的にプログラムがストップすることになりますか?
②もしそうならsubroutineの最後でリスト構造を辿りながら手動でdeallocateしないといけないことになりますか?

③「allocatable属性を指定した変数を宣言したプログラム単位の終わりまで来たら自動的にdeallocateされるのかどうか」
を確かめる簡単な方法はありませんか?


よろしくお願いします。

902:デフォルトの名無しさん
11/08/16 22:03:42.77
>>901
1.そういうことになる。いわゆる memory leak と呼ばれる状況。
2.そうなる。
3.1回試すだけなら、でっかい配列を allocate して、システムモニターやpsコマンドなどでメモリー使用量の変化を
  見てみればいい。

たぶん、最近の Fortran コンパイラは皆 F95 だから、ローカルに確保された ALLOCATABLE は自動解放されると思う。

903:デフォルトの名無しさん
11/08/16 22:06:17.75
ただ同じ SUBROUTINE を何度も呼び出すつもりなら、もし前回解放されていなければ、
二回目は ALLOCATE できないと思う。
そういう場合配列の STATUS が不定なので、動作が処理系に依存しそうで断言できないが。

904:デフォルトの名無しさん
11/08/16 22:38:39.47
ありがとうございます

使っているコンパイラはintelです

確認してみます。
ありがとうございました

905:デフォルトの名無しさん
11/08/18 23:57:28.90
integer*4 gen(10)

の( )の中の数字ってなんですか?

初心者用参考書だと使ってなくて解説ないし
難しい参考書だと当たり前のように使ってるし

fortranって両極端ですね


906:デフォルトの名無しさん
11/08/19 00:23:14.76
配列の要素数

907:904
11/08/19 10:43:45.35
どうやらallocatable属性だとdeallocateされて
pointer属性だとdeallocateされないみたいです

908:デフォルトの名無しさん
11/08/19 11:50:36.72
>>907
Fortran95の動作だとそうなると思います。

909:デフォルトの名無しさん
11/11/15 01:30:19.44
gfortran, バージョン4:4.4.5-1 に関する質問です。

モジュールのバージョンが違うとかで下記のエラーメッセージが出てきます。
Fatal Error: Parse error when checking module version for file 'functions.mod'

これってどう解決すればいいですか?

910:デフォルトの名無しさん
11/11/15 02:02:21.33
くだらない質問のようなのでくだ質に移動します


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch