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)
WRITE(*, 949)
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++だとマクロによる設定ではなくて,別に設定ダイアログができる.
二つのプログラムくっつけてビルドしたらこんなんでました。
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ってのは何をいみしてるんですか・
971 :
noobie:03/11/06 22:24
@8が何を示しているのかは知らん
とりあえず今わかるところだけ
"f"という関数もしくは変数をどこかで使用している
その"f"を定義していないのでリンカがエラーを吐く
コードを検索して、"f"という名前の関数か変数を使用してないか調べてみ
いまだに implicit none してくれないひとがおりまして・・・
みなさんありがとうございます。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になる事が多々ある。
海老コンパイラが糞なだけかもしれんが
いまだにサブルーチン使えない人がおりまして・・・
コンパイラ様は神様です。