同じEXE・同じファイルで解析結果が異なる

このQ&Aのポイント
  • PC1とPC2で同じEXE・同じファイルを使用して解析を行っていますが、解析結果が一致しません。
  • PC1はCore2Duo 2.83GHz、メモリ1Gであり、PC2はCorei5 2.67,2.66GHz、メモリ3Gであるため、PC2の方が高性能で解析が短時間で終わります。
  • PC1にはVisualStudio2005+VisualFortran11.066がインストールされており、PC1で作ったFortranのソースをEXEにしてPC2で動作させています。
回答を見る
  • ベストアンサー

同じEXE・同じファイルで解析結果が異なる

長い題名ですいません。 PC1とPC2という2台のPCがあり、 同じEXE・同じファイルを使用して解析を行っているのですが、 解析結果が一致しないのです。 なぜこのような事をしているかというと、 PC1はCore2Duo 2.83GHz、メモリ1G PC2はCorei5 2.67,2.66GHz、メモリ3G であり、PC2の方が高性能で解析が短時間で終わるからです。 PC1にはVisualStudio2005+VisualFortran11.066 がインストールされており、 PC1で作ったFortranのソースをEXEにしてPC2で動作させています。 EXEの作り方はプロジェクトのクリーン後、プロジェクトのリビルドを行い、 実行ファイルがReleseフォルダにできるので、その中のEXEを実行しています。 原因をどのように調べたら良いかわかりません、教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • nineexit
  • ベストアンサー率100% (8/8)
回答No.3

>PC1でコンパイルしたものをPC1とPC2で動作させようとしているので、 > コンパイルの違いはありません。 (私はエンドユーザでコンパイラの中身については良く分かっていないのですが、) コンパイラが環境に合わせて最適化を行うことがありますので、別のコンピュータでコンパイルしたものを実行すると、意図しない結果が出てくるかもしれません。 私も異なる環境で同じプログラムを動かすことがありますが、コンピュータごとにコンパイルして使っています。 >やっぱりそうなるんですよね、OSのバージョン、フレームワーク、その他環境など > システムを移植するときは開発したPC環境と運用するPC環境を > 完全に一致させなければいけないということですよね? 近似値を計算する数値計算であれば、完全に値が一致する必要はないと思いますので、 コンピュータの環境を揃える必要はないと思います。

その他の回答 (2)

  • nineexit
  • ベストアンサー率100% (8/8)
回答No.2

異なるパソコンでコンパイルしたものを実行しているからではないでしょうか? PC2にgfortranなどのフリーのコンパイラを入れて結果を比較されてはどうでしょうか? それから,どれくらい答えが異なるのか分かりませんが,違う環境で計算すれば, 丸め誤差のため答えは完全に一致しません.

Gyustab
質問者

お礼

お返事ありがとうございます。 >異なるパソコンでコンパイルしたものを実行しているからではないでしょうか?  PC1でコンパイルしたものをPC1とPC2で動作させようとしているので、  コンパイルの違いはありません。 >PC2にgfortranなどのフリーのコンパイラを入れて結果を比較されてはどうでしょうか?  ご意見ありがとうございます、一度インストールして比較してみます。 >それから,どれくらい答えが異なるのか分かりませんが,違う環境で計算すれば,  丸め誤差のため答えは完全に一致しません.  やっぱりそうなるんですよね、OSのバージョン、フレームワーク、その他環境など  システムを移植するときは開発したPC環境と運用するPC環境を  完全に一致させなければいけないということですよね?

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.1

そりゃ一致しないでしょ。 それはつまり質問にもある様にPC2の方が高性能だから。 ただ、言っている解析結果っていうのが 例えばPC1なら「2」という算出をするのにPC2だと「5」とか出るならちょっと問題あるね。 (勿論それは時間という変数を取り込まない事が前提) どちらであっても式からしたら演算が早くても答えが同じにならなければおかしいというのであるのならもしかしたらそのfortranが「分散処理」に対応しちゃってるのかもしれないね。 簡単に言うと「thread safe」になっていないって話 thread safe http://www.google.com/search?hl=ja&q=%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%20%22thread%20safe%22 再起演算なんかが有るなら可能性が高いよ。 答えが得られる前に他の演算が進んでしまってヒドイ極端な話(変数や演算の分割を要約した式として)「6+2*3」みたいなのが12にならないってオチ。

Gyustab
質問者

お礼

ごめんなさい、書くところ間違えました お返事ありがとうございます。 根が深そうです、thread safeに関して調べてみます。 以下、よろしければ教えていただけませんか? >それはつまり質問にもある様にPC2の方が高性能だから。  OSはサービスパックも全く一緒なのですが、プロセッサの違いで同じEXEでも内部の計算は  一致するかは保障できないという事でしょうか?  そうなると実行環境とテスト環境はCPUやOSや開発環境をすべて一致させる必要がありそうですね。 >fortranが「分散処理」に対応しちゃってるのかもしれないね。  分散処理をしているかしていないかは、タスクマネージャーのパフォーマンスを表示した時に、  複数コアを使用して計算されていれば、分散処理をしてると言えるのでしょうか?  それともVisualStudioのオプション設定などに分散処理に関する項目があるのでしょうか? >再起演算なんかが有るなら可能性が高いよ。  一度解析した値をファイルに書き込み、それをまた読み込んで解析し、というような事を繰り返して  ある値に近づけるような解析をしているのですが、これは再起演算しているといえるのでしょうか

Gyustab
質問者

補足

お返事ありがとうございます。 根が深そうです、thread safeに関して調べてみます。 以下、よろしければ教えていただけませんか? >それはつまり質問にもある様にPC2の方が高性能だから。  OSはサービスパックも全く一緒なのですが、プロセッサの違いで同じEXEでも内部の計算は  一致するかは保障できないという事でしょうか?  そうなると実行環境とテスト環境はCPUやOSや開発環境をすべて一致させる必要がありそうですね。 >fortranが「分散処理」に対応しちゃってるのかもしれないね。  分散処理をしているかしていないかは、タスクマネージャーのパフォーマンスを表示した時に、  複数コアを使用して計算されていれば、分散処理をしてると言えるのでしょうか?  それともVisualStudioのオプション設定などに分散処理に関する項目があるのでしょうか? >再起演算なんかが有るなら可能性が高いよ。  一度解析した値をファイルに書き込み、それをまた読み込んで解析し、というような事を繰り返して  ある値に近づけるような解析をしているのですが、これは再起演算しているといえるのでしょうか?

関連するQ&A

  • EXEファイルの解析

    ちょっと前に日本語プログラム言語「なでしこ」を使用して作成したEXEファイルですが… 何の実行ファイルかわからくなりました。 あと、修正もしたいので解析できるフリーソフトがあれば、紹介していただきたいです。 よろしくお願いいたします。

  • exeファイルのパスワード解析

    昔使っていたあるexeファイル(実行ファイル)にパスワードをかけており、久しぶりに起動してみようとしたのですがパスワードを忘れており起動できませんでした。 パスワードを解析する方法はないでしょうか。 よろしくお願いします。

  • VC++から引数付きexeファイルの実行

    タイトルの通り、VC++から外部ファイルを実行したいのですがどのような関数を使えばよいのでしょうか? exeファイルを実行中は親プロセスであるVCのプログラムの方を止めておきたいのです。 出来ればexeファイルは引数付きで実行したいと思いますので、よろしくお願いします。 開発環境はVisualStudio2005です。

  • .exeファイルの操作の仕方

    VBでTest.Exe実行ファイルを作り。 他プロジェクト(Test2.exe)からその実行ファイル(Test.exe)を起動する方法を、 教えてください。 また、その(Test.exe)内の Public sub を呼び出す事は可能ですか?(Test2.exe)から。 宜しくお願いします。

  • vb6.exe - アプリケーションエラー

    VBで作成したEXEを終了させた時、プロジェクトからプログラムを実行して、 プロジェクトを終了させた時に、下記エラーが発生します。 (プロジェクトを開いて閉じるだけではエラーは発生しない。) -------------------------------------------------------- "0x7c950a19"の命令が"0xffffffff"のメモリを参照しました。 メモリが"read"になることはできませんでした。 -------------------------------------------------------- 自分のPCで実行した時のみ発生します。 (他のPCで実行してもエラーは発生しません。) 何かわかる方がいらっしゃいましたらアドバイス頂けたらと思います。 宜しくお願い致します。 <環境> XP SP3 メモリ4G VB6.0 SP6

  • 他のexeファイルを実行する方法(Fortran)

    Fortran90で,実行中に他の実行ファイル*.exeを呼び出すことは できますでしょうか? メイン文でサブルーチンを call subroutine名() で呼び出す代わりに call 実行ファイル名.exe のように実行ファイルを呼び出したいです。 コマンドプロンプトでバッチファイルで,逐次exeを 実行することはできますが,ソースコードの中で 実行ファイルを指定したいです。 よろしくお願いいたします。

  • exeファイルで実行できない

    VB6.0のexeファイルでのアプリ稼動ができません。プロジェクトファイルを開いて実行すれば稼動するのですが、生成したexeファイルを実行した場合は稼動しません。 いったいどういう原因なのでしょうか?リリースモードでコンパイル云々という話でしょうか? ただ他にもVBのアプリが存在するのですが、そちらはexeファイルの実行だけで問題なく稼動します。 OS Windows XP(SP1) 開発環境 VB6.0 (SP5) .NET Framework 1.0? 原因が分かる方、推測できる方いらっしゃったら、教えていただけないでしょうか?宜しくお願いします。

  • exeファイルが開けません

    先程、とあるexeファイルを 右クリック→アプリケーションから開く で実行しようとした際、誤って『Lhaca.exe』(圧縮・解凍ソフト)を選択してしまいました。 その際、『この拡張子のファイルを開く場合は、いつもこのアプリケーションを使う』といった様なチェックボックスにチェックしてしまいました。 すると、PC内の全てのexeファイルがそのアプリケーションで実行される様になってしまい、『ファイル"C\~"が見つかりません』と出て実行できません。 再度exeファイルを右クリックしても『アプリケーションから開く』のメニューが表示されず、設定をし直す事ができません。 どうすれば元に戻す事ができるか解らず、大変困っています。

  • Eclipseをexe形式のファイルの作成

    Eclipseをexe形式のファイルの作成 上記の通りなんですけど Eclipseをつかって作ったプロジェクトをexeの実行形式にしたいのですが 上手くいきません。 jarファイルではなくてexe形式で作りたいです!

  • 実行可能のexeファイルはどこにできますか

    Netbeansを使って簡単なプログラムを作りました。 このプログラムをコピーして他のPCでも動かしてみたいのですが 実行ファイルはどれをコピーすればいいのかわかりません。 VisualstudioでVBのプログラムを作るとアプリケーションのフォルダの中のbinフォルダの下にexeファイルができるのですが それに当たるものはどれなのでしょう。 ネットビーンズから作ったフォルダを見てみると build,nbproject,src,testというフォルダがあって srcの下にFirstSample.javaというファイルがあるのですが クリックしてもメモ帳で作ったソースが表示されるだけです。 分からないので教えていただけると幸いです。

    • ベストアンサー
    • Java