情報詳細Q:HALCONメモリマネージメントについての詳細内容を教えて頂けないでしょうか。A:HALCONメモリマネージメントについては各メモリについてご説明致します。1.global memoryHALCONオペレータコール「間」で持続する必要があるオブジェクトに割り当てられるメモリ。(すなわち、オペレータの戻り値として確保されるメモリ。)たとえば、tupleの要素として返される文字列は、グローバルメモリから割り当てられます。1024バイト未満のグローバルメモリオブジェクトは、グローバルメモリキャッシュに格納され、不要になったときには解放されません。このメモリは、システムの malloc()関数を呼び出すこと無く、HALCONで再利用することができます。1024バイト以上のグローバルメモリオブジェクトは必要なくなった場合に解放されます。グローバルメモリキャッシュはOnまたはOffにすることはできますが、サイズを制限したり指定することはできません。割り当てるサイズは、そのシステムのアライメント係数の倍数に切り上げられる形で必要なサイズを割り当てます。parallel HALCONの場合、グローバルメモリキャッシュはsharedまたはthead localになります。(set_systemの'global_mem_cache'の設定に準じます。) 2.Image memory 画像に使用されるメモリです。 このメモリは独自のイメージキャッシュがあります。 最大サイズはset_systemのimage_cache_capacityにより制御できます。 3.temporary memory オペレーターの実行中にのみ使用するメモリです。 このメモリはテンポラリメモリキャッシュにキャッシュされます。 グローバルメモリとは異なり、テンポラリメモリは大きなスーパーブロック(SuperBlocks)に割り当てられ、必要に応じて細分されます。 スーパーブロックはスタックのように管理されます。(つまり、新しいオブジェクトは常にスタックの最上部に配置され、オブジェクトは作成された逆の順序でのみ解放されます。)常に1つの現在のスーパーブロックが割り当てられ、HALCONのメモリ要求を満たすために使用されます。現在のスーパーブロックに十分な空きメモリが残っていない場合、新しいスーパーブロックが割り当てられ、これが現在のものになります。前のスーパーブロックに残っている空きメモリは、新しい現在のスーパーブロックが解放されるまで未使用のままになります。スーパーブロックのサイズは、現在のイメージサイズに基づくヒューリスティックによって決定されます。このサイズは、set_systemのalloctmp_max_blocksizeパラメータによって制限されます。 (HALCONが最大ブロックサイズより大きいメモリブロックを要求する場合、この設定に関係なくより大きいスーパーブロックが割り当てられます。)parallel HALCONの場合、テンポラリメモリキャッシュはthread localになります。すなわち、つまり、HALCONを使用するすべてのスレッドは独自のキャッシュを持ちます。 添付ファイルタイトルHALCONメモリマネージメントについてURL 名000005648公開状況公開済み検証状況公開済み