NI製品ディスカッション

キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

csv読み込み数の上限

解決済み
解決策を見る

お世話になります。

 

現在csvファイルに格納されたデータを読み出しアナログ出力を行っています。

データ数が3×300万程度のデータであれば問題なく出力できているのですが

さらに大量のデータになると”この作業を完了するためにはメモリが足りません”

”LabVIEW:メモリが一杯です”と表示されてしまいます。

 

現在の使用環境はLabVIEW8.6、windoswXP32bit版(3Gスイッチ解除済み)です。

 

この現象はwindowsを64bit版に変更すれば解消できるでしょうか?

 

もしくは他に対策があるものでしょうか?

 

以上お手数ですがよろしくお願いします

0 件の賞賛
メッセージ1/3
7,470件の閲覧回数
解決策
トピック作成者とも0830が受理

はじめまして、とも0803さん

 

 

利用可能なメモリの上限増による対処

まず、LabVIEWで扱えるメモリについては下記が参考になると思います。

 

32ビット及び64ビット版LabVIEWが扱える最大メモリサイズについて

http://digital.ni.com/public.nsf/allkb/F916B75FB2AA077A86256C1400358C17

 

Windowsが32bitでLabVIEWが32bit版であれば最大3GB

Windowsが64bitでLabVIEWが32bit版であればデフォルトで最大4GB

とありますので、1GB使用可能な領域を増やす事ができます。

 

OS、LabVIEW共に64bitにすればMAX8TBで現実的に考えると

無制限と言っても良い状態になります。

但し64bit版のLabVIEWは日本語化されていません。

 

32 ビットおよび 64 ビットバージョン LabVIEW についての FAQ

http://digital.ni.com/public.nsf/allkb/CD1524A323504D198625761B002C6D95

※上記は対象バージョンが2009なので最新版では一部異なるかもしれません。


とりあえずはOSを64bit化することで症状は収まるとは思いますが、

メモリを大量に使う構造というのは良い状態とは言えませんので

プログラミングでの対処も検討されることをオススメします。

 

 

プログラミングによる対処

現状のVIが一括でファイル全体を読み出している前提ですが、

以下、変更の小さいと思われる順の対処案です。

 

1. CSVからバイナリに変換したファイルを用意し、テキストの読み出し処理をバイナリファイルの一括読み出しに置き換える

   (バイナリのほうがメモリが少なくて済むだけの話で根本解決ではない)

 

2. ファイルの読み出しを細切れに行う構造に変更

   案2-1 読み出し→DAQのバッファへの書き込み の反復処理とする

   案2-2 読み出し処理とバッファ書き込み処理を並列ループ化し、ループ間でキューを使ってデータを受け渡す (生産者消費者デザインパターン)

 

 

0 件の賞賛
メッセージ2/3
7,461件の閲覧回数

w_kt様

 

ご回答ありがとうございます。

ご指摘の通り一括でデータを扱うのは好ましいことではないですね。

今後使用するデータが増加する可能性が高いので案2-2をベースに検討したいと思います。

 

OSはxpではなくvistaの間違いでした。

ちょうどPCの調子もあまりよくないので64bit化しようとしていたタイミングでしたのでご提示して頂いたページも役に立ちます。

 

貴重な情報・ご指摘ありがとうございました

0 件の賞賛
メッセージ3/3
7,457件の閲覧回数