通常のサイトでは idl や idlde コマンドでIDLを起動できるように、システム管理者により環境変数/エイリアス/シンボリックリンクが適切に設定されているか、設定手段(Modulesソフトウェアパッケージなど)が提供されているはず。
そうでない場合には、次のようにして IDL の起動に必要な環境変数やエイリアスを設定できる(インストールパスは環境やバージョンにより異なる)。
# csh/tcshの場合source /usr/local/harris/idl/bin/idl_setup# bashの場合. /usr/local/harris/idl/bin/idl_setup.bash# kshの場合. /usr/local/harris/idl/bin/idl_setup.ksh重要な環境変数として、IDLのインストールパスを示す IDL_DIR がある (デフォルトは /usr/local/harris/idl87 など)。idl や idlde コマンドでは IDL_DIR が指すパスに置かれたIDLが起動する。通常は自動設定されるか、システム管理者が適切に設定してくれているはずだが、正しく設定されていない場合には手動で設定するか、上記のidl_setupを用いて設定する必要がある。
IDLの設定を変更する方法 (優先順):
さらにIDL_STARTUP 設定でプログラム(バッチファイル)を指定することで、IDL開始時に任意のプログラムを実行させることもできる。
現在適用されている設定一覧を確認するには、IDL上で
HELP, /PREFERENCEとする。
2列目の項目が、当該設定がどこで設定されているかを示す。CMDLINE: コマンドライン引数, ENV: 環境変数, USERFILE: ユーザー設定ファイル, DISTFILE: ディストリビューション設定ファイル, DEFAULT: IDLのデフォルト (優先順)
また設定ファイル(コマンドライン[指定された場合のみ]、ディストリビューション、ユーザー)のパスが表示される。
次のようにして設定項目の説明、設定変更が反映されるタイミング、デフォルト値を確認できる。
HELP, /PREFERENCE, /FULLある設定項目の現在の値を取得するにはIDL上で次のようにする。
PRINT, PREF_GET('IDL_CPU_TPOOL_NTHREADS')ある設定項目を環境変数を用いて変更するにはIDL開始前に次のようにする。
# csh の場合setenv IDL_CPU_TPOOL_NTHREADS 4# bash の場合export IDL_CPU_TPOOL_NTHREADS=4ある設定項目をIDLで変更するには次のようにする。
PREF_SET, 'IDL_CPU_TPOOL_NTHREADS', 4, /COMMIT/COMMIT をつけると変更が即時に反映され、ユーザー設定ファイルにも書き込まれる。つけない場合には、変更は保留され、PREF_COMMIT を実行することで初めて反映される。ただし、IDL_STARTUP など、IDLを再起動するか、.reset_session を実行しないと反映されない設定もある。
ある設定項目をデフォルトの値に戻すにはIDL上で次のようにする。
PREF_SET, 'IDL_CPU_TPOOL_NTHREADS', /DEFAULT, /COMMIT設定の確認・変更は、統合開発環境(idlde)でWindow→Preferences (日本語ではウィンドウ→設定)でGUIでも行うことができる。設定変更の結果はユーザー設定ファイルに書き込まれる。
設定名と値をコロンで区切ったテキストファイル。
IDL_STARTUP : ~/.idl_startupIDL_CPU_TPOOL_NTHREADS : 4IDL_GR_X_RETAIN : 2ディストリビューション設定ファイルにはシステム全体の、ユーザー設定ファイルにはユーザーごとの設定を記述する。設定ファイルの場所はHELP, /PREFERENCEで確認する。ユーザー設定ファイルはPREF_SETや統合開発環境(idlde)の設定画面を用いることでも変更することができる。
IDL起動時にコマンドライン引数で任意の設定ファイルを指定し、一時的に設定を変更することも可能。
ユーザー設定ファイルとディストリビューション設定ファイルはIDLのバージョンによって異なるファイルとなる。IDLのバージョンアップのことを考えると、環境変数かコマンドライン設定ファイルを用いるほうが無難かもしれない。
IDL開始時に自動的に実行するプログラムファイル(IDLバッチファイル)を指定する。ウィンドウ、グラフィックス、フォント、カレントディレクトリなどの初期設定などを行うのに便利。
例: ~/.idl_startup という名前で、バッチファイルを作成する。
DEVICE, DECOMPOSED=1, RETAIN=2, TRUE_COLOR=24次のようにして、IDL開始時に~/.idl_startup を自動的に実行するようにする。
# IDL開始前に csh で環境変数を設定する場合setenv IDL_STARTUP ~/.idl_startup# IDL開始前に bash で環境変数を設定する場合export IDL_STARTUP=~/.idl_startup# IDL上で設定する場合 (ユーザー設定ファイルに保存され、次回起動時か、.reset_session で有効になる)PREF_SET, 'IDL_STARTUP', '~/.idl_startup', /COMMIT# (参考) バッチファイルなのでIDLに直接渡して実行させることもできるidl ~/.idl_startupIDL 8.5以前で IDL_IDLBridgeで子プロセスを開始する際には、IDL_STARTUP で指定されたプログラムは自動実行されない。必要な場合、子プロセスを立ち上げた後、明示的に実行する必要がある。
obj = obj_new('IDL_IDLBridge')obj->Execute, '@' + PREF_GET('IDL_STARTUP')IDL 8.6以降では子プロセスを開始する際に IDL_STARTUP で指定されたプログラムが自動実行されるため、この操作は不要。
IDLのプログラムを検索するパスを指定する。IDL_PATH で指定されたパスにあるプログラムは、フルパスを指定して手動コンパイルする必要はなく、自動コンパイル・実行できるようになる。
複数のパスはコロン(Windowsではセミコロン)で区切る。また、パスの前に + をつけると、サブディレクトリの中も検索対象になる。
# IDL開始前に csh で環境変数を設定する場合setenv IDL_PATH '<IDL_DEFAULT>':+$HOME/lib# IDL開始前に bash で環境変数を設定する場合export IDL_PATH='<IDL_DEFAULT>':+$HOME/lib# IDL上で設定する場合 (ユーザー設定ファイルに保存され、即時反映される。!PATHシステム変数もリセットされる)PREF_SET, 'IDL_PATH', '<IDL_DEFAULT>:+$HOME/lib', /COMMIT既に IDL_PATH が設定済みの場合には、既存の IDL_PATH の内容を保持したままに追加するようにする。
# IDL開始前に csh で環境変数に追加設定する場合setenv IDL_PATH '<IDL_DEFAULT>':+$HOME/lib:$IDL_PATH# IDL開始前に bash で環境変数に追加設定する場合export IDL_PATH='<IDL_DEFAULT>':+$HOME/lib:$IDL_PATH# IDL上で設定する場合 (ユーザー設定ファイルに保存され、即時反映される。!PATHシステム変数もリセットされる)PREF_SET, 'IDL_PATH', '<IDL_DEFAULT>:+$HOME/lib:' + PREF_GET('IDL_PATH'), /COMMIT毎回同じ設定を使う場合には、シェルの設定ファイル (~/.cshrc や ~/.bashrc) に書いておくか、PREF_SETでユーザー設定ファイルに設定を保存しておく。
IDL標準のライブラリを使うため、<IDL_DEFAULT> を含めるようにする。/usr/local/rsi/idl/lib や /usr/local/itt/idl/lib のようなIDLのインストールパスを直接指定してしまうと、IDL本体とライブラリでバージョン不一致が発生するなどのトラブルの原因になる。
IDL_PATH 設定が展開された結果は、!PATH システム変数で確認・変更できる。(!path = expand_path(pref_get('IDL_PATH')) と等価)
IDL実行中に一時的にパスを変更する場合には、!PATH システム変数の値を直接書き替える。
コマンドラインの履歴バッファの保持数を変更する。
# IDL開始前に csh で環境変数を設定する場合setenv IDL_RBUF_SIZE 1000# IDL上で設定する場合 (ユーザー設定ファイルに保存され、即時反映される)PREF_SET, 'IDL_RBUF_SIZE', 1000, /COMMIT配列演算などのマルチスレッド動作で用いる最大スレッド数を設定する。
# IDL開始前に csh で環境変数を設定する場合setenv IDL_CPU_TPOOL_NTHREADS 4# IDL上で設定する場合 (ユーザー設定ファイルに保存され、即時反映される)PREF_SET,IDL_CPU_TPOOL_NTHREADS, 4, /COMMIT指定しない場合にはシステムの全論理コアを使用する。Hyper-Threading が有効な環境では、スレッド数を物理コア数に抑えるほうが速くなる場合がある。また、CPU・メモリが複数ノードに分かれている環境(NUMA)や、システムのコア数が非常に多い場合、複数のIDLプロセスを同時に走らせる場合などにも調整するとパフォーマンスが改善される場合がある。
複数のマシンでホームディレクトリを共有している場合等で、IDL_CPU_TPOOL_NTHREADS を 1ノードあたりの物理コア数に自動設定する例:
# csh の場合if ( -x /usr/bin/lscpu ) then set num_cores=`/usr/bin/lscpu -p=CORE,NODE | grep ',0$' | sort -u | wc -l` if ($num_cores > 0) then setenv IDL_CPU_TPOOL_NTHREADS $num_cores endif unset num_coresendif# bash の場合if [ -x /usr/bin/lscpu ]; then num_cores=`/usr/bin/lscpu -p=CORE,NODE | grep ',0$' | sort -u | wc -l` if [ "$num_cores" -gt 0 ]; then IDL_CPU_TPOOL_NTHREADS=$num_cores export IDL_CPU_TPOOL_NTHREADS fi unset num_coresfiダイレクトグラフィックスのウィンドウの再描画の方法を指定する。0: 再描画しない, 1: Xサーバーで管理, 2: IDLで管理。TVRDがうまく動かない場合や、ウィンドウが背面に隠れると描画されたグラフィックスが消えてしまう場合には、2 に変更する。IDL起動後にDEVICEやWINDOWプロシージャのRETAINキーワードでも個別に指定できる。Windows では IDL_GR_WIN_RETAIN。
Xvnc (vncserver) 上でLinux版IDLを利用していて、グラフィックス出力時にXvncが頻繁にクラッシュ(Segmentation Fault)する場合には、Xvnc (vncserver) の起動時に -bs オプションをつけるか、IDL_GR_X_RETAINを0か2に設定すると改善する場合がある。
オブジェクトグラフィックスのレンダリングモードを指定する。0: ハードウェア、1: ソフトウェア。リモートログインで使う場合やWaylandを利用する場合など、ハードウェアレンダリングで不具合が生じる場合には 1 に変更する。一方、IDL 8.7.1 以前ではソフトウェアレンダリングモードで不具合が生じる。WindowsではIDL_GR_WIN_RENDERER。