Fortran

このエントリーをはてなブックマークに追加
933デフォルトの名無しさん :03/10/28 23:55
デュアルCPUを生かすにはプログラムを組み直さなくてはいけないそうですが、
組み直してないプログラムを走らせてDUALのXEONの3.2とPen4の3.2で比べたときに、
劇的に差は出るのでしょうか?
2倍速にはならずとも1.5倍ぐらいは期待してるのですが甘いですか?
>>933
プログラム次第ですねー
ベクトル化を丁寧にしていけば1.5倍は難しくないかも
>>933
デュアルCPUのPCは単処理が速くなるのではなく,複数の処理をしても重くならないのです.
だから,CPU×2=2倍の処理速度ではないですよ.
でも,プログラムをがんばれば,1.5倍は可能です.
936デフォルトの名無しさん:03/10/29 12:27
>>934 >>935
やっぱりプログラムを組みなおさなくてはデュアルの意味がないのですね。
プログラムを組みなおす余裕がないので、パソコンの性能で高速化を考えていたのですが、
単処理をするだけならばPen4の最新のほうが速そうですね。
アドバイスありがとうございました。
>>936
シングルスレッドのプログラムのデータを分けて,2つプログラムを起動してそれぞれのCPUに任せるのも手です
ABSOFT PRO FORTRAN 77を使ってるんですが、
プログラム実行時間を出力させるにはどうしたら良いでしょうか?
ETIMEやDTIMEが使えないようなので・・・
( ゚д゚)・・・
こーる しぃぴぃゆぅ_たいむ(じっすう)
>>939
ABSOFTのFORTRAN90ならCALL CPU_TIMEで通るんですが、
77だと通らないんですよ・・
こ〜る しすてむ_くろっく
GO TO 943
CONTINUE
GOTO 1000
STOP
END
IF (n.gt.1000) exit
EQUIVALENCE(945,946)
949FORMAT('rlo;(' lro;:03/11/01 00:49
WRITE(*, 949)
950FORMAT('&rlo;(' &lro;:03/11/01 00:49
WRITE(*, 950)
951デフォルトの名無しさん:03/11/01 10:20
REWIND (7)
WRITE(952,'(/a/)') 'くそ'

くそ
CALL SYSTEM 'clear'
go to 1
1 :パッキー :01/10/16 15:45
Fortran90をただでコンパイルする方法はないでしょうか?
そろそろ次スレいる?
ここは 990 でもいいんじゃないでしょうか.
G95 が急に完成したら祭になるでしょうけど.
958 CONTINUE ! G95マダー?☆チンチン
カモカモ
IF(G95=='キタ━━(゚∀゚)━━ !!') WRITE(*,*) 'キタ━━(゚∀゚)━━ !!'
ELSE WRITE(*,*) 'マダ━━(゚∀゚)━━ ??'
961デフォルトの名無しさん:03/11/04 23:40
デュアルCPUマシンがあるので並列化コンパイルしたいのですが、
今あるコード(F77)は並列化を考えて組まれていません。
この場合、コード内で繰り返し計算されていて時間を食っている部分だけを、
並列化ライブラリで定義されている関数で書き直せば高速化を図れますか?
また自動並列化ではどれくらいの効率が図れるのでしょうか?
962デフォルトの名無しさん:03/11/04 23:46
糞スレだったのに他にFortranスレがなかったために本スレに。
珍しい現象だから記念カキコ
>>961
そらライブラリのほうが一般的には速いだろう。

自前で並列化する場合だが、「うちのコード」の場合
intelので自動並列化したけど思ったほど速くならなかった。
たしか一割くらいか?
仕方がないから一部分だけopenMPで並列化指示をした。
最終的に6割ほど速くなったと思う。
どうせopenMPなんて(MPIに比べれば)簡単だからやってみたら?
964デフォルトの名無しさん:03/11/05 21:26
intel fortran compiler7.1ってvisual C++6.0にプラグインとして統合できるとありますが、
どういうことでしょうか?
コマンドラインではなく、visual fortranのようにボタンを押してコンパイルという使い方とは
違うことですか?
どなたか教えてください。
VC++6.0のライブラリをリンクできる
966デフォルトの名無しさん:03/11/05 23:50
intel fortran compiler7.1とvisual C++6.0でvisual fortranにはならないのですね。
IFCってFortranのコンパイラをVSで使うためにはカスタマイズのadd-in,macroの
設定でIFCのチェックをするから,そういうことなのでは?
Intel C/C++だとマクロによる設定ではなくて,別に設定ダイアログができる.
968超素人です:03/11/06 19:52
 二つのプログラムくっつけてビルドしたらこんなんでました。

Text1.obj : error LNK2001: unresolved external symbol _F@8
Debug/Text1.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

Text1.exe - 2 error(s), 0 warning(s)

どういうことですか?教えてくださいm( )m
969デフォルトの名無しさん:03/11/06 21:09
>>968
暇つぶしだ
数十行のコードならあっぷ汁

たぶんどっかで間違った関数名使ってる
奇怪なコードになる前に、外部関数と変数名を明示的に宣言してimplicit none使え
970超素人です:03/11/06 22:14
ありがたいんですがけっこう長いんであっぷはちょっと・・

学生です。卒業生のやつをうごかしてみたんですがこんなかんじでした。

Fってのがまちがった関数なんすかね?8ってのは何をいみしてるんですか・
971noobie:03/11/06 22:24
@8が何を示しているのかは知らん
とりあえず今わかるところだけ
"f"という関数もしくは変数をどこかで使用している
その"f"を定義していないのでリンカがエラーを吐く

コードを検索して、"f"という名前の関数か変数を使用してないか調べてみ
いまだに implicit none してくれないひとがおりまして・・・
>>972
そんな奴にはF言語強制使用の刑
975超素人です:03/11/07 13:00
 みなさんありがとうございます。Fというのが宣言されてなかったみたいです。
エラーは無くなりましたが結果はでませんでした・・・

 forrtl : severe (161) : Program Exseption -array bounds exceeded

Image PC   Routine Line   Source
Text1.exe  00403E05 Unknown Unknown Unknown
Text1.exe  00402D6B    Unknown  Unknown   Unknown                 
Text1.exe  00465879   Unknown  Unknown  Unknown                         
Text1.exe  0044AD39    Unknown  Unknown   Unknown                        
kerne32.dll 77E414C7 Unknown Unknown Unknown

ncrementally linked image -- PC correlation disabled

こんなんです・・わけわからんです m( )m
>>975
array bounds exceededは配列の宣言より大きい値のところに数値を入れると出ます
つまり,
REAL*8 :: a(5)

DO I=1,6
 A(I)=I
END DO
I=6の時,A(6)となり,落ちます
このエラーはデバッグでプログラムを走らせるとその場所で止まるので,
すぐに分かります.
C++ から Fortran の関数使う時に
extern "C" を忘れてるとか?
978デフォルトの名無しさん:03/11/07 21:00
危なかった・・・
>>976
その程度の問題なら、必ずしも落ちないんだな。
real*8 :: a(5), b(5)
と宣言して、
a(6) = hoge
とやると、b(1)==hogeになる事が多々ある。
海老コンパイラが糞なだけかもしれんが
いまだにサブルーチン使えない人がおりまして・・・
>>980
そんな奴にはPascal強制使用の刑
コンパイラ様は神様です。