このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
FORTRAN使いが優しくコメントを返しますが、
お礼はFORTRANの布教と初心者の救済と次期Fortran2008規格でのCOMEFROM文採用をお願いします。
●注意事項
・質問する前にGoogle等の検索サイトで検索しましょう。
・回答者にわかりやすい様に、質問内容はできる限り詳しく書きましょう。
・エラーの場合は起きた状況、環境(OS・コンパイラ・バージョン)、エラーメッセージも詳しく書きましょう。
●前スレ
くだすれFORTRAN(超初心者用)その5
http://toro.2ch.net/test/read.cgi/tech/1269704830/
●過去スレ
くだすれFORTRAN(超初心者用)その4
http://pc12.2ch.net/test/read.cgi/tech/1232789521/
くだすれFORTRAN(超初心者用)その3
http://pc11.2ch.net/test/read.cgi/tech/1196384126/
くだすれFORTRAN(超初心者用)その2
http://pc11.2ch.net/test/read.cgi/tech/1164121236/
くだすれFORTRAN(超初心者用)
http://pc8.2ch.net/test/read.cgi/tech/1138063703/
探検
くだすれFORTRAN(超初心者用)その6
■ このスレッドは過去ログ倉庫に格納されています
2012/08/16(木) 20:58:00.31
477デフォルトの名無しさん
2014/06/16(月) 10:00:44.78ID:juShtlay cuda fortranについて初歩的な質問なのですが、
PGI workstationで、-cublasとオプションを付けてコンパイルしようとすると、
『fatal error LNK1104: cannnot open file 'libcublas.lib'』とエラーが出てしまいます。
この場合、どうしたら良いですかね?
どなたか教えてくださると助かります。
PGI workstationで、-cublasとオプションを付けてコンパイルしようとすると、
『fatal error LNK1104: cannnot open file 'libcublas.lib'』とエラーが出てしまいます。
この場合、どうしたら良いですかね?
どなたか教えてくださると助かります。
478デフォルトの名無しさん
2014/06/16(月) 10:13:18.23ID:3pyBJ4C4479デフォルトの名無しさん
2014/06/16(月) 15:38:44.47ID:juShtlay >>478
探して見たところ、'libcublas.ipl'、'libcublasemu.lib'という名前のファイルしか見つかりませでした。
そこで、これらのファイルが保存されているフォルダのパスを追加してコンパイルしたところ、
『error lnk2019: unresolved external symbol referenced in function』
というようなエラーが出てきてしまったのですが、
どうすれば良いか教えていただけませんか?
探して見たところ、'libcublas.ipl'、'libcublasemu.lib'という名前のファイルしか見つかりませでした。
そこで、これらのファイルが保存されているフォルダのパスを追加してコンパイルしたところ、
『error lnk2019: unresolved external symbol referenced in function』
というようなエラーが出てきてしまったのですが、
どうすれば良いか教えていただけませんか?
480デフォルトの名無しさん
2014/06/16(月) 15:50:37.89ID:Q+b6M39D481デフォルトの名無しさん
2014/06/16(月) 16:27:09.31ID:juShtlay コード中の'cublas'を'cublasemu'に変更し、
'-lcublas'を'-lcublasemu'に変更してコンパイルしたところ、
『unable to open MODULE file cublasemu.mod
compilation aborted』
と出てしまいました。。。
'-lcublas'を'-lcublasemu'に変更してコンパイルしたところ、
『unable to open MODULE file cublasemu.mod
compilation aborted』
と出てしまいました。。。
482デフォルトの名無しさん
2014/06/16(月) 16:43:59.97ID:vxzjg7XS483デフォルトの名無しさん
2014/06/16(月) 16:54:43.67ID:juShtlay >>482
元のコードでやってもやはり出てしまいますね。
元のコードでやってもやはり出てしまいますね。
484デフォルトの名無しさん
2014/06/16(月) 17:46:47.99ID:vxzjg7XS >>483
use cublasemuになっていませんか?
use cublasemuになっていませんか?
485デフォルトの名無しさん
2014/06/17(火) 09:43:20.11ID:W5zFtzyB >>484
いえ、ちゃんとuse cublasってなっています。
いえ、ちゃんとuse cublasってなっています。
486デフォルトの名無しさん
2014/06/17(火) 13:19:25.73ID:gUXRuUGZ use cudafor
use cublas
が指定されている
-Mcudaまたは-Mcuda:4.0あるいは-Mcuda=emu
unresolved external symbolと言われたら
libが足りないので-lで追加
*.libがないと言われたら
-Lなどでパス追加
*.modがないと言われたら
-Iでパス追加
参考
http://www.softek.co.jp/SPG/Pgi/TIPS/opt_cudaF.html
http://www.softek.co.jp/SPG/Pgi/TIPS/public/accel/cublas40.html
use cublas
が指定されている
-Mcudaまたは-Mcuda:4.0あるいは-Mcuda=emu
unresolved external symbolと言われたら
libが足りないので-lで追加
*.libがないと言われたら
-Lなどでパス追加
*.modがないと言われたら
-Iでパス追加
参考
http://www.softek.co.jp/SPG/Pgi/TIPS/opt_cudaF.html
http://www.softek.co.jp/SPG/Pgi/TIPS/public/accel/cublas40.html
487デフォルトの名無しさん
2014/06/17(火) 16:58:12.46ID:W5zFtzyB >>486
-Lパスでディレクトリを指定して、-cublasemuをつけてコンパイルしたところ、
"libcublasemu.lib : error lnk2019: unresolved external symbol referenced in function"
が、ものすごい数のが出てきたのですが、どうしたらいいですかね?
一個ずつ-lで追加していくしか無いのでしょうか。
-Lパスでディレクトリを指定して、-cublasemuをつけてコンパイルしたところ、
"libcublasemu.lib : error lnk2019: unresolved external symbol referenced in function"
が、ものすごい数のが出てきたのですが、どうしたらいいですかね?
一個ずつ-lで追加していくしか無いのでしょうか。
488デフォルトの名無しさん
2014/06/17(火) 17:24:37.11ID:AhgC7kyl cublas使わなければ普通に動くの?
489デフォルトの名無しさん
2014/06/18(水) 11:22:33.36ID:nvOujYC+ >>488
はい。cublasが関わるところを全てコメントアウトしたところ、動きました。
はい。cublasが関わるところを全てコメントアウトしたところ、動きました。
490デフォルトの名無しさん
2014/06/18(水) 18:11:03.14ID:s+RQ8hIL >>489
可能な限り少しずつコメントアウトを外していき
その都度コンパイルが通るようにオプションを調整してみてください
最初はuse cublasだけなど
大量のエラーが少しずつ出ることを期待します
cublasは呼び出し方法が旧いものや新しいもので3種あるようですが
呼び出し方と CUDA toolkit のバージョン指定はあっていますか?
pgi cuda Fortranはデバッグ用にGPUを使わないエミュレートモードが用意されています
コンパイルオプションとリンクするライブラリの両方で切替えるようです
どちらを使用していますか?
cublasemuはエミュレートモード用で
オプションに-Mcuda=emuを併せて指定します
可能な限り少しずつコメントアウトを外していき
その都度コンパイルが通るようにオプションを調整してみてください
最初はuse cublasだけなど
大量のエラーが少しずつ出ることを期待します
cublasは呼び出し方法が旧いものや新しいもので3種あるようですが
呼び出し方と CUDA toolkit のバージョン指定はあっていますか?
pgi cuda Fortranはデバッグ用にGPUを使わないエミュレートモードが用意されています
コンパイルオプションとリンクするライブラリの両方で切替えるようです
どちらを使用していますか?
cublasemuはエミュレートモード用で
オプションに-Mcuda=emuを併せて指定します
491デフォルトの名無しさん
2014/06/20(金) 16:00:17.10ID:utkwlJ0p Cのatoiとかatofのように,文字列としての数字の列を
integerなりrealの値に変換してくれる函数はあるでしょうか。
当方は,MinGWのgfortran95を使っています。
integerなりrealの値に変換してくれる函数はあるでしょうか。
当方は,MinGWのgfortran95を使っています。
492デフォルトの名無しさん
2014/06/20(金) 19:25:02.85ID:bxod4dQ6 >>491
内部ファイルを使うのがセオリー
NAG Fortran入門 19.5 数値と文字の変換を行う方法
ttp://www.nag-j.co.jp/fortran/FI_18.html#ConvertingBetweenNumbersAndStrings
内部ファイルを使うのがセオリー
NAG Fortran入門 19.5 数値と文字の変換を行う方法
ttp://www.nag-j.co.jp/fortran/FI_18.html#ConvertingBetweenNumbersAndStrings
493デフォルトの名無しさん
2014/06/20(金) 21:53:29.14ID:utkwlJ0p >492
ありがとうございます。
こういう裏ワザがあったのですね。
さっそく使わせていただきます。
ありがとうございます。
こういう裏ワザがあったのですね。
さっそく使わせていただきます。
494デフォルトの名無しさん
2014/06/21(土) 17:36:05.91ID:L2qICpES 裏ワザというかFORTRAN77の頃からあったし、
66時代にはENCODE/DECODE関数が用意されていたんだがな。
マニュアルをよく読めば、内部ファイルの項目が昔から書いてある。
66時代にはENCODE/DECODE関数が用意されていたんだがな。
マニュアルをよく読めば、内部ファイルの項目が昔から書いてある。
495デフォルトの名無しさん
2014/06/21(土) 20:05:31.04ID:6Ae9RUEd >464
そうでしたか。なにしろわたしが FORTRANを学生時代に始めた
ころはFORTRAN IVのころで80桁のパンチカードにパンチした
カードデックを窓口の届けると2日程で,棚にカードとラインプリ
ンタで打ち出した結果がおいてあるという時代(東大の計算センター
にあったHITAC 5020)のころで,FORTRAN77の出る前
ダイクストラの構造化プログラミングが騒がれ始めて,
カーニハンとリッチーの『ソフトウエア作法』をよんで,
構造化出来るRATFORを大学にあった小さなコンピュータで
実験しているころからの進歩を知りませんでした。
その後,CおよびC++に興味が移りFROTRANをご無沙汰してい
たのですが,最近のFORTRANで128bit処理ができることを
知り,まいもどってきた次第です。
市販のfortran90,95の入門書を見てみたのですが,見当ら
なかったので,質問したしだいです。
そうでしたか。なにしろわたしが FORTRANを学生時代に始めた
ころはFORTRAN IVのころで80桁のパンチカードにパンチした
カードデックを窓口の届けると2日程で,棚にカードとラインプリ
ンタで打ち出した結果がおいてあるという時代(東大の計算センター
にあったHITAC 5020)のころで,FORTRAN77の出る前
ダイクストラの構造化プログラミングが騒がれ始めて,
カーニハンとリッチーの『ソフトウエア作法』をよんで,
構造化出来るRATFORを大学にあった小さなコンピュータで
実験しているころからの進歩を知りませんでした。
その後,CおよびC++に興味が移りFROTRANをご無沙汰してい
たのですが,最近のFORTRANで128bit処理ができることを
知り,まいもどってきた次第です。
市販のfortran90,95の入門書を見てみたのですが,見当ら
なかったので,質問したしだいです。
496デフォルトの名無しさん
2014/06/21(土) 22:49:19.55ID:jwjy0CXq はろけくも来つるものかなフォートラン
あっ季語がない
あっ季語がない
497デフォルトの名無しさん
2014/06/24(火) 20:49:58.43ID:vNnfb12N Gfortran 使ってるんだが、データを読み込ませる際、2行ごとにデータを読み込ませることって可能?
498デフォルトの名無しさん
2014/06/25(水) 01:47:13.51ID:2uAyyXu5 素直に全部読みなさい
変数に入った値は、必ず使えとも使うなとも言われてないだろう
変数に入った値は、必ず使えとも使うなとも言われてないだろう
499デフォルトの名無しさん
2014/06/26(木) 00:45:30.86ID:oXHKxD2l まぁ空のread文で1行飛ばせるけどな。
Fortmatの/でも行けたっけかな?曖昧みー
Fortmatの/でも行けたっけかな?曖昧みー
500デフォルトの名無しさん
2014/06/26(木) 01:01:48.05ID:pqUjp/UA awkなりsedなりで一行飛ばしの中間ファイル作って、それをデータファイルにするとかじゃだめなの?
入力関係でつまづくなら、fortranにあわせたファイルを作成する方が早いのではと思ってしまう。
バイナリデータだとテキストみたいにいかないのか。バイナリデータだったらごめん。
入力関係でつまづくなら、fortranにあわせたファイルを作成する方が早いのではと思ってしまう。
バイナリデータだとテキストみたいにいかないのか。バイナリデータだったらごめん。
501デフォルトの名無しさん
2014/06/26(木) 08:16:37.95ID:MILdybit >>498->>500
レスどもです。直接n行ごとに読み込むという作業はできないみたいですね。
私も中間ファイルを作って…と思いましたが、読み込みデータをいじってはいけないらしく断念しました。
解決案は以下の通り、(n行ごとに読みたい場合)
If(mod(i,n) .eq. 0) then
Read(20,*) hoge(i)
Else
Read(20, *)
Endif
レスどもです。直接n行ごとに読み込むという作業はできないみたいですね。
私も中間ファイルを作って…と思いましたが、読み込みデータをいじってはいけないらしく断念しました。
解決案は以下の通り、(n行ごとに読みたい場合)
If(mod(i,n) .eq. 0) then
Read(20,*) hoge(i)
Else
Read(20, *)
Endif
502デフォルトの名無しさん
2014/06/26(木) 21:08:20.99ID:2skFYUOi 詰めないと使いにくくない?
i=1
do m=1, linenum
if(mod(m,n) .eq. 1) then
read(20,*) hoge(i)
i = i +1
else
read(20,*)
endif
enddo
i=1
do m=1, linenum
if(mod(m,n) .eq. 1) then
read(20,*) hoge(i)
i = i +1
else
read(20,*)
endif
enddo
503デフォルトの名無しさん
2014/06/27(金) 00:10:25.56ID:kJEq6I8z >>499の言うとおり、formatを'(i,5/)'とかにすれば良いのでは?
504デフォルトの名無しさん
2014/06/27(金) 00:38:41.62ID:iFH1F/Cx505デフォルトの名無しさん
2014/06/27(金) 00:42:32.62ID:P3Dz9sSW formatのスラッシュでskipできるぞ。
program test
implicit none
character(len = 132) :: text
open(10, file = 'test.f90')
1 read(10, '(a, /)', end = 999) text
print *, trim(text)
goto 1
999 stop
end program test
program test
implicit none
character(len = 132) :: text
open(10, file = 'test.f90')
1 read(10, '(a, /)', end = 999) text
print *, trim(text)
goto 1
999 stop
end program test
506デフォルトの名無しさん
2014/06/27(金) 01:05:20.13ID:iFH1F/Cx >>505
おお!スラがスキップすると言う指示内容なんですね。
おお!スラがスキップすると言う指示内容なんですね。
507デフォルトの名無しさん
2014/06/27(金) 02:12:24.88ID:P3Dz9sSW508デフォルトの名無しさん
2014/06/27(金) 09:18:57.76ID:F3h4qtWf 久しぶりにfortranのプログラム見たが、FORTRAN77の時代と違って気持ち悪い。
これならC++の方がまだいい。テンプレート関係を除けば。
でも、fortranは4倍精度計算ができるからなあ。
並列処理やGPGPUに対応したライブラリも出ているし。
まあ、年寄はfortranからMatlabに移行しているみたいだが。
これならC++の方がまだいい。テンプレート関係を除けば。
でも、fortranは4倍精度計算ができるからなあ。
並列処理やGPGPUに対応したライブラリも出ているし。
まあ、年寄はfortranからMatlabに移行しているみたいだが。
509デフォルトの名無しさん
2014/06/28(土) 00:46:11.64ID:PIVLw57u おじいちゃん。
あんま結論を急がない方がいい。
配列演算気持ちいい。PUREでELEMENTALなら最高。
4倍精度は精度は4倍だが計算時間は10倍超だから、
10倍の時間の合間にアルゴリズム見直した方が吉。
あんま結論を急がない方がいい。
配列演算気持ちいい。PUREでELEMENTALなら最高。
4倍精度は精度は4倍だが計算時間は10倍超だから、
10倍の時間の合間にアルゴリズム見直した方が吉。
510デフォルトの名無しさん
2014/06/28(土) 02:59:17.00ID:EHQFW5QP gccにもquadmathがあるんだからあまりFORTRANを高く評価しない方がいいよ
511デフォルトの名無しさん
2014/06/28(土) 13:41:05.28ID:1f0E4KM2 並列計算させてdoループの中でwrite文でファイル書き込みしたら中身の順番めちゃくちゃで泣きました。
どーにもなんないんですかね?
どーにもなんないんですかね?
512デフォルトの名無しさん
2014/06/28(土) 15:42:05.65ID:cJj78OR7 >>510
そもそもlibquadmathはFortranのために追加されたんだが
そもそもlibquadmathはFortranのために追加されたんだが
513デフォルトの名無しさん
2014/06/28(土) 16:56:46.35ID:DtEJ1AXR >>511
write文だけ逐次処理させるか、ループの外に出すしかないと思う。
write文だけ逐次処理させるか、ループの外に出すしかないと思う。
514デフォルトの名無しさん
2014/06/28(土) 22:06:02.07ID:mzWdk+zj >>509
はぁ。。。
配列演算気持ちいい、って何? それ。
C**なら行列演算クラスライブラリ作って、演算子オーバーロード使えば終わりじゃん。
まさか、行列積が「・」でできると言うんじゃないだろな?
>4倍精度は精度は4倍だが計算時間は10倍超だから、
>10倍の時間の合間にアルゴリズム見直した方が吉。
何言ってんだ?この馬鹿。
物理計算によっては4倍精度の計算が必要なの。計算時間やアルゴリズム
の問題じゃない。人の言ってることをそのまま受け売りするな。阿呆
はぁ。。。
配列演算気持ちいい、って何? それ。
C**なら行列演算クラスライブラリ作って、演算子オーバーロード使えば終わりじゃん。
まさか、行列積が「・」でできると言うんじゃないだろな?
>4倍精度は精度は4倍だが計算時間は10倍超だから、
>10倍の時間の合間にアルゴリズム見直した方が吉。
何言ってんだ?この馬鹿。
物理計算によっては4倍精度の計算が必要なの。計算時間やアルゴリズム
の問題じゃない。人の言ってることをそのまま受け売りするな。阿呆
515デフォルトの名無しさん
2014/06/28(土) 22:07:05.28ID:mzWdk+zj516デフォルトの名無しさん
2014/06/29(日) 00:26:55.37ID:S1guW8MB517デフォルトの名無しさん
2014/06/29(日) 10:07:26.16ID:zjmbmtCs libquadmathの中を覗いてみたら、x86版はFPU使ってるけどx64版はSSE2使ってるな
518デフォルトの名無しさん
2014/06/29(日) 12:17:10.06ID:eLJ+YA5h519デフォルトの名無しさん
2014/06/29(日) 12:46:18.15ID:eLJ+YA5h > C++なら行列演算クラスライブラリ作って、演算子オーバーロード使えば終わりじゃん。
> まさか、行列積が「・」でできると言うんじゃないだろな?
冗長だけど、〜すれば終わり、程度には書けますぜセンセー。
function dotp_r8(A, x) result(y)
double precision, intent(in) :: A(:,:), x(:,:)
double precision :: y( size(A,1), size(A,2) )
y = matmul(A, x)
end function
!----====----====----====----====----====----====----====
program test
interface operator(.dot.)
function dotp_r8(A, x) result(y)
double precision, intent(in) :: A(:,:), x(:,:)
double precision :: y( size(A,1), size(A,2) )
end function
end interface
double precision :: A(2,2), x(2,2), y(2,2)
A = reshape( (/1.D0, 1.D0, 1.D0, 1.D0/), (/2,2/) )
x = reshape( (/1.D0, 3.D0, 2.D0, 4.D0/), (/2,2/) )
y = A .dot. x
write (*, '(2F8.3)'), transpose(A); print *
write (*, '(2F8.3)'), transpose(x); print *
write (*, '(2F8.3)'), transpose(y)
end
> まさか、行列積が「・」でできると言うんじゃないだろな?
冗長だけど、〜すれば終わり、程度には書けますぜセンセー。
function dotp_r8(A, x) result(y)
double precision, intent(in) :: A(:,:), x(:,:)
double precision :: y( size(A,1), size(A,2) )
y = matmul(A, x)
end function
!----====----====----====----====----====----====----====
program test
interface operator(.dot.)
function dotp_r8(A, x) result(y)
double precision, intent(in) :: A(:,:), x(:,:)
double precision :: y( size(A,1), size(A,2) )
end function
end interface
double precision :: A(2,2), x(2,2), y(2,2)
A = reshape( (/1.D0, 1.D0, 1.D0, 1.D0/), (/2,2/) )
x = reshape( (/1.D0, 3.D0, 2.D0, 4.D0/), (/2,2/) )
y = A .dot. x
write (*, '(2F8.3)'), transpose(A); print *
write (*, '(2F8.3)'), transpose(x); print *
write (*, '(2F8.3)'), transpose(y)
end
520デフォルトの名無しさん
2014/06/29(日) 13:09:54.23ID:RUBiLoi5 クラスライブラリで演算子オーバーロードって・・・遅そう。
素人が書いたマクロじゃ最適化効かないでしょ。
ソースの見かけで書けたって意味ないの。
大体、高速行列演算ライブラリを自分で作れるくらいなら、四倍精度のライブラリ
も自作すればいい。昔の爺さん世代はよく倍精度・四倍精度自作ライブラリを自慢していたw
まぁC++のBlitzなんて10年以上前から夢を語ってノロノロ開発して
ようやく最近なんですけどね。
素人が書いたマクロじゃ最適化効かないでしょ。
ソースの見かけで書けたって意味ないの。
大体、高速行列演算ライブラリを自分で作れるくらいなら、四倍精度のライブラリ
も自作すればいい。昔の爺さん世代はよく倍精度・四倍精度自作ライブラリを自慢していたw
まぁC++のBlitzなんて10年以上前から夢を語ってノロノロ開発して
ようやく最近なんですけどね。
521デフォルトの名無しさん
2014/06/29(日) 14:46:16.10ID:qF+KN0J6522デフォルトの名無しさん
2014/06/29(日) 15:59:56.49ID:l4jNLVEs 並列化は普通に物理の数値計算につかうけど、、、
523デフォルトの名無しさん
2014/06/29(日) 17:26:15.54ID:rvrpBbGm >>519
あ、そう。matlabみたいに糞な「:」が好きなのね。もういいから、死んでね
お爺ちゃんからこんな言葉を言われたお前はすでに終わっている。
>>520
その通り。面倒くさかったから書かなかったけど。
とにかく、一時オブジェクトの生成と.消滅、データのコピーが頻繁におきる。
それを避けるために右辺値参照が使えるかどうか。でも行列乗算や線形連立代数方程式
を解く場合には使えないかも。まだ、やってみてないからわからんが。
作業用行列のポインタ値を管理するグローバルオブジェクトを使うと
上の問題は回避できるが、残念ながらマルチスレッドには対応できてない。
これをどのようにグローバルスレッド対応にしたらいいか、戦略が
立たない状態です。
あ、そう。matlabみたいに糞な「:」が好きなのね。もういいから、死んでね
お爺ちゃんからこんな言葉を言われたお前はすでに終わっている。
>>520
その通り。面倒くさかったから書かなかったけど。
とにかく、一時オブジェクトの生成と.消滅、データのコピーが頻繁におきる。
それを避けるために右辺値参照が使えるかどうか。でも行列乗算や線形連立代数方程式
を解く場合には使えないかも。まだ、やってみてないからわからんが。
作業用行列のポインタ値を管理するグローバルオブジェクトを使うと
上の問題は回避できるが、残念ながらマルチスレッドには対応できてない。
これをどのようにグローバルスレッド対応にしたらいいか、戦略が
立たない状態です。
524デフォルトの名無しさん
2014/06/29(日) 17:29:17.08ID:rvrpBbGm525デフォルトの名無しさん
2014/06/29(日) 17:34:36.24ID:qF+KN0J6526デフォルトの名無しさん
2014/06/29(日) 17:57:50.26ID:RUBiLoi5 David BaileyがFortran用とC++用の4倍、8倍、多倍精度ルーチン公開してた気がする。
http://crd-legacy.lbl.gov/~dhbailey/
http://crd-legacy.lbl.gov/~dhbailey/
527デフォルトの名無しさん
2014/06/29(日) 17:59:34.52ID:rvrpBbGm 間違えた
グローバルスレッド対応→スレッド対応
グローバルスレッド対応→スレッド対応
528デフォルトの名無しさん
2014/06/29(日) 21:18:38.95ID:UItnk67i529デフォルトの名無しさん
2014/06/29(日) 21:46:47.56ID:eLJ+YA5h はいはいソーデスネーでっかい一時領域作ってなにしてんでしょーねorz
pure で elemental とゆーと配列を引数に放り込むとその全要素に
関数定義された処理が適用される、各処理は独立なのでまとめるなり
並列化なりをコンパイラーに期待、かな。演算子全然関係ないしorz
過去のシサンガーとかもう辛いだけ。
どこまでも未来に生きてください、Fortran スレになんか戻らないでください。
>>521
出力の順序だけ重要ならバッファして後から並べ替えるとか
浮動小数点演算的に結果を変えられないなら仕方ないかもだが
だって人口少ないし交流少ないし機会もないし意味すらないかもしれない、
たまに発言すれば馬鹿にされるから凄い人しか残らないわけで。
pure で elemental とゆーと配列を引数に放り込むとその全要素に
関数定義された処理が適用される、各処理は独立なのでまとめるなり
並列化なりをコンパイラーに期待、かな。演算子全然関係ないしorz
過去のシサンガーとかもう辛いだけ。
どこまでも未来に生きてください、Fortran スレになんか戻らないでください。
>>521
出力の順序だけ重要ならバッファして後から並べ替えるとか
浮動小数点演算的に結果を変えられないなら仕方ないかもだが
だって人口少ないし交流少ないし機会もないし意味すらないかもしれない、
たまに発言すれば馬鹿にされるから凄い人しか残らないわけで。
530デフォルトの名無しさん
2014/06/30(月) 00:33:26.64ID:8S3fud89531デフォルトの名無しさん
2014/06/30(月) 02:26:19.67ID:fawqTnic Fortranの強みは常に時代の最先端ハードウェアに対応していることじゃないかな。
最近でもIntelはDECのFortran買ったし、NvidiaはPGIを買収したし。
両社ともGPUアクセレレータを含む自分らの最新ハードとセットで、
同じタイミングで対応したコンパイラを出してきている。
本来ハードウェアとソフトウェアは表裏一体、精神と肉体のような
不可分の関係にあるはず。そしてFortranは未だその密接さを保っている。
ソフトウェアの人たちは、ソフトウェア単体での独立価値を信じたいようだけど
現実は違っている。
この現実認識の歪が過剰なFortranディスカウントキャンペーンとして噴出して
いるのではないだろうか・・・と新聞並に論理を飛躍させて終わるw
最近でもIntelはDECのFortran買ったし、NvidiaはPGIを買収したし。
両社ともGPUアクセレレータを含む自分らの最新ハードとセットで、
同じタイミングで対応したコンパイラを出してきている。
本来ハードウェアとソフトウェアは表裏一体、精神と肉体のような
不可分の関係にあるはず。そしてFortranは未だその密接さを保っている。
ソフトウェアの人たちは、ソフトウェア単体での独立価値を信じたいようだけど
現実は違っている。
この現実認識の歪が過剰なFortranディスカウントキャンペーンとして噴出して
いるのではないだろうか・・・と新聞並に論理を飛躍させて終わるw
532デフォルトの名無しさん
2014/06/30(月) 13:21:06.69ID:V1UUNHQo >>529
そういうのに向かない計算アルゴリズム(隣のセルの計算結果を使う。つまり独立ではない。
そうなると同期の問題も発生する)もあるんだ。
>過去のシサンガーとかもう辛いだけ。
>どこまでも未来に生きてください、Fortran スレになんか戻らないでください。
で、お前何が言いたいんや?日本語大丈夫か?
そういうのに向かない計算アルゴリズム(隣のセルの計算結果を使う。つまり独立ではない。
そうなると同期の問題も発生する)もあるんだ。
>過去のシサンガーとかもう辛いだけ。
>どこまでも未来に生きてください、Fortran スレになんか戻らないでください。
で、お前何が言いたいんや?日本語大丈夫か?
533デフォルトの名無しさん
2014/07/01(火) 01:36:55.46ID:DMO1kVAm 1 :デフォルトの名無しさん:2012/08/16(木) 20:58:00.31
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
FORTRAN使いが優しくコメントを返しますが、
お礼はFORTRANの布教と初心者の救済と次期Fortran2008規格でのCOMEFROM文採用をお願いします。
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
FORTRAN使いが優しくコメントを返しますが、
お礼はFORTRANの布教と初心者の救済と次期Fortran2008規格でのCOMEFROM文採用をお願いします。
534デフォルトの名無しさん
2014/07/03(木) 20:06:28.12ID:Ct9dkTzH つかぬことをお聞きしますが
皆さんのfortranの本の勉強履歴はどんな流れですか?
私は冨田さんfortran90の本→辞書的にfortran90入門をかいつまむぐらいしか
やっておらずとりあえず拙いなりに読み書きはするのですが
なにか良い本あればおしえていただけないでしょうか
皆さんのfortranの本の勉強履歴はどんな流れですか?
私は冨田さんfortran90の本→辞書的にfortran90入門をかいつまむぐらいしか
やっておらずとりあえず拙いなりに読み書きはするのですが
なにか良い本あればおしえていただけないでしょうか
535デフォルトの名無しさん
2014/07/04(金) 01:38:26.65ID:41RxNfGp 故岡村先生の授業テキスト
やーっふぉ、やっふぉ、ふぉーとらんらんらん
やーっふぉ、やっふぉ、ふぉーとらんらんらん
536デフォルトの名無しさん
2014/07/04(金) 01:45:11.81ID:cNJNO1xN Fortran95/2003 Explained --> Modern Fortran Explained
537デフォルトの名無しさん
2014/07/05(土) 07:04:30.09ID:sNpoyHpR emacsでコメントアウトに使う関数fortran-comment-regionのデフォルトの動作が
行頭にCを挿入するのではなく,C$$(自由形式では!!$)を挿入するのは何か理由があるのでしょうか?
$つけたほうがメリットとかあるの?
行頭にCを挿入するのではなく,C$$(自由形式では!!$)を挿入するのは何か理由があるのでしょうか?
$つけたほうがメリットとかあるの?
538デフォルトの名無しさん
2014/07/07(月) 01:06:30.37ID:1zKRZTH9 absoft 9.0でf77fileをコンパイル成功、プログラム自体も上手く行く
absoft11.0でコンパイル成功、プログラム自体もインプットファイルのある部分の記述次第で上手く行く
ある記述部というのはアウトプットするデータ個数を指定するところです。20個程度なら上手くいくのですが数百個と増やすとうまくいきません。
エラーメッセージは
illegal character in numeric input
で、インプットファイルにおかしい部分があると言っています。しかし9.0でコンパイルしたものはきちんとうまくいくのです
何かアドバイスいただけないでしょうか。プログラム自体は3万行程度あるというのと内容だけに書き写すのは難しいです。
absoft11.0でコンパイル成功、プログラム自体もインプットファイルのある部分の記述次第で上手く行く
ある記述部というのはアウトプットするデータ個数を指定するところです。20個程度なら上手くいくのですが数百個と増やすとうまくいきません。
エラーメッセージは
illegal character in numeric input
で、インプットファイルにおかしい部分があると言っています。しかし9.0でコンパイルしたものはきちんとうまくいくのです
何かアドバイスいただけないでしょうか。プログラム自体は3万行程度あるというのと内容だけに書き写すのは難しいです。
539デフォルトの名無しさん
2014/07/07(月) 01:25:39.47ID:VWd7ewX/540デフォルトの名無しさん
2014/07/07(月) 09:24:44.41ID:1zKRZTH9541デフォルトの名無しさん
2014/07/08(火) 00:03:54.23ID:DZPoMbBV Gfortran で定義してない変数があってもたまにエラーはかない時あって焦った。
デバッグで小一時間汗流したわ。
gfortranってたまにアホな子になるの?
デバッグで小一時間汗流したわ。
gfortranってたまにアホな子になるの?
542デフォルトの名無しさん
2014/07/08(火) 23:44:01.37ID:0sSau+NY543デフォルトの名無しさん
2014/07/09(水) 03:16:15.11ID:i/yEgb7/ >>538
出ているエラーメッセージは、入力ファイルの問題で、数字の代わりに
(たぶん)文字が来ているということ。
F77時代(かそれ以前)のプログラムの用だから、入力ファイルの数値の
フォーマットも指定されていると推測される。数値が指定カラムから
はみ出していないか見て味噌。
以前
300 400 200 0 0
これで右から2番目でおかしくなると言っていたが、たぶん4カラムづつ
入力にとってある。300 400 200 000 000 ならたぶん動くだろう。
今は 0 0 を読んで、数値Formatがおかしいと文句を言われているのだと思う。
出ているエラーメッセージは、入力ファイルの問題で、数字の代わりに
(たぶん)文字が来ているということ。
F77時代(かそれ以前)のプログラムの用だから、入力ファイルの数値の
フォーマットも指定されていると推測される。数値が指定カラムから
はみ出していないか見て味噌。
以前
300 400 200 0 0
これで右から2番目でおかしくなると言っていたが、たぶん4カラムづつ
入力にとってある。300 400 200 000 000 ならたぶん動くだろう。
今は 0 0 を読んで、数値Formatがおかしいと文句を言われているのだと思う。
544デフォルトの名無しさん
2014/07/09(水) 03:17:43.97ID:i/yEgb7/ ではなぜ Absoft9 ではよくて、11では駄目なのかと問うかもしれない。
考えられることとしては、入力データの空白の扱いのデフォルトが変わった
ことが考えられる。FORTRAN最初期からの伝統で、入力データの空白は
数値としてはゼロを意味している。文法書のFORMAT分のところをよく読むと、
BZとBNというオプションがある。BZはBLANK ZEROでBNはBLANK NULL(NONE)
を意味していて、解釈を変えられる。昔のデフォルトはBZだった。
しかしF95かF2003くらいでたしかデフォルトをBNにしていた気がする。
今、手元に資料がないので確認できないがw
というわけで、absoft9は空白を0として読んで、0 0 を000と解釈したが、
Absoft11は0 0を数値として解釈不能とみなして、illegal character in numeric input
の実行時エラーをはいているのだろう。
またそうだとするとAbsoft9では0入力の実行回数が1回少ないはずである。
ちなみに、なぜ空白がゼロなのか?これは昔は、紙テープ、パンチカードの
穴あき不良や読み取り不良が多くて、パンチカードのスペース(穴なし)
が出やすかったからと聞いたことがある。ホントかは知らない。
あとメール欄にsage と書くように。
スレが上がると、冷やかしが紛れ込んできてスレが荒れる原因になる。
考えられることとしては、入力データの空白の扱いのデフォルトが変わった
ことが考えられる。FORTRAN最初期からの伝統で、入力データの空白は
数値としてはゼロを意味している。文法書のFORMAT分のところをよく読むと、
BZとBNというオプションがある。BZはBLANK ZEROでBNはBLANK NULL(NONE)
を意味していて、解釈を変えられる。昔のデフォルトはBZだった。
しかしF95かF2003くらいでたしかデフォルトをBNにしていた気がする。
今、手元に資料がないので確認できないがw
というわけで、absoft9は空白を0として読んで、0 0 を000と解釈したが、
Absoft11は0 0を数値として解釈不能とみなして、illegal character in numeric input
の実行時エラーをはいているのだろう。
またそうだとするとAbsoft9では0入力の実行回数が1回少ないはずである。
ちなみに、なぜ空白がゼロなのか?これは昔は、紙テープ、パンチカードの
穴あき不良や読み取り不良が多くて、パンチカードのスペース(穴なし)
が出やすかったからと聞いたことがある。ホントかは知らない。
あとメール欄にsage と書くように。
スレが上がると、冷やかしが紛れ込んできてスレが荒れる原因になる。
545デフォルトの名無しさん
2014/07/09(水) 04:42:58.29ID:2jkWCmKB546デフォルトの名無しさん
2014/07/10(木) 18:28:18.82ID:pJ0O1Ur0 FORTRAN77のCOMMON文とEQUIVALENCE文について質問です.
!---
DIMENSION A(4)
EQUIVALENCE (A, V1)
COMMON /VS/ V1, V2, V3, V4
のようなコードをfortran90風に書き直したいのですがAをCOMMONブロックの変数で置換する以外にいい方法は無いでしょうか?
できればSubroutine等を増やすのではなく,Moduleの変数宣言部分だけで解決したいのですが...
!---
DIMENSION A(4)
EQUIVALENCE (A, V1)
COMMON /VS/ V1, V2, V3, V4
のようなコードをfortran90風に書き直したいのですがAをCOMMONブロックの変数で置換する以外にいい方法は無いでしょうか?
できればSubroutine等を増やすのではなく,Moduleの変数宣言部分だけで解決したいのですが...
547デフォルトの名無しさん
2014/07/10(木) 20:24:35.98ID:2hSWNwRP548デフォルトの名無しさん
2014/07/10(木) 22:05:54.56ID:pJ0O1Ur0 >>547
ありがとうございます
早速以下のように使ってみたんですが
module VS
real :: V1, V2, V3, V4
end module VS
program
use VS, A => V1
...
A(1) = 1.0d0
...
end program
↑コードのA(1)に代入する部分で
error #6410: この名前は配列または関数として宣言されていません。
とgfortranのコンパイルエラーになります
dimension A(4)などと変数宣言すると
error #6401: この名前の属性が USE 文によってアクセス可能な属性と矛盾しています。
でコンパイルエラーになります
あと
use VS, A(1) => V1
のような書き方もだめでした
nag-j.co.jpのコード例だとAは変数とは扱われていないように思うのですがAを配列として扱うことはできないでしょうか?
ありがとうございます
早速以下のように使ってみたんですが
module VS
real :: V1, V2, V3, V4
end module VS
program
use VS, A => V1
...
A(1) = 1.0d0
...
end program
↑コードのA(1)に代入する部分で
error #6410: この名前は配列または関数として宣言されていません。
とgfortranのコンパイルエラーになります
dimension A(4)などと変数宣言すると
error #6401: この名前の属性が USE 文によってアクセス可能な属性と矛盾しています。
でコンパイルエラーになります
あと
use VS, A(1) => V1
のような書き方もだめでした
nag-j.co.jpのコード例だとAは変数とは扱われていないように思うのですがAを配列として扱うことはできないでしょうか?
549デフォルトの名無しさん
2014/07/10(木) 22:50:41.50ID:Te+Dpsre >>546
無理なんじゃないかな。
それはそれで最小にまとまっている。
最適化に問題があるとはいえ、無理してCOMMONやEQUIVALENCEを直す必要もない。
そのコードが意味しているのは、V1,V2,V3,V4を4つの実数変数として共有しているが、
これをエイリアスとして配列に結び付けて使いたいということになっている。
ところが、COMMONでないとV1,V2,V3,V4のメモリー上の番地が連続することを保証できない。
だから配列へのポインタを充てることができない。
(TYPEの中に入れれば、sequence属性で番地の連続性を保証できるが…
f2003のC言語との互換性機能も使えるかもしれないが、COMMONよりひどい気もする。)
ばらばらの番地いる変数を個々にFortranにはポインタの配列はない。
(配列へのポインタはある。これを使うにはV1~V4が連続した番地にいる必要がある。)
実変数へのポインタを要素として持つ構造体を定義して、その配列を作れば
いいが、それでは大幅な書き換えで意味がない。
あとは、Fortranの規格を外れるが、どの処理系もほぼ必ず持っている
Cray Pointer を使う手もあるが、これもModuleの中では納まらない。
実行文が必要。
COMMONとかEQUIVALENCEはメモリーの番地共有だから、便利なことができる。
最適化を抑止してしまうから、主要部分には使わない方がいいが、
技巧的小技としては、うまく使うと短く書けるので、使えばいいんでね?
無理なんじゃないかな。
それはそれで最小にまとまっている。
最適化に問題があるとはいえ、無理してCOMMONやEQUIVALENCEを直す必要もない。
そのコードが意味しているのは、V1,V2,V3,V4を4つの実数変数として共有しているが、
これをエイリアスとして配列に結び付けて使いたいということになっている。
ところが、COMMONでないとV1,V2,V3,V4のメモリー上の番地が連続することを保証できない。
だから配列へのポインタを充てることができない。
(TYPEの中に入れれば、sequence属性で番地の連続性を保証できるが…
f2003のC言語との互換性機能も使えるかもしれないが、COMMONよりひどい気もする。)
ばらばらの番地いる変数を個々にFortranにはポインタの配列はない。
(配列へのポインタはある。これを使うにはV1~V4が連続した番地にいる必要がある。)
実変数へのポインタを要素として持つ構造体を定義して、その配列を作れば
いいが、それでは大幅な書き換えで意味がない。
あとは、Fortranの規格を外れるが、どの処理系もほぼ必ず持っている
Cray Pointer を使う手もあるが、これもModuleの中では納まらない。
実行文が必要。
COMMONとかEQUIVALENCEはメモリーの番地共有だから、便利なことができる。
最適化を抑止してしまうから、主要部分には使わない方がいいが、
技巧的小技としては、うまく使うと短く書けるので、使えばいいんでね?
550549
2014/07/10(木) 22:53:27.62ID:Te+Dpsre 修正ミスwww
>ばらばらの番地いる変数を個々にFortranにはポインタの配列はない。
ばらばらの番地いる変数を個々に、ポインタの配列の要素に結び付けようにも、
Fortranにはポインタの配列はない。
>ばらばらの番地いる変数を個々にFortranにはポインタの配列はない。
ばらばらの番地いる変数を個々に、ポインタの配列の要素に結び付けようにも、
Fortranにはポインタの配列はない。
551デフォルトの名無しさん
2014/07/11(金) 03:55:49.85ID:wFVmEw9F ちょいと手間だがこれじゃダメかい
module VS
real :: A(4)
real :: V1, V2, V3, V4
equivalence (V1, A(1)), (V2, A(2)), (V3, A(3)), (V4, A(4))
end module VS
module VS
real :: A(4)
real :: V1, V2, V3, V4
equivalence (V1, A(1)), (V2, A(2)), (V3, A(3)), (V4, A(4))
end module VS
552デフォルトの名無しさん
2014/07/11(金) 04:36:13.83ID:gSvcXiep553デフォルトの名無しさん
2014/07/11(金) 09:33:00.25ID:cGGfPMzQ554デフォルトの名無しさん
2014/07/11(金) 15:22:52.88ID:RyCozEJp >552
equivacenle(A, V1)
A(1)==V1 にはなるが、V2,V3,V4がV1の直後に連続的に配列されていなければ
A(2),A(3),A(4)とV2,V3,V4は全くの無関係となってしまいます。
MAPファイルを書かせてみれば、位置関係は分かります。
最近のコンパイラはかなりソース上の順番とは無関係に自由に
並べ替えるので、うまくいかない可能性大かと。
EQUIVALENCEはDeprecated Listに上がっていました。
この先廃止の見込みが高いので避けた方がいいリストかな?
deprecated -> obsolescent -> deleted の三弾活用の1段目。
equivacenle(A, V1)
A(1)==V1 にはなるが、V2,V3,V4がV1の直後に連続的に配列されていなければ
A(2),A(3),A(4)とV2,V3,V4は全くの無関係となってしまいます。
MAPファイルを書かせてみれば、位置関係は分かります。
最近のコンパイラはかなりソース上の順番とは無関係に自由に
並べ替えるので、うまくいかない可能性大かと。
EQUIVALENCEはDeprecated Listに上がっていました。
この先廃止の見込みが高いので避けた方がいいリストかな?
deprecated -> obsolescent -> deleted の三弾活用の1段目。
555デフォルトの名無しさん
2014/07/12(土) 03:13:21.15ID:hZ9DjkyP 555
556デフォルトの名無しさん
2014/07/12(土) 11:23:27.92ID:Rc8WL8IV >>555
ダミアンもどき
ダミアンもどき
557デフォルトの名無しさん
2014/07/13(日) 00:10:07.50ID:+Eo/x1ZD サブルーチンの内部ではうまく計算されているのに、
メインでwriteするとよくわからない大きな数値になってしまっているのですが、
なにか解決のヒントないでしょうか?
断片的で申し訳ありません
メインでwriteするとよくわからない大きな数値になってしまっているのですが、
なにか解決のヒントないでしょうか?
断片的で申し訳ありません
558デフォルトの名無しさん
2014/07/13(日) 00:31:08.73ID:+Eo/x1ZD すいません自己解決しました
配列宣言の量が少なかったボンミスです
allocatable使わないとこういうことになるんでしょうか
お騒がせしました
配列宣言の量が少なかったボンミスです
allocatable使わないとこういうことになるんでしょうか
お騒がせしました
559デフォルトの名無しさん
2014/07/19(土) 14:16:39.37ID:BjGmX3Lx 2014年になってもFORTRANが選ばれる理由
ttp://developers.slashdot.jp/story/14/05/12/0410259/2014%E5%B9%B4%E3%81%AB%E3%81%AA%E3%81%A3%E3%81%A6%E3%82%82FORTRAN%E3%81%8C%E9%81%B8%E3%81%B0%E3%82%8C%E3%82%8B%E7%90%86%E7%94%B1
まだ残っていきそうな感じだね
ttp://developers.slashdot.jp/story/14/05/12/0410259/2014%E5%B9%B4%E3%81%AB%E3%81%AA%E3%81%A3%E3%81%A6%E3%82%82FORTRAN%E3%81%8C%E9%81%B8%E3%81%B0%E3%82%8C%E3%82%8B%E7%90%86%E7%94%B1
まだ残っていきそうな感じだね
560デフォルトの名無しさん
2014/07/20(日) 02:33:05.33ID:RXdcC8ex FORTRANで書かれたBLAS/LAPACKをライブラリとして呼び出しているLLが
FORTRANと同等のスピードが出ることを大々的に喧伝すると、
それに釣られて、もうFORTRANは要らないのだ!とか言い出す人が、
情強を誇るネットの有名人にも多いので草不可避w
FORTRANと同等のスピードが出ることを大々的に喧伝すると、
それに釣られて、もうFORTRANは要らないのだ!とか言い出す人が、
情強を誇るネットの有名人にも多いので草不可避w
561デフォルトの名無しさん
2014/07/27(日) 19:42:35.57ID:fTZkfzZt >>553の問題は解決したのかいな?
562デフォルトの名無しさん
2014/08/04(月) 11:41:31.29ID:IXwYtmhs バイナリ出力をするときにOPEN文に指定する
form='binary'はFortranの標準ではなく、独自拡張みたいですが、
標準のコーディングだけで'binary'と完全に等価なバイナリ出力をする方法はありますか?
form='unformatted'を指定すると、write文を書くたびに
データの最初と最後に4バイトのレコード長がつき、
form='binary'を指定すると前後4バイトがつかないみたいです。
form='binary'はFortranの標準ではなく、独自拡張みたいですが、
標準のコーディングだけで'binary'と完全に等価なバイナリ出力をする方法はありますか?
form='unformatted'を指定すると、write文を書くたびに
データの最初と最後に4バイトのレコード長がつき、
form='binary'を指定すると前後4バイトがつかないみたいです。
563デフォルトの名無しさん
2014/08/04(月) 17:53:28.34ID:fzuw5J0Z Fortran2003以降ならストリームが使える
http://www.nag-j.co.jp/fortran/fortran2003/Fortran2003_7_1.html#AUTOTOC_7_1
http://www.nag-j.co.jp/fortran/fortran2003/Fortran2003_7_1.html#AUTOTOC_7_1
565デフォルトの名無しさん
2014/08/05(火) 02:23:56.59ID:BDydvxMf directファイルを使うテクニックもある。
確実ではないが、大抵の処理系では、バイトまたはワード単位でべた書き
しているので、binaryの代わりに使える。
バイトかワードかは処理系によるが、コンパイラのオプションでどっちにも
できることが多い。
まぁ今の時代は素直に stream だろうが。
確実ではないが、大抵の処理系では、バイトまたはワード単位でべた書き
しているので、binaryの代わりに使える。
バイトかワードかは処理系によるが、コンパイラのオプションでどっちにも
できることが多い。
まぁ今の時代は素直に stream だろうが。
566562
2014/08/07(木) 21:48:00.99ID:ZvlX+BXk >>565
またまたありがとうございます。今日、会社でstreamを試してみたら、
コンパイラが古いためか(Windows版Intel Fortran 9.1)、
コンパイル時に「streamなんて知らないよ」って言われました。
directで試してみることにします。
またまたありがとうございます。今日、会社でstreamを試してみたら、
コンパイラが古いためか(Windows版Intel Fortran 9.1)、
コンパイル時に「streamなんて知らないよ」って言われました。
directで試してみることにします。
567デフォルトの名無しさん
2014/08/13(水) 10:42:21.52ID:KHi6ZJrR 構造型にSave属性つけられないんですけど
構造型をModuleに入れてグローバル変数として使いまわすのは危険(未定義になる可能性があるん)でしょうか
あとFortranの質問じゃないかもしれませんが
Intel MKLのBLAS/Lapack95はpure procedureであるとInterface定義に明記されてるけど
BLAS/Lapack77はPureなんでしょうか
構造型をModuleに入れてグローバル変数として使いまわすのは危険(未定義になる可能性があるん)でしょうか
あとFortranの質問じゃないかもしれませんが
Intel MKLのBLAS/Lapack95はpure procedureであるとInterface定義に明記されてるけど
BLAS/Lapack77はPureなんでしょうか
568デフォルトの名無しさん
2014/08/13(水) 11:45:31.24ID:KHi6ZJrR ↑すみません 多分自己解決しました
構造体の定義のあと変数宣言したものにはsave属性つけられますね(定義しかしてなかった)
BLAS77は間違った引数渡すと標準出力(か標準エラー出力)になんか表示されるのでpureじゃないってことでしょうかね
構造体の定義のあと変数宣言したものにはsave属性つけられますね(定義しかしてなかった)
BLAS77は間違った引数渡すと標準出力(か標準エラー出力)になんか表示されるのでpureじゃないってことでしょうかね
569デフォルトの名無しさん
2014/08/13(水) 12:55:08.27ID:RBRmoRtS >>568
そもそもFORTRAN77には言語仕様上pureは存在しない。
Lapack95はFortran95以降のプログラムからLAPACKのprocedureを
利用し易くするためのラッパーライブラリに過ぎない。
そもそもFORTRAN77には言語仕様上pureは存在しない。
Lapack95はFortran95以降のプログラムからLAPACKのprocedureを
利用し易くするためのラッパーライブラリに過ぎない。
570デフォルトの名無しさん
2014/08/13(水) 22:38:10.66ID:/aB3oPfT (コンパイル済みの)外部サブルーチンが真にpureかどうかは開発者/提供者の責任かと
例外処理は pure 要件から外していいと判断し、
pure と明記しておくことで最適化を妨げないようにしたのだろう
例外処理は pure 要件から外していいと判断し、
pure と明記しておくことで最適化を妨げないようにしたのだろう
571デフォルトの名無しさん
2014/08/14(木) 02:43:06.91ID:EFpyKW9s Fortranの組み込みサブルーチンで、乱数がサブルーチンで関数になっていないから
他言語に比べて使いにくいなと思っていたが、FORTRAN は PURE じゃないものは
関数にしない方針で一貫していて、乱数はPURE(参照透明)じゃないから
関数にしなかったんだと分かって、なんか納得した。時刻サブルーチンとかも。
最近関数型、関数型うるさいけど、他言語は意外にその辺一貫してないよな。
まぁFORTRANの場合、依存性があると最適化の邪魔になるから、
依存性を嫌っているだけだけどw 結果的にはより徹底している。
他言語に比べて使いにくいなと思っていたが、FORTRAN は PURE じゃないものは
関数にしない方針で一貫していて、乱数はPURE(参照透明)じゃないから
関数にしなかったんだと分かって、なんか納得した。時刻サブルーチンとかも。
最近関数型、関数型うるさいけど、他言語は意外にその辺一貫してないよな。
まぁFORTRANの場合、依存性があると最適化の邪魔になるから、
依存性を嫌っているだけだけどw 結果的にはより徹底している。
572デフォルトの名無しさん
2014/08/21(木) 12:25:07.46ID:J2kSTdr3 マットラボてどうなん?フォートランと比べて何か秀でた点ある?
573デフォルトの名無しさん
2014/08/21(木) 22:20:31.76ID:f+zPplkQ そんなん解決したい問題,実装したい理論によりけりやろ
まあ計算規模が小さくて使いたいライブラリがMATLABにあるならそっち使ったほうが幸せになれるぞきっと
まあ計算規模が小さくて使いたいライブラリがMATLABにあるならそっち使ったほうが幸せになれるぞきっと
574デフォルトの名無しさん
2014/08/23(土) 12:29:18.39ID:r0lW6Kse575デフォルトの名無しさん
2014/08/24(日) 20:56:38.40ID:JVJfgdMr MINUIT使えば
576デフォルトの名無しさん
2014/08/28(木) 13:13:31.88ID:G1Zq4e11 MATLABって個人使用なら五千円に値下げになってなかったけ?
577デフォルトの名無しさん
2014/08/30(土) 13:35:28.03ID:SJevJ5zH■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【速報】中国、水産物輸入停止と通達 「処理水」理由、日本政府へ ★5 [おっさん友の会★]
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 [ぐれ★]
- 中国側が首相答弁の撤回要求、日本側拒否★7 [夜のけいちゃん★]
- 【速報】 米大使「はっきりさせておこう、米国は尖閣諸島含め日本の防衛に全面コミット、中国がどうしようが変わらない」 [お断り★]
- 自民、経済対策で子ども1人に2万円給付へ 児童手当に上乗せ 所要額は約4000億円 [ぐれ★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★7 [ぐれ★]
- 【速報】高市首相「つい言い過ぎた」 存立危機事態の答弁について [237216734]
- 山上妹「統一信者から安倍自民への投票を求められた」法廷で証言 [947332727]
- 【速報】中国、水産物輸入停止★2 [989870298]
- 小林よしのり「高市早苗はネトウヨに媚びる女」 [616817505]
- 【高市訃報】ホタテ業者、死亡😇😇😇 [573041775]
- 【ネトウヨ朗報】イギリスのトラス元首相、高市有事で高市早苗の支持を表明 [603416639]
