2016-04-27 5 views
0

同じコンパイラであっても、プロセッサによっては同じ精度のFortranの種類パラメータが変わるのですか?私はすでに投稿hereを読んでいます。同じコンパイラであっても、プロセッサによっては特定の精度のFortranの種類パラメータが変わるのですか?

私が苦労しているのは、同じコンパイラを使用している場合、gfortranと同じ精度の種類パラメータが異なるのはなぜですか?つまり、コンパイラの仕様は同じなので、コンパイラはオペレーティングシステムやプロセッサに関係なく、常に特定の種類のパラメータに対して同じ精度を与えるべきではありませんか?

EDIT:私はいくつかを読み取るいくつかのプロセッサは、整数の直接サポート特定の精度ではないかもしれないことを意味する、整数、異なるCPUが異なる積分データタイプをサポートすることがあります。また、Fortranのようなプログラミング言語は最適化を選択しているため、ハードウェアによって直接サポートされていない奇妙な精度を避けるように言語が実装されています。これは私の懸念と関係がありますか?

答えて

1

あなたは「変更するか」と尋ねています。答えは「彼らがするかもしれない」。

特定の種類の特定の種類の値の意味は、Fortranプロセッサ(言語概念 - マイクロプロセッサと同じではありません)に依存します。

Fortranプロセッサの概念は、ハードウェア、オペレーティングシステム、コンパイラ、ライブラリ、おそらく人間のオペレータなど、Fortranソースの処理と実行を担当するシステム全体のをカバーしています。そのシステムの任意の部分を変更すると、別のFortranプロセッサを使用することができます。

したがって、特定の種類の特定の種類の値の解釈が、コンパイラオプションまたは使用するハードウェアに応じて同じコンパイラで同じである必要はありません。

コードを移植する場合は、コードを特定の種類の値に依存させないでください。

+0

この説明をいただきありがとうございます。コンパイラがハードウェアをスキャンし、このハードウェアを決定するときに、この種のパラメータを特定の精度として扱うようにしているということでしょうか、あなたの答えの一部についての特定の質問:あなたはハードウェアの変更が特定の種類のパラメータの意味を変えるかもしれない、コンパイラが常に同じマシンコードをコンパイルしているのですが、特定のハードウェアが他のマシンコードとは異なるマシンコードを解釈しているだけですか? – Kun

+0

「なぜ彼らは変わるのですか?」 「彼らは変わるの?」と同じ質問ではない!ハードウェアの変更に伴って変化する種類の価値の具体的な理由は、その変更の状況によって異なります。あなたが特定の例を念頭に置いているなら、人々はそれを扱うことができます。 – IanH

+0

@Kunコンパイラフラグで変更する可能性が高くなります。 NAG Fortranはそうしています。 –

関連する問題