0

csv約 200 万行、約 150 列のデータを含むファイルがあります。合計ファイル サイズは約 1.3 GB です。これは、約 3 億の配列メンバーです。

私は 350 万行のファイルから始めましたが、試行錯誤の結果FORTRAN、配列が 390 万行以下で定義されていないとコンパイルすらできないことがわかりました。400万、無理。バス エラー/コア ダンプ。

とにかく、200万行のファイルが機能すると思いました。2 GB の制限に関する投稿をいくつか読みました。ただし、データを読み込むときに行番号を出力すると、終了する前に 250,000 程度しか表示されません。奇妙なことに、私はほとんど同じファイルを持っています (分割コマンドを使用)。なぜそんなに違うのかわからない、1行あたりの文字数は同じ。

このデータを読み込むためにできることはありますか? すべてのデータを何百回もコンパイルするのは大変な作業です。

4

1 に答える 1

2

これは Fortran 自体の特性ではなく、特定のコンパイラと OS の特性です。そのため、その情報を提供する必要があります。

バス エラーについて: 配列がスタックに配置され、スタック領域が不足している可能性があります。さまざまな OS で、スタック サイズを増やす方法が提供されています。多くのコンパイラは、大きな配列がヒープに配置されるようにオプションを提供しています。配列を「割り当て可能」と宣言して割り当ててみることもできます。最後の提案は、FORTRAN 77 コンパイラではなく、Fortran 95 コンパイラを使用していることを前提としています。

インデックス付けに使用される整数変数を宣言する方法もあります。プログラムのループが 2,147,483,647 を超える場合は、4 バイトを超えるサイズの変数を使用する必要があります。ソースコードが表示されていないため、推測することしかできません。

于 2012-10-24T06:21:04.673 に答える