OpenMP を指定したら Segmentation fault した
- [症状]
- OpenMP を使用するようコンパイルオプションをつけてライブラリをビルドし, かつ OpenMP を使用しているルーチンを含むプログラムを実行すると Segmentation fault で途中終了する.
- OpenMP を指定しないとエラーは発生しない.
- [Answer] : スタックメモリサイズの問題.
各スレッドがプライベートに使用するスタック領域が不足していることによるエラーの可能性があります. この場合は, OpenMP が提供する環境変数を適切に変更することで解決されます. 以下のコマンドを実行することで, プライベートスタックの容量を変更できます.
export OMP_STACKSIZE=512000
スタックサイズ指定の際の数値の単位は KB です. 上の例では, 各プライベートスタックサイズは 512 MB です.