Windows環境でSARscapeをはじめて利用する際に、ENVIツールボックスのいずれかのSARscapeツールを起動するとENVIが停止する、という現象が確認されることがあります。この場合には、以下のいずれかが原因である可能性が考えられます。
原因1: ログインユーザ名に日本語が使用されている場合
Windows 10の仕様上、初回起動時に設定することが求められるログインユーザは通常はマイクロソフトアカウントに紐づけられたものとなります。この過程で日本語のユーザ名を作成・設定すると、CドライブのUsers配下には日本語を伴ったユーザ名のフォルダが生成されます。
例) C:\Users\田中太郎\
ENVIおよびSARscapeは仕様上、このログインユーザのフォルダ直下にENVI中で行われた設定を記録する.idlというフォルダを生成します。SARscapeはマルチバイトコードに完全には対応しておらず、このことが原因となって、今回と同様の現象が発生する問題が確認されています。
※
すべての日本語のユーザでこの問題が発生するというわけではありません。しかしながら、環境依存文字の使用や和名の組み合わせなどによっては発生する可能性があります。この場合、英数字表記のアカウントを端末上に新たに作成し、この新たなユーザで操作することで問題が回避できるかをご確認ください。
原因2: GPUにかかる負荷が一時的に増大することで、グラフィックス処理がフリーズしている場合
この現象が発生しているか確認するには、まずコマンドプロンプトを起動し、以下のコマンドを実行してください。
cd "C:\Program Files\SARMAP SA\SARscape\bin"
sarxinfo.exe | find "Platform"
【結果】
Platform 0 . . . : NVIDIA CUDA
Platform 1 . . . : Intel(R) OpenCL HD Graphics
GPUとCPUの2つが搭載されている環境の場合、上記のように2つの結果が得られます。次に、GPUに設定されている番号(ここではNVIDIAが設定されている0番)を明示して、以下のコマンドを実行します。これは、指定のプラットフォーム(-p)で動作テストを行うためのコマンドです。
cd "C:\Program Files\SARMAP SA\SARscape\bin"
sarxtest.exe -w -p 0 -d 0
もしここでタイムアウトとなった場合、TDR(Timeout Detection & Recovery)の値を増やすことが結果として要求されます。
この詳細については、SARscapeの開発元であるsarmapの公開情報に記載があります。
上記の公開情報によると、「ディスプレイグラフィックスを担うGPUがOpenCLデバイスとしての役割も担っている場合、GPUにかかる負荷が一時的に増大することで、グラフィックス処理がフリーズする場合がある」、と説明されています。この過負荷を判断するしきい値(タイムアウト上限値)としてデフォルトでは2秒が設定されていますが、これを変更することが今回の問題の解決策になる可能性があります。
※
本回避策については、OSの設定変更に関わるためユーザ様での作業となり、弊社で変更内容やシステム・他のアプリケーションへの影響については保証を致しかねます。管理者権限を伴うマシンの設定変更に関する操作となりますので、実行する場合には操作前に回復できるよう、バックアップの取得を推奨いたします。
推奨されている手順は、以下の通りです。
- デスクトップ左下Windowsアイコンを右クリックします
- 「ファイル名を指定して実行」を選択します
- 「regedit」を入力し、レジストリエディタを起動します
- HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers を選択します
- 右クリック -> 新規 -> DWORD (32ビット)値を選択します
- TdrDelayという名前を付けます
- 作成したTdrDelayを右クリックし、修正を選択します
- 10進数で「10」と設定します(TDRをデフォルトの2秒から10秒に更新しました)
- マシンを再起動します
こののち、コマンドプロンプトで以下の2つのテストが正常に通過することをご確認ください。
cd "C:\Program Files\SARMAP SA\SARscape\bin"
sarxtest.exe -w -p 0 -d 0
sarxtest.exe -w -p 1 -d 0
このテストが正常通過することで、TDRが原因による処理不具合が改善されていると思われます。