冷めたコーヒー

Weniger, aber besser

Gurobi: HostID mismatch の対処法

本記事の内容は正確ではありません.後日修正をします.

TL;DR

  • OctoberSky Co., Ltd. に HostID mismatch が発生した旨を連絡し,新規でライセンス・キーコードを発行してもらう
  • 旧ライセンス・キーコードを削除し,新ライセンス・キーコードを所定の位置に配置する
  • gurobi.sh を実行し,gurobi が呼び出せることを確認する

バージョン情報

  • grbprobe version 9.5.1, build v9.5.1rc2
  • PLATFORM=linux64

何が起こったのか

ここにある通り,grbprobe を実行したときの HOSTID の値が,以前のものと変わっていました.これにより,ライセンス・キーコード gurobi.lic に記載されている HOSTID の値と一致しないために gurobi を呼び出すことができないという事象が発生しました.

解決まで

最初は自分の環境側で対処可能な事象だと思ったですが,話はそう単純ではなかったようで,Gurobi Optimizer の日本総代理店を務める OctoberSky Co., Ltd. へ上記の旨を連絡しました.ライセンス・キーコードが MAC アドレスと紐づいているようで,やはりインターネット回線の変更に伴い MAC アドレスが変更された(or した)ことが原因のようでした.

後は,メールのやり取りにて,マシン変更申込届の提出を促されるので,それに従います.必要な情報としては,grbprobe の実行結果とマシン変更申込届です.

Gurobi Optimizer は,いくつかの実行ファイルを使うのですが,これらのファイルが必要なときに参照できるようにするべく,いくつかの環境変数を修正する必要があります.このとき,(インストール先に依りますが)bash シェルのユーザであれば,.bashrc に以下の行を加える必要があります:

export GUROBI_HOME="/opt/gurobi951/linux64"
export PATH="${PATH}:${GUROBI_HOME}/bin"
export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${GUROBI_HOME}/lib"

また,ライセンス・キーコードの差し替えにおいて,旧ライセンス・キーコードは削除した上で行いましょう.削除を行わない(e.g., リネーム)で差し替えを行うと,gurobi を呼び出したときに旧ライセンス・キーコードを読み取りに行ってしまい,HostID mismatch を起こします.これは,gurobi.lic に記載されている HOSTID の値と,grbprobe を実行して確認できる HOSTID の値が一致しているため,原因が分かりにくい事象であるのですが,きちんと旧ライセンス・キーコードを削除すると解消します.

Q&A

Q: gurobipy.GurobiError: HostID mismatch (licensed to xxxxxxxx, hostid is yyyyyyyy) というエラーが発生しました.どうすればいいですか.
A: gurobi.lic に記載されている HostID が手元の環境の HostID と合致していません.代理店へ連絡しましょう.

Q: Environment variable GUROBI_HOME is not set. というエラーが発生しました.どうすればいいですか.
A: 環境変数が正しく設定されていない可能性があります.もしくは,旧ライセンス・キーコードが残っている可能性があります.前者の場合は,作業時の注意 を参考に環境変数を設定してください.後者の場合は,旧ライセンス・キーコードを物理的に完全に削除してください.