FORTRAN Ⅳat TECH
FORTRAN Ⅳ - 暇つぶし2ch604:デフォルトの名無しさん
09/10/10 16:32:59
....その言い草はねぇだろうww

605:デフォルトの名無しさん
09/10/10 22:01:30
>>604
だったらそのサイトのURLを教えて欲しい

606:デフォルトの名無しさん
09/10/10 22:03:42
安価間違いました>>604じゃなく>>603です。すみません。

607:デフォルトの名無しさん
09/10/10 22:14:02
さらしていいものなのかな?
URLリンク(www.geocities.jp)
ここなんだけど副プログラムのほうにもuseしろって書いてありました

608:デフォルトの名無しさん
09/10/13 03:37:16
まずはgeocitiesごときにあるサンプルを鵜呑みにした自分を責めるところから始めるんだ

609:デフォルトの名無しさん
09/10/14 00:33:47
>>609 (インデント用)

module mod
contains
real function call_func(func, arg)
interface
real function func(arg)
real, intent(in) :: arg(2)
end function func
end interface
real, intent(in) :: arg(2)
call_func = func(arg)
return
end function call_func
end module mod

real function func(arg)
real, intent(in) :: arg(2)
func = arg(1) * arg(2)
return
end function func

program main
use mod
external func
real :: arg(2) = (/ 2.0, 3.0 /)
! dummy = func(arg)
print *, call_func(func, arg)
stop
end program main

610:デフォルトの名無しさん
09/10/14 00:36:31
>>609のコメントアウトした部分のコメントをはずすとコンパイルも通り、正常に動作するんですが
コメントアウトするとなぜかコンパイルすらできません
理由がさっぱりわからないんですが、なにが問題なんでしょうか?

コンパイラはgcc 4.2.4

エラーメッセージは↓です
print *, call_func(func, arg)
1
Error: Type/rank mismatch in argument 'func' at (1)

611:デフォルトの名無しさん
09/10/14 00:43:12
>>610
Intel VF 11.046 なら通る。


612:デフォルトの名無しさん
09/10/14 01:54:59
回答有難う御座います
gccコンパイラのバグということでしょうかね
汎関数を引数にもってる関数の総称名をつけようとするとコンパイルできなかったり(これは仕様?)

613:デフォルトの名無しさん
09/10/14 03:35:23
>>612
PRINT文のバグ臭いな。
FUNCTIONの返り値が、VALUEなのかADDRESSなのか今一不明なので
77時代からFUNCTIONの返り値を代入を経ずに使うと、機種依存の振る舞いを
することが良くあった。
最近は大丈夫なことが多いが。

関数引数の総称名は、IVFでは出来た。多分、仕様上では出来ておかしくないと思う。

MODULE m_unko

INTEGER, PARAMETER :: kd = SELECTED_REAL_KIND(14)

INTERFACE gen
MODULE PROCEDURE sub1, sub2
END INTERFACE

ABSTRACT INTERFACE
REAL FUNCTION x_f(a)
REAL, INTENT(IN) :: a
END FUNCTION x_f

REAL(kd) FUNCTION d_f(a)
IMPORT
REAL(kd), INTENT(IN) :: a
END FUNCTION d_f


END INTERFACE



614:556
09/10/14 03:36:04
CONTAINS

REAL FUNCTION sub1(f, x)
REAL, INTENT(IN) :: x
PROCEDURE (x_f) :: f
sub1 = f(x)
RETURN
END FUNCTION sub1

REAL(kd) FUNCTION sub2(f, d)
REAL(kd), INTENT(IN) :: d
PROCEDURE(d_f) :: f
sub2 = f(d)
RETURN
END FUNCTION sub2

END MODULE m_unko
!
PROGRAM unko
USE m_unko
REAL :: x
REAL(kd) :: d
PROCEDURE (x_f), POINTER :: f
PROCEDURE (d_f), POINTER :: g
x = 4.0 * ATAN(1.0)
d = 4.0_kd * ATAN(1.0_kd)
f => SIN
g => DSIN
PRINT *, gen(f, x)
PRINT *, gen(g, d)
STOP
END PROGRAM unko

615:デフォルトの名無しさん
09/10/14 21:01:13
>>613,612
サンプルコードありがたいんですが、コンパイルできませんでした
abstract interfaceのところで最初のエラーがでるので原因を調べたんですが
hpとintelのマニュアルを検索してもabstract interfaceの項目が見つからりませんでした・・・

616:デフォルトの名無しさん
09/10/15 01:08:20
>>615
ABSTRACT INTERFACE はF2003の機能で、まだIntelのHelpに載ってないが、実装されている。
Crayとか(多分)IBMのマニュアルなら載っていると思う。まぁ素直にFortran95/2003 Explainedを
見るのがいいと思うが。GoogleBooksでもページが飛ばされてなければ見られる。
しかし、これは本質ではない。二度Interfaceを書くのが面倒だったから使ったまで。

これならどうだべ?
MODULE m_unko

INTERFACE gen
MODULE PROCEDURE sub1, sub2
END INTERFACE

CONTAINS

REAL FUNCTION sub1(f, x)
REAL, INTENT(IN) :: x
INTERFACE
REAL FUNCTION f(x)
REAL, INTENT(IN) :: x
END FUNCTION f
END INTERFACE
sub1 = f(x)
RETURN
END FUNCTION sub1


617:デフォルトの名無しさん
09/10/15 01:09:15
INTEGER FUNCTION sub2(f, x)
REAL, INTENT(IN) :: x
INTERFACE
INTEGER FUNCTION f(x)
REAL, INTENT(IN) :: x
END FUNCTION f
END INTERFACE
sub2 = f(x)
RETURN
END FUNCTION sub2
!
REAL FUNCTION rmult2(x)
REAL, INTENT(IN) :: x
rmult2 = 2.0 * x
RETURN
END FUNCTION rmult2
!
INTEGER FUNCTION imult2(x)
REAL, INTENT(IN) :: x
imult2 = INT( 2.0 * x )
RETURN
END FUNCTION imult2
END MODULE m_unko
!
PROGRAM unko
USE m_unko
REAL :: x
x = 4.0
PRINT *, gen(rmult2, x)
PRINT *, gen(imult2, x)
STOP
END PROGRAM unko

618:デフォルトの名無しさん
09/10/15 18:46:55
>>616,617
有難うございます。コンパイルできました。完璧です
主プログラムにinterfaceを書く方法は見つけたんですが
moduleにくくってしまえばinterfaceを書かなくてもできるんですね

619:デフォルトの名無しさん
09/10/16 08:07:09
FORTRANやめますか?人間やめますか?

620:デフォルトの名無しさん
09/10/16 08:50:16
つ DarkBASIC

621:デフォルトの名無しさん
09/10/16 23:00:56
Windows版NetBeansの環境でgFortranを使いたいんだが、
実行ファイルの設定をg77.exeからgfortran.exeに変えるだけでok?

もし、そのほかに設定事項等あれば教えて欲しい


622:デフォルトの名無しさん
09/10/17 20:44:18
moduleでオブジェクト指向っぽいことができるのはわかったんですが
c++とかでいうインスタンスを作ることはできないんでしょうか?

623:デフォルトの名無しさん
09/10/17 22:43:57
>>622
F2003なら出来る。F95以前では出来ない。


624:デフォルトの名無しさん
09/10/17 23:13:19
こんな感じかな?
とりあえず、IVF 11.1 では通った
誰か Fortran 95/2003 Explained の日本語訳作って

module mod1
implicit none
type Circle
real :: d
contains
procedure :: area => func1
end type Circle

contains
real function func1(this)
class(Circle) :: this
func1 = (this%d ** 2) * 3.14 / 4.0
end function func1
end module mod1

program main
use mod1
implicit none
type(Circle) :: c
c%d = 10.0
print *, c%area()
end program main


625:デフォルトの名無しさん
09/10/18 16:52:26
>>624
ありがとうございます
残念ながらgfortranでは2003が使えないようなので試せませんが・・・

626:デフォルトの名無しさん
09/10/19 14:40:01
実際、FortranでOOPはどうなの?
イラネって意見も散見するが・・・

627:デフォルトの名無しさん
09/10/19 16:11:22
乱数とか行列?

628:デフォルトの名無しさん
09/10/19 17:25:58
>>626
それで速度が落ちるならイラネ。落ちそうな気しかしないけど。

中田育男『基礎FORTRAN』(岩波書店)のコラムに

FORTRANでもCOMMON文とENTRY文を使って、オブジェクト指向設計に
従ったプログラムを書くことができる。

とあったけど、具体的なことは何も書いていなかった。

629:デフォルトの名無しさん
09/10/19 17:54:29
FORTRANで無理矢理それっぽいことをやったらどうなるかという例が
「オブジェクト指向入門」34章にあるようだ
URLリンク(www.seshop.com)

俺は初版しか読んでないけど、今でも事情は変わらんでしょ

630:デフォルトの名無しさん
09/10/19 20:01:44
>>629
読んでみたいけど、ちょっとお値段が・・・
そういやまともなオブジェクト指向の本を読んだことは一度もないや
良い機会だから買ちゃおうかしら

631:デフォルトの名無しさん
09/10/19 20:18:28
>>628
> COMMON文とENTRY文を使って、オブジェクト指向設計に

なぜかはわかりませんが、イヤな予感しかしません・・・

632:デフォルトの名無しさん
09/10/19 20:42:47
というか、OOP用に作られてない言語で安全なOOPをするのって無理だし・・・
安全でないOOPなんてOOPのメリットないに等しいし・・・

素人は大人しくJavaやC#使うほうが幸せになれる

633:デフォルトの名無しさん
09/10/19 21:13:30
>>629
初版のはFORTRAN77でトリッキーなカプセル化をする話だけだったから
たぶん>>631>>632の言う通り

今実際どうなのか
俺は2003とか不勉強なんでわからん

634:デフォルトの名無しさん
09/10/20 00:37:24
>>633
そういわず、2003を勉強しようぜ!
ばりばりOOPでなくても
TYPE の拡張とかが、入れ子じゃなくて、同じ深さで構造体のメンバーを増やせるし。
OOPでない部分でも結構拡張があって便利。


日本語 パワポ
URLリンク(www.itscj.ipsj.or.jp)
英語
fURLリンク(ftp.nag.co.uk)


635:デフォルトの名無しさん
09/10/20 01:07:43
正直、OOPとそうでないものの違いがよくわかんない。
暴力的な書き方だけど、「因果関係が一意」という点では同じだし。
C++しか扱ったことないしあまり深く触らなかったからだけど、
OOPの深淵に辿り着かないと判らない機微もあるのだろうけどな。

636:デフォルトの名無しさん
09/10/20 02:20:34
>>629
どんな感じのことを言ってんすか?
簡単に教えてくだしあ

637:デフォルトの名無しさん
09/10/20 05:21:22
>>636
たいした話じゃなくて
ENTRY文をメソッドの代わりにしてカプセル化をまねるだけ。
継承とかそういう話はないし、動的にオブジェクトを作れるわけでもない。
本来の使い方でもないから危なっかしい。
ただ、それでも素のPascalよりは気がきいてるってことなんだなw

今じゃ2003もあるし
第二版はどうなってるか知らないよ。

638:デフォルトの名無しさん
09/10/20 05:43:47
>>635
自分で書く分にはOOPは邪魔なだけだよ
OOPが真価を発揮するのは他人のライブラリを使うとき。

639:デフォルトの名無しさん
09/10/20 12:58:28
ENTRY文はバグでやすいな。
COMMONの代わりに、共有変数を実現するのに、77でENTRY使ったが、かえってめんどかったw




640:デフォルトの名無しさん
09/10/21 10:41:26
>>637
thx
2003でOOPを謳ってるってことは、ある程度まともには作られてんだろうね多分。
アドレス指定で偶然にそのインスタンスを破壊しちゃう、なんてリスクはないように
出来てるんだろう・・・(どうやって実現してんのかさっぱり想像できないけど)

641:デフォルトの名無しさん
09/10/21 21:31:44
すいません。最近始めた超初心者です。
簡単なシミュレートで
open(10,file='testout.out',status='unknown',form='formatted')
do n=0,nmax
   計算略
write(10,30) t, a(1),a(2),a(3)
30 format(1H ,4(1pe12.4))
enddo
こんな感じで配列の値を表示しようと思うのですが
なぜか出力ファイルが改行されません><
g77でコンパイルしています。コンパイルはできるのですが・・・
どなたかファイルに出力するときの改行の仕方をご教授していただきたいのです
お願いします

642:デフォルトの名無しさん
09/10/22 18:39:19
>>641ですが
出力ファイルをdosに直してませんでした
自己解決しますた
フォートランはフォーマット文がわかりにくいなぁ

643:デフォルトの名無しさん
09/10/24 00:54:54
>>642
FORMATの書き方が古い。
まぁg77だから仕方ないのか。
f90で学びなおせばFORMATもそれほどつらくない。


644:デフォルトの名無しさん
09/10/24 03:17:58
Fortran77では動的メモリ割付け(allocate)は使えないの?

645:デフォルトの名無しさん
09/10/24 03:48:06
>>644
使えない。

646:デフォルトの名無しさん
09/10/25 00:06:12
>>644
大きくCOMMONを取って、必要に応じて自分で切り出して使うんだ。


647:デフォルトの名無しさん
09/10/25 00:56:39
>>644
大きくCOMMONがとれない環境なのです。
allocateしないと最大メモリまで使えない。

648:デフォルトの名無しさん
09/10/25 16:16:54
>>647
むかし過渡期の技術としてダイナミックコモンというのがあった。

ひょっとしたらコンパイラのオプションにあるかもしれない。
その場合、普通のスタティックなコモンより大きく領域が取れるかもしれない。




649:デフォルトの名無しさん
09/10/27 14:20:53
>>646
そんなこと教えちゃらめ~

650:デフォルトの名無しさん
09/10/28 20:57:22
allocateを使うとパフォーマンスが落ちるって本当ですか?
実際に使われるサイズに関わらず?

651:デフォルトの名無しさん
09/10/29 00:56:45
>>650
多分誤解。
静的配列と比べるならば、それは実行時にアロケート処理するのだから余計な時間はかかるだろう。
しかし、それは計算時間に比べれば瑣末なはず。

POINTERで配列をとった場合は、メモリーの割付が連続したメモリー領域になるとは限らないので
最適化がバリバリなされず、ALLLOCATEでとった場合(連続にメモリーを取る)とくらべて
パフォーマンスが落ちる可能性があるとは言われている。


652:651
09/10/29 02:15:09
書き方が悪かった。
POINTERにALLOCATEしたときは連続にメモリーを取るだろうが、
POINTERには、ストライド付きのとびとびメモリーを指示させることもできるので、
最適化には制限が係ることがあるようである。



653:デフォルトの名無しさん
09/10/29 10:15:13
>>651,652
なる~。Fortran77で

i=10000
call hairetu(i)

subroutine hairetu(i)
integer i
real    data(i)

みたいな使い方で任意の大きさの配列data()をサブルーチン内で扱えるけど、
これがメモリ上でキチンと並んでいるとは限らない(とんだ部分
の取り扱いはOSがするのか?)からね。
77より後のallocatable属性は、出来るだけ連続して確保してね、の
おなじないというか願掛けと思えばいいのだろうな。

654:デフォルトの名無しさん
09/10/29 10:49:44
URLリンク(codepad.org)

moduleが使う変数や関数、サブルーチンを外部から指定したいのですが可能でしょうか?上のコードは間違ってますが雰囲気を掴んでもらえたらいいかなと思い載せました


655:デフォルトの名無しさん
09/10/29 21:41:04
>>651
じゃあもうallocate使わない理由はないな
コードも綺麗になるしな

656:デフォルトの名無しさん
09/11/02 01:28:57
FORTRAN2008では、メモリー連続を保障する contiguous の属性が導入されるようだ。

まだ2003も碌にコンパイラが無い時点で言っても鬼も大笑いだが。


657:デフォルトの名無しさん
09/11/02 01:52:59
>>653
FORTRAN95/2003 Explained 20.2.1 p.331
"A non-pointer array occupies a sequence of contiguous storage sequences 云々"
とあるので、ALLOCATABLE 配列や AUTOMATIC 配列は、連続メモリーが保障されているんじゃないかな。



658:デフォルトの名無しさん
09/11/02 06:43:35
英語をみると、連続した”複数の”保存領域を数珠つなぎに占有する、だけど、
まあ、自動配列も連続したメモリに確保しようとAllocateの時と同じ程度の努力はするよん、ということか。

配列全部が”一つの”連続したメモリ空間に収まるかどうかは、その瞬間のメモリ使用状況によるんだろうな。
大きめの計算機だと、一つのマシンではOSやI/O以外の部分は排他的に使えるから問題は少ないのだろう
といってみるテスト。

659:デフォルトの名無しさん
09/11/02 11:58:03
>>658
いや、完全にひとつの連続したメモリー領域なんで内科医?
努力義務ではなくて、必須義務だと思う。


660:デフォルトの名無しさん
09/11/03 19:38:25
というか、contiguous と sequenceって意味的に似てるよなw
もう少し明確に書いて欲しいもんだ(書いてるのかもしれんが)

661:デフォルトの名無しさん
09/11/04 03:39:24
・・・べっ別にあんたのために連続したメモリ領域を確保してるわけじゃないんだからね、
といったところか。努力はするしアテにしてくれてもいいけど、絶対じゃないぞなもし。

662:デフォルトの名無しさん
09/11/04 04:25:42
フォートランってフォーミュラ・トランスフォーマーっていうくらいだから、
科学計算以外には向いていないのか?

663:デフォルトの名無しさん
09/11/04 07:40:31
大昔は、他に言語がなかったから、なんでもFortranで書いてた。

現在では、向いてる向いてない以前に、言語として古い。

664:デフォルトの名無しさん
09/11/04 12:39:17
そういえばなんでトランスフォーマーなんだろう

数式を変形せずになるべくそのままの書き方でコードにできるのが
Fortranのメリットだったはずなのに。
今では使っちゃいけないとされる文関数なんてモロその名残だよね。

665:デフォルトの名無しさん
09/11/04 12:56:16
>>663
古いゆえにコンパイラもライブラリも枯れていて、まずバグはない
最適化も一番今の所進んでいる

というわけで信頼性と速度が要求される局面で現在も使われているわけだ

666:デフォルトの名無しさん
09/11/04 13:02:36
トランスフォーマーじゃなくてトランスレータだぜ。
FORTRAN以前は演算式もアセンブリで書かなければならなかった、
数式そのものでプログラムを記述出来る事は画期的だったんだよ。

667:デフォルトの名無しさん
09/11/04 13:47:03
= で代入、という規則をプログラミングの世界に普及させてしまった
張本人でもあるな。

668:デフォルトの名無しさん
09/11/04 17:57:51
.eq.とか.and.とか使えるのはCよりも好き

669:デフォルトの名無しさん
09/11/04 20:30:22
C++も and や or 使えるわい

670:デフォルトの名無しさん
09/11/04 20:50:32
>>668
.eq.は==のほうが見やすくない?
.and.と.or.も早く&&と||が使えるようになって欲しいわ

671:デフォルトの名無しさん
09/11/05 00:25:28
.EQ. はともかく .AND. とか .OR. は変な記号より文字の方がわかりやすいと思うがなぁ

672:デフォルトの名無しさん
09/11/05 01:44:31
>>671
賛成。
等号不等号は数学記号のほうがいいが、.AND. .OR. はこっちのほうがいい。
&&、||は見てくれからしてイマイチ。
歴史的にもEBCDICに無い記号だから、FORTRANに入ろうはずも無かった。
APL端末使えばいいのかも知れんがw


673:デフォルトの名無しさん
09/11/05 05:16:55
コンマが
10進数浮動小数点の小数点、理論演算子の飾り、structureの区切り
で使われるからメンドイw。

目の慣れだろうな。自分は .AND. .OR. の方がみやすいけど。
スペース無しだとみにくいけど。

674:デフォルトの名無しさん
09/11/05 13:53:38
>>671,672
これはもう好みの問題だろうなぁ。
自分は記号のほうが、英数字に対して違いが際立つんで好きだな。
あと、文字数が少ないのもいい。.AND.は5文字もあるし。

>>673
>10進数浮動小数点の小数点、理論演算子の飾り
揚げ足じゃないが、これはコンマじゃなくてピリオドじゃ

675:デフォルトの名無しさん
09/11/05 14:16:56
>>674
C言語は特殊事情があるんだよ

史上最も記号が多い言語はAPLで、未だにこの言語を超えるものは
出ていないが、第二位にC言語となっている(今はC++)

C言語はとにかく予約語をできるだけ減らしたくて、多くのワードを記号に
したと言われている

そのためC言語の予約語はわずか32個しかない

C++はCより記号が多いにも関わらず予約語はかえって増えた
C++0xでは更に増える

676:デフォルトの名無しさん
09/11/05 17:40:23
そりゃ言語に機能をてんこもりにしてるんだから
記号も予約語も増えるよなぁ

FortlessはUnicodeで演算子を定義できるらしいから、もしかしたら使える記号の
数ではAPLを越えるかもw

677:デフォルトの名無しさん
09/11/05 17:41:11
Fortressだったorz

678:デフォルトの名無しさん
09/11/05 19:23:08
Fortressは死んだんじゃなかった?

Sun・・・(´;ω;`)ブワッ

679:デフォルトの名無しさん
09/11/05 19:28:56
Guy Steele が blog 始めたりとかしてるけど...
URLリンク(projectfortress.sun.com)

680:デフォルトの名無しさん
09/11/06 02:10:17
>>675
そういわれるとFortranは0-9,a-Z以外に使う文字は少ないね。
{}[]@^_%~`;<>?|\ は使わないでも済むね。[]%\ は使う状況はあるけど代替があるし。
固定書式で継続行に使うとかしないと使わない文字が多い。
$は微妙。規格外だけどたまに使う。#はプリプロセスしてれば使うなけど標準ではないな。

681:デフォルトの名無しさん
09/11/06 08:04:00
だからEBCDICだと

682:デフォルトの名無しさん
09/11/06 11:19:25
>>680
ASCIIコードを使ってるのは、ミニコンとかWSとかパソコンとかしょぼいマシンだけだったんだよ。
F90の規格に、やたらと固有文字コードとASCIIコード変換とかあるのはそのため。
小文字が端末から使えないことも多かったし。

数値フォーマットもバラバラだったから、数値の基数や有効ビット数を尋ねる関数もそろってる。



683:デフォルトの名無しさん
09/11/06 12:09:53
>>682
System/360にもASCIIとの切り替えスイッチは付いてたんだけどなw

684:デフォルトの名無しさん
09/11/06 12:19:22
>>683
そうなのかwww




685:デフォルトの名無しさん
09/11/07 02:57:41
ぱっとキーボードをみて・・・必須なのは
0-9 A-Z .,()=+-*/'
だけか。見落としなければ46文字。Spaceが必須でないところがなんともイカす。
使われる文字数が少ないのはパンチカード時代があるからだろうな。
Viで編集しやすいわけだw

686:デフォルトの名無しさん
09/11/07 08:52:27
C言語だってパンチカード時代に設計されたんだよ
scanf()なんてあれはパンチカード時代の名残
とにかくタイプ量を減らしたくて多くの予約語を演算子に変えた

687:デフォルトの名無しさん
09/11/07 10:01:38
それは違う。printfやscanfは、Fortran用のランタイムルーチンを流用したなごり。
C言語の発祥は主にミニコン文化圏で、パンチカードじゃなく、紙テープとテレタイプが主流。
記号だってEBCDICにないものを多用するし(そのせいでトライグラフなんてものも
できたりしたがw)

688:デフォルトの名無しさん
09/11/09 03:54:20
creat(笑)

689:デフォルトの名無しさん
09/11/09 09:36:45
>>685
機能の代替がない、という点では:の添字範囲指定もかな、ってあれ
1以外から範囲指定可なのはF77でも出来たっけ?

690:デフォルトの名無しさん
09/11/09 09:37:57
標準の機能として、という意味ね。

691:デフォルトの名無しさん
09/11/09 23:59:27
>>689
77では配列の宣言のところだけだったか、文字列では部分文字列の指定に使えた。
あとフォーマットでもコロンが使えたはず。


692:デフォルトの名無しさん
09/11/11 02:45:21
character*7 mojiretu
mojiretu = 'smtwtfs'
write(*,*) mojiretu
mojiretu(2:6) = 'sssss'
write(*,*) mojiretu

みたいな使い方の事だね。規格が30年くらい前だけど、その後のベクトル表現の匂いがする。
そういう文字列取扱いの需要があったからだろうけど、先をいってたんだな・・・たぶん。

フォーマット中の例が思いつかなかった。

693:デフォルトの名無しさん
09/11/30 16:44:28
今後GPGPU系のスパコンが主流になってきたら、いっそCに乗り換えたほうがいいのかな・・・
もうしばらくは様子見だけど

そういえば、CUDAが徐々にFortranに対応してきてるようだけど、使ってる人いる?

694:デフォルトの名無しさん
09/12/01 00:04:39
>>693
PGI が CUDA 対応 Fortran2003 を出荷し始めたみたいだけど、誰か使ってないのかな?

GPGPU も昔のアレイプロセッサとよく似ているから、すぐ廃れて終わるとか言う話も聞いて
なんなんだかなーw 


695:デフォルトの名無しさん
09/12/01 21:46:47
PGI頑張ってるよな
まぁ、うまくいけばIntelの二番煎じなポジションから脱却できるしな

696:デフォルトの名無しさん
09/12/14 01:04:11
フォートランを研究室で指定されて使おうとしてるんですけど
>>2
URLリンク(www.salfordsoftware.co.uk)
のどこからダウンロードするのかみつからないんですけど教えてくれますか?お願いします

697:696
09/12/14 01:05:55
間違えました
すみません

698:デフォルトの名無しさん
09/12/17 14:58:51
URLリンク(www.ftc.gov)
Intel secretly redesigned key software, known as a compiler,
in a way that deliberately stunted the performance of competitors’CPU chips.

だってさ

699:デフォルトの名無しさん
09/12/18 00:24:24
いろいろ考えるもんだねー

700:デフォルトの名無しさん
09/12/18 22:51:01
Fujitsu製Fortran&C Package Windows版が製造・発売中止となったため、
今後Windows XPの提供が終了すると新しいPCに使用出来なくなるので
新たなコンパイラーと数値計算ライブラリを探しています。
どなたかお勧めのメーカを教えてください。
条件は、Windows Vista & 7上で動作するコンパイラーとライブラリで
リーズナブルなもの。
パソコンは私1人で70台くらい使っています。
(Fujitsu製のライセンスは使用する人数にかかり、
PCの台数には関係なかったので重宝していたのですが。)
よろしくお願いします。


701:デフォルトの名無しさん
09/12/18 23:31:05
富士通がPC用Fortranやめるなら、OEMやってるアメリカのLaheyはどうすんだろ?


702:デフォルトの名無しさん
09/12/19 15:46:30
>>698
HPCが盛んになりつつある時代にこんなことやってたら
某機関に目を付けられて即死なんじゃw

703:デフォルトの名無しさん
09/12/20 05:34:39
某機関とは話をつけてからやらかしたのではw

704:デフォルトの名無しさん
09/12/21 18:27:54
FORTRAN使いなんかホントにいるのかいな・・・

705:デフォルトの名無しさん
09/12/22 10:23:48
cygwin、MPICH2でCompaq Visual fortran 6.6 を動作させる方法があれば教えてください。
MPICHのインストール時に set F90=~/Microsoft Visual Studio/DF98/Bin/f90
としてみたのですが、認識しませんでした。

706:デフォルトの名無しさん
09/12/26 10:50:24
あっそう

707:デフォルトの名無しさん
10/03/28 18:31:28
今,Intel Visual Fortran と PGI Visual Fortran のどちらを買おうか迷っています。
皆さんのお勧めはどちらですか?

実行速度とか,GPGPUとか,並列化とか,Visual Studio 2008 に統合してコーディングしているときの
使い勝手の良さとか,コンパイラの厳密さとか(← 変数宣言部で配列を a(3) と宣言しているのに,
実行部で a(4) = 1 と書いたとき,IVF のコンパイラはエラーを出してくれたけど,PVF のほうは
エラーなしでコンパイルが成功してしまった),その他色々な面でどうでしょう。


708:デフォルトの名無しさん
10/03/28 21:32:36
個人的には PGI はあまり信用していない
つか、Windows 環境で Fortran が信用できていない
# Intel は, まぁ, ましな部類だと思う


709:デフォルトの名無しさん
10/03/29 00:21:06
>>707
>実行部で a(4) = 1 と書いたとき,IVF のコンパイラはエラーを出してくれたけど,PVF のほうは
>エラーなしでコンパイルが成功してしまった),その他色々な面でどうでしょう。
66時代は整合配列が未整備だったので、サブルーチンとかの先では配列サイズを適当に固定して
はみ出して使うことがよくあった。歴史的事情から一概にエラーにするわけにもいかんのよ。

コンパイラのオプションとかで厳格な判断ができるはずだと思うから、調べてみてちょ。
IntelFortranにも90,95,2003毎の規格違反警告オプションが有る。

そういえば最近のPGI Fortranは米国大学研究機関に所属であれば、Win用が無償で使えたような?
キャンペーンはもう終わったかもしれないが。



710:デフォルトの名無しさん
10/03/29 03:32:41
IVF って GPGPU ができるのですか?

711:デフォルトの名無しさん
10/03/29 12:08:17
>>710
できない。

CUDAのAPIをCALLするという意味でならできなくも無い。
Fortranのラッパーを書くオープンソースなプロジェクトが動いていたはず。
GPU側で実行する部分は無論Cで用意するのだとおもうが。



712:707, 710
10/03/29 21:38:52
>>708-709 >>711
レスありがとうございました。参考になりました。

713:デフォルトの名無しさん
10/03/30 03:50:29
>>707 コンパイラの厳密さとか(← 変数宣言部で配列を a(3) と宣言しているのに,実行部で a(4) = 1

インテルのは添字範囲チェックが甘いよね。柔軟ともいえるけど・・・。
コンパイル時の警告のよさ?では gfortran -Wall あたりがいちばんかなぁ
以前はDEC系でいいのがあったんだけどね。さすがに今では。

714:デフォルトの名無しさん
10/03/31 06:17:02
(メイン階層で)
real a(10)
call hoge(a)

subroutine hoge(a)
real a(2)
a(10) = 1.0

というのがあって、スルーする大人がインテル。実際メイン階層では配列a(10)の内容に問題ないわけだ。
文句いうのがGfortranやFujitsuやPGIやIBMやNEC

715:デフォルトの名無しさん
10/03/31 16:56:36
>>714
そのsubroutineはモジュールじゃない、普通の外部サブルーチンという前提だよね
a(11)=1.0をやるとエラーになる?

716:デフォルトの名無しさん
10/04/01 02:37:19
>>715
そ、ただのSubroutine.
Module は値の追跡が面倒臭いし、コンパイル時に順番が関係するし、
Commonと同じような奇妙な振舞をする事もあるので自分では使わない。なれると便利らしいけどね。

a(11)=1.0
そのものにたいしては、コンパイル・実行時ともに文句をいわなかった。(以下ぜんぶIntel.他のはしらない)。
でも実行時にはcall hoge()のあとに a 以外の変数が壊れたりw、 hoge() 内で Invalid なんたららが
でたり・・コンパイルオプションでも変わる。何事もなかったかのように実行終了することもあるw
Intel Fortran は速度的には良いコンパイラだとおもうけど、
開発中に使うには危険な香りがするのでふだんはgfortran。
Intel のでも Visual がつく方はまだいいのかなあ? HPはもうDEC系譜のFortranは終了だよね。

717:デフォルトの名無しさん
10/04/01 11:50:28
>>716
MODULEつかえよw
型チェックとか便利だろ。
場合によっては最適化度もあがるはず。

まぁカスケード型のリコンパイルの嵐が起きるのがウザイのはわかるが、
あれもF2008でSUBMODULEが導入されてなんとかなる。


718:デフォルトの名無しさん
10/04/01 13:34:16
2008興味あるけど、使ってる人が周りに誰もいない・・・
というかググってもあんま情報ない気が
どこで勉強すればいいの?

719:デフォルトの名無しさん
10/04/01 14:28:48
716 の添字範囲うっかりさんはIntelだけの話ね。
他のはコンパイルエラーでそれ以上進めなかったから。

>>717
ある程度なれてマイModuleつくるともう戻れないくらいイイらしいね。
麻薬のようにもう抜けれなくなる、わけではないのだろうけどw
でも不慣れなときにコンパイルするだけにかなりもがいた
つらい経験をしてしまったので敬遠中。でもそのうち使うと思うよ!
>>718
F2008って規格の部分だけでも読めないのかな?
ベンダが対応するとかしないと商業レベルの本は出ないと思うので
(出ても日本語のがでるのかはあやしいが)せめて予習wくらいはしておきたい。

720:デフォルトの名無しさん
10/04/01 16:57:44
>>719
初心者だけど動的割付配列のためにモジュール使ってます
やっぱりコンパイルエラーやらは多いですね

721:デフォルトの名無しさん
10/04/02 01:32:14
>>718
それはたぶんF2003。
まだ完全対応コンパイラがCRAYしか出してない。
勉強の手始めは、PDF直リンだが
URLリンク(www.itscj.ipsj.or.jp) 
The New Features of Fortran 2003
URLリンク(www.ipc.bas.bg)

F2003は英文なら、なんぼか教科書もではじめている。しかし2003部分は1章程度だったりでいまいち。


F2008は
The new features of Fortran 2008
fURLリンク(ftp.nag.co.uk)
こっちはまだ規格の最終ドラフトができた段階で、正式規格ではない。最終ドラフトはただで見れる。
ここで↓
ISO規格の議論をしている本家
URLリンク(www.nag.co.uk)


722:デフォルトの名無しさん
10/04/02 08:05:25
ナグさんちが本家なのか

723:デフォルトの名無しさん
10/04/02 09:13:00
NAGが本家なのかよw

724:デフォルトの名無しさん
10/04/02 10:58:31
本家っつっても書記だけど、まぁ議事録的情報はここに集約されてるな。


725:デフォルトの名無しさん
10/04/02 12:15:07
softekみたいなもんか?w

726:デフォルトの名無しさん
10/04/06 06:01:13
教えて頂きたいのですが、
2次元配列の一部分だけをサブルーチンに送った場合、その部分的な要素だけを
繋げた別の配列が一時的に作られて処理をされるのでしょうか?

例えば、主プログラム冒頭で
integer :: x(10 , 20)
とした場合、メモリ上に10 * 20 の配列が出来ますよね?
これを call hoge( x(3:8 , 12:19) , ... ) とすると、
6 * 8 の一時的な x’ が別途メモリ上に作られたうえで
それがサブルーチンへ送られるのでしょうか?

膨大な配列を扱うので、なるべく効率的なプログラムを書きたいのです.
勉強し始めの者なので、トンチンカンなことを言っていたら恐縮です...

727:デフォルトの名無しさん
10/04/06 10:22:37
>>726
そういう連続していないのはcopy in - copy outで中間のテンポラリ配列が暗黙に作られる。

一次元に還元したときに連続している場合は、コピーを作るかどうかは場合によると思う。




728:デフォルトの名無しさん
10/04/06 17:30:33
データがシーケンシャルだって指示するオプションあったような?
いずれにしても、call hoge( x(3:8 , 12:19) , ... ) だと「一次元に還元したときに連続」していないから、コピーは避けられないだろうな

729:デフォルトの名無しさん
10/04/06 17:55:20
うひょー!Fortran!!11

730:デフォルトの名無しさん
10/04/06 18:10:43
Fortran2011の策定が始まったのかと思った
紛らわしいぞw>>729

731:726
10/04/07 07:28:05
>>727, 728
なるほど。どうもありがとうございます。
 
余計なメモリを消費させないためには、
call hoge( x(3:8 , 12:19) , ... ) は避け、
call hoge2( x, 3, 8, 12, 19, ...) などとして、サブルーチンへは x のまま渡して
実際に操作したい配列要素番号も別に指定するといった方法が良いって理解でよいでしょうか

もう一点質問があるのですが、
call hoge2( x, ... ) と call hoge2( x(:), ... ) は全く同じものでしょうか?
コンパイラーによりけりですか?


732:デフォルトの名無しさん
10/04/07 19:52:50
>>731
あくまで自分の理解だけど
>理解でよいでしょうか
yes
>全く同じものでしょうか?
yes

733:デフォルトの名無しさん
10/04/08 00:15:00
はとやまwwwwwwwww

天然バカwwww



734:733
10/04/08 00:16:10
すまん、笑いすぎて、誤爆したwwwwww


★「政治家がばかでは国もたぬ」=公務員研修の訓示で鳩山首相

・鳩山由紀夫首相は7日の国家公務員合同初任研修開講式で訓示し、入省したばかりの
 新人を鼓舞したが、その中で「政治家がばか者の集団では(国は)もたない」などと
 脱線気味に発言する場面があった。

 首相は弟である鳩山邦夫元総務相が政治家を志した際、大蔵事務次官を経て
 政界入りした父威一郎元外相が「政治家なんてものは物ごいをする情けないばか者だ」と
 反対した話を紹介。「父親は役人だったことに誇りを感じていた」と語る一方で、
 「トップの首相が大ばか者であれば、そんな国がもつわけがない」と繰り返した。

 首相としては、政治主導への決意を示しつつ鳩山内閣の優秀さを強調したかったようだが、
 指導力不足や自らの発言をめぐる迷走が指摘されているだけに、新人公務員も複雑な
 表情だった。
 URLリンク(www.jiji.com)

735:デフォルトの名無しさん
10/04/08 08:05:38
スレタイも読めないバカ

736:デフォルトの名無しさん
10/04/08 11:25:29
>>735
鳩山さんこそスレタイ見てください。


737:デフォルトの名無しさん
10/04/08 17:04:56
>>736
バカ

738:デフォルトの名無しさん
10/04/09 23:07:01
このスレ2000でも90でも77でも66でもなく、未だにIVかよ。

739:デフォルトの名無しさん
10/04/17 01:15:02
    LOOPY = 737
    PRINT *, LOOPY
END



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