Scilabのstacksizeの増やし方とエラー対処方法

このQ&Aのポイント
  • Scilabのstacksizeの増やし方がわからず、エラーが発生して困っています。エラー内容はスタックサイズを超えましたというものです。一時的な対処方法として、stacksize('max')と設定することで一時的にエラーを回避することができますが、計算量が増えると再度エラーが発生します。
  • エラー2の内容はスタックサイズが制限を越えたことです。スタックサイズ関数を使用してスタックサイズを増やす必要があります。具体的なメモリ使用量も表示されており、変数に4229545、中間のメモリに4194308、全てのメモリには5000000が必要です。
  • Scilabのバージョンは5.3-βです。Scilabのstacksizeの増やし方やエラー対処方法について詳細を知りたいです。お知恵を拝借できると幸いです。
回答を見る
  • ベストアンサー

Scilabのstacksizeの増やし方が、どうしもわからず下記エラ

Scilabのstacksizeの増やし方が、どうしもわからず下記エラーが出てしまい 現在困っております。 エラー1.--------------------------------------------- スタックサイズを超えました(stacksize を増やしてください) 上記エラーに関しましては、 自分自身では、stacksize('max')と設定したら一時的にエラー が出なくなりました。しかし計算量が増えた時にまた同じエラー が出てくるようになってしましました。 エラー2.--------------------------------------------- スタックサイズは制限を越えました。 スタックサイズ関数を使ってそれを増やして下さい。 変数にメモリが使われました: 4229545 中間のメモリは必要とされました: 4194308 全部のメモリは可能です: 5000000 ----------------------------------------------- (バージョン:Scilab5.3-βです。) お手数ですが、scilabの上記エラーについての対処方法等をご存知でしたらお教えください。 よろしくお願いいたします。

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

  • ベストアンサー
  • hot-IC
  • ベストアンサー率87% (7/8)
回答No.1

エラーのとおりでして、スタックサイズの制限を越えています。 stacksize('max')としたら、それ以上のスタックを確保することはできないはずです。 Scilabのメモリ管理は古いため、スタックがすぐに一杯になるのは問題視されています。 Scilab6では新しいメモリ管理が導入される予定でして、大容量のデータも手軽に扱えることを目指しているようです。 今のところは、プログラムを見直して、メモリ消費を少なくするしかないのではないでしょうか。

YOSHINON20
質問者

お礼

ご回答ありがとうございます。 助かりました。 プログラムを見直してがんばってみます。

関連するQ&A

  • scilabのエラーについて

    よろしくお願いします。 scilabにてオーバーラップを掛けてFFT解析をしたく、いくつかのWebを参考にさせて頂きながら 試しているのですが、”添字に誤りがあります”とエラーになってしまいます。 ソースは clear all; stacksize('max') v0=read_csv('C:\Users\*****\Desktop\scilab\data7.csv',",") v1 = evstr(v0);//上記v0データは文字列認識の為数値データに変換 //窓関数 N1=256; win_l = window('hn',N1); win_l_minus = win_l * -1; //FFTを実行 N=size(v1,1);//データ長 N2=N1/4; //N/2で50%オーバーラップ L = floor(N/N2)-1;//全サンプルに対するFFTの必要回数  y = 0;//出力ベクトルyの初期値 past_tail=zeros(1,N2);//ハーフオーバーラップ加算信号の初期値 for k=1:L n =N2*(k-1);//FFTの開始地点を更新   v2=win_l*v1( n+1 : n+N1 );//観測信号に窓を掛ける v3=fft(v2,-1);//FFT y1=fft(v3,1);//IFFT y=(y,past_tail + y1(1:N2));       //今回のIFFTの前半を前回のIFFT後半に加算してから出力ベクトルyに追加 past_tail=y1(N2+1:N1);//今回のIFFT結果の後半を記憶 end fv1dBuV=zeros(N,2); fv1dBuV(1,1) = 0;//DC =0Hzを入力 fv1dBuV(1,2) = 20*log10(abs(y(1)/N)/10.^-6);//dBuVに変換 sr = 4000; //sr:サンプリングレート[sample/sec] dt = 1/sr; // dt: サンプリング間隔[sec] T = N*dt; // T: 測定時間[sec] df =1/T; //Hz df: 1/測定時間->最低周波数、周波数分解能[Hz] for i=2:N fv1dBuV(i,1)=(i-1)*df///10^6;//周波数をMHzで記録 fv1dBuV(i,2)=20*log10(abs((y(i))/(N/2))/10.^-6); //N/2の左半分を使用して算出 end になります。(この後はPlot処理) y=(y,past_tail + y1(1:N2))で上記エラーが指摘されます。 プログラミングは初心者なのでどのように修正したらよいか 教えていただけると助かります。 また、オーバーラップを掛けてのFFT解析で他の方法があれば 教えてください。

  • H8マイコン スタック領域について

    スタック領域について教えて下さい。 [動作環境]  開発環境:ルネサス HEW Version 4.08  マイコン:ルネサス H8/1653  コンパイラ:H8SX,H8S,H8ファミリ用C/C++コンパイラパッケージ V7.00 HEWにて新規作成しますと、セクション定義にスタック領域(S)のアドレスと stacksct.h 内に スタック領域のサイズ #pragma stacksize 0x200 が自動で生成されると思います。 しかし、入手したH8/1653用のサンプルには #pragma stacksize のような サイズ指定がありませんでした。 [サンプル] (1)セクション定義やスタック領域のサイズ指定が無い (2)サブコマンドファイル(xxxx.sub)内でアドレスは設定されているが サイズの設定が無い。 -- サブコマンドファイル(xxxx.sub)-- START  CStart/00000000; START  P,C,D/00000400; START  B,R/00FF2000; START S/00FFC000; [質問]  質問1   (1)のスタック領域はどこに配置されるのでしょうか?  質問2   (2)のスタック領域は 00FFC000 を基準にどう確保   されるのでしょうか? (a)の方向へ確保?(b)の方向へ確保?          00F00000 (a)         ↑       00FFC000 (設定アドレス)         ↓       00FFFFFF (b)        質問3   (1)、(2)共にスタック領域と同時にヒープ領域も指定がありません。   これらは指定しなくても問題ないものなのでしょうか?   また、熟練者の方は指定しないものなのでしょうか? よろしくおねがいします。

  • jQueryのエラーコードの意味を教えてください

    jQueryのエラーコードの意味を教えてください。 「Uncaught RangeError: Maximum call stack size exceeded」 animate関数を使っているのですが、 サイトが全く動かなくなってしまい、Chormeで確認したところ 「Uncaught RangeError: Maximum call stack size exceeded」という エラーが出ていました。 調べているのですが、英文サイトばかりで、意味が今一つ掴めません。 調べた内容は、 (最大コールスタックサイズを超えました) 変数の呼び出しに問題アリ 関数は自由に呼び出せるが、無限に呼び出せる訳ではないみたい 全く意味がわからず、苦戦しています。 出来れば詳しく意味を教えていただけると嬉しいです。 (参考になる分かりやすいサイトでも結構です) 宜しくお願いします。

  • 皆さんが会社でソースコードを作成する際、スタックオーバーを事前にどのように

    皆さんが会社でソースコードを作成する際、スタックオーバーを事前にどのように 回避、またどのように使用スタック量を把握してますか? ・関数内のオート変数を片っ端からsizeoffして加算する ・UNIX系だとGDBのフック関数を使うやり方があったような。。。? ・地道に関数を見ながら使ったオート変数の大きさを手計算する などが挙げられますが、これといって効果的な良い方法がなく 会社では皆んな頭を抱えています。 技術者としてスタック量を常に気にするのは当然ですが、短納期/徹夜しまくり の職場環境では、 ロジックを組むのに精一杯で、実装後CPU TRAPを起こしてから気づくのが実情です。 何か良い知恵があれば幸いです。 ちなみに私は、組み込み系です。

  • 大きな配列を使うには?

    BCCにJavaからポーティングしましたが、配列 int array[max]で、150000程度の大きさを超えると、メモリ不足で止まってしまいます。BCCかリンカのオプションで、ヒープやスタックサイズを変更する具体的な方法、または、大きな配列を上手く使う方法を教えてください。(プログラムはこんな感じ。) #define max_array 140000 /* このサイズを変更したい */ void main() { char array[max_array] ; この後、ヒープも使うのですが、(そのメモリ確保も必要)そこまで 行かない。。。。 (MSのVC++2005でも、同様になりました。) 10数年ぶりにプログラムをしている初心者です。 よろしくお願いします。

  • 【VC++6.0(MFC)】スタックメモリサイズの変更方法

    いつも大変お世話になっております。 VC++初心者です。 スタックメモリサイズがデフォルトで1Mが設定されているようですが、 それを確認、及び、変更する方法を教えていただけませんでしょうか。 (具体的には、1.0Mから0.5Mにしたいです。) ちなみに、某サイトで 「プロジェクトのプロパティ→リンカ→システム→スタックのサイズの設定」 で変更可能であるとあったのですが、「プロジェクトのプロパティ」が何を指すのか分かりませんでした。 お手数ですが、よろしくお願いします。

  • 1変数関数と2変数関数について

    2つの1変数関数 z(x)=2x+1, z(y)=3y+5 から z(x,y)=axy+bx+cyの形を持つ2変数関数の導出をしたいのですが、どのように計算すればよいのか教えて頂けないでしょうか。 また、2変数関数を2つの1変数関数へ分解することは可能なのでしょうか? 以上、お手数をお掛け致しますが何卒宜しくお願い致します。 先日類似の質問をさせて頂いていたのですが、一部誤記もありましたので 再度質問をさせて頂きます。

  • テーブルサイズ制限について

    webで検索していたところ、テーブルにはデフォルトでサイズ制限(4G)があり(OSによる制限もあるみたいですが)、データが増えてきたときにそれを大きくしないとデータが書き込み出来ないという投稿を発見しました。 現在、バージョン5.0を利用しているのですが、テーブルサイズを確認したところ(Max_data_length)、4G以上の数字が表示されています。 バージョン5.0では4Gという制限はなくなったのでしょうか?デフォルトから変更していないので、よく分からないのですが。。。

    • ベストアンサー
    • MySQL
  • メモリのセクションに関して

    こんばんは。 表題の通り、セクション領域に関して3点ほどご質問が御座います。 (1)グローバル変数は、  ・0でない初期化を行う→.dataセクション  ・0で初期化、または、初期化なし→.bssセクション  上記のようにメモリに配置されると思いますが、  上記をstatic宣言した場合でも結果は同じでしょうか?  (static宣言したグローバル変数) (2)スタック、ヒープそれぞれが属するセクションは、それぞれ専用の  スタックセクション、ヒープセクションという名のセクションがあるという認識であっていますでしょうか?  (.dataでもなく、.bssでもなく、.textでもなく、.rodataでもなく。。。) (3)プログラム中に宣言した変数名や、そのアドレスを使用して、属しているセクションを確認することが出来る方法はありますでしょうか? どうかご教授をお願い致します。

  • staticの動作について

    C++で趣味でゲームを作っているのですが、staticを使ったときのローカル変数の動作について質問があります。 いまいち、ローカル変数の動作が分かっていないのですが、大雑把には、関数が読み出される毎に空いてるメモリを探して、そこを確保する物だと思ってます。 で、staticを用いて宣言すると内容が保持されると言うことは、これは始めに一回だけメモリの確保をして、以降はそれを継続して使っているというものなのでしょうか? だとすると、staticをつかったローカル変数の方が、繰り返しメモリの確保が行われ無い分、処理が早いということでしょうか? いま、ゲーム内では、描画用の関数描画基準座標とサイズを受け渡して入るのですが、どうしても内部で描画終了点と開始点のクリップを計算する必要があり、そのためにどうしても計算した開始点、終了点を保持する変数が必要になっています。 しかし、描画関数はキャラの分と背景描画の分とパーティクルの描画の分と、ゲーム1ループないでも1000回近く(多いときは2000回ぐらい)呼び出されてます。 その度にメモりの確保をされるのはなんか気分が悪いなぁと思ってstaticを何となくつているのですが、実際の所staticを着けたら動作がはやくなるとかと言うことは無いのでしょうか? 宜しくおねがします。

専門家に質問してみよう