トラブルシューティングと FAQ#
初学者が最もよくぶつかる問題の 症状 → 原因 → 対処 のリファレンスです。段階別:ビルド/インストール・ インポート・実行時・並列。
ビルドとインストール#
import qcが失敗:undefined symbol: omp_get_num_procs(MKL ビルド)MKL スレッド層が固定されていません。
MKL_THREADING_LAYER=GNU(とMKL_INTERFACE_LAYER=LP64)を設定 します。make setupがこれらを.vscode/my.envとenv.shに書きます;シェル/カーネルがそれらを読むことを 確認してください。import qcが失敗:symbol not found … __gfortran_concat_string(macOS,openblas-bundled)静的リンクの OpenBLAS/LAPACK がロード時に
libgfortranを必要とします。インストールの章 のようにRUSTFLAGSで dylib としてリンクします(-L $(brew --prefix gcc)/lib/gcc/current -l dylib=gfortran)。- ビルドが
libxc.pcを探して失敗 システムの libxc が見つかりません。同梱ソースを使います:
--features xc-bundled(xc-systemの代わり)。- 素の
cargo build -p qc-pyが Python C-API シンボルで失敗 拡張は素の
cargo buildではなくmaturin develop/maturin buildでビルドします — maturin が拡張 モジュールのリンカ設定を供給します。
インポートと環境#
ModuleNotFoundError: No module named 'qc'(ノートブックやスクリプトで)インタプリタ/カーネルが qc-rs の入った uv venv でない。VSCode では正しいカーネル(
uvプロジェクト配下)を 選び、シェルではその venv を有効化します。import sys; print(sys.executable)で確認 —…/.venv/bin/pythonの はずです。uv add …の直後にimport qcが壊れるuv addが編集可能なqc_rs拡張を venv から prune します。再ビルドします:make install(またはmaturin develop)。依存を追加した後の想定挙動です。qc.GPU_ENABLED/qc.XC_ENABLED/qc.PCM_ENABLEDが予期せずFalseその機能がコンパイルされていません。機能つきで再ビルド(
--features …,cuda/xc-bundled/pcm)。既定 ビルドは CUDA なし(GPU_ENABLED == False)です。
実行時#
ValueError: eri="4c-cuda" requires … the cuda feature and a CUDA GPU非
cudaビルド(または可視 GPU なし)で GPU 戦略を要求しました。cudaで再ビルドするか、CPU のeri=を 使います(GPU の章)。ValueError: unknown iop key "…"綴り間違い/存在しない IOP キー。
qc.iop.list()で有効キーを一覧し、qc.iop.describe(key)で調べます (IOP リファレンス)。- RI-MP2 がエラー、または誤った数を返す
RI-MP2 は相関フィッティング補助基底が必要です —
qc.chk.new(...)にric=(例ric="cc-pvdz-ri/mp2fit")を設定します。非 RI の MP2 経路はありません(ポスト SCF の章)。- すべての結合が約 1.9 倍長い / 貼った幾何で SCF が収束しない
原子単位の座標を
unit="bohr"なしで与えました。既定はオングストロームです。mychk.coordinates()(常に bohr)で確認し、unit=を正しく設定します。ImportError: qc.view 3D rendering needs py3Dmolビューア依存を入れます:
uv add py3dmol --project "$UV_PROJECT"(uv addが prune するので、その後 qc-rs を 再ビルド)。2 次元のplot_*は matplotlib を使い影響を受けません。- SCF が
converged == False トランスクリプトを読みます(
run(log="stdout"))。エネルギーがまだ下降 →max_cycleを上げるか 2 次のalgorithm="qc"/"trah";振動 →damping/level_shiftを足す、小ギャップはsmearing(SCF の章)。eri="4c-incore"でメモリ不足全積分集合が RAM に収まりません。
4c-auto(自動フォールバック)、4c-direct(再計算)、または RI ファミリを 使います(ERI 戦略)。- 開殻(例 対称なクラスターカチオン)が ROHF で収束しない
準縮退/非局在ホール状態は多参照で、単一行列式の ROHF になれません。UHF/UKS を、多くは
guess(..., spin_break="mix")とともに使います(SCF の章)。
並列(MPI / スレッド)#
- コアを増やしても(
nthread=)速くならない 分子が小さく、ボトルネックがスレッド化された XC/BLAS 領域ではなく(逐次の)積分組み立てです(Amdahl)。より 大きな DFT ジョブはスケールします(スレッドの章)。
- クラスタの MPI ジョブがエラーなく起動時にハングする
相互接続トランスポートが未選択です。
cat /sys/class/infiniband/*/ports/*/stateを確認(ACTIVEのはず); 明示的に選ぶか、共有メモリ--mca pml ob1 --mca btl self,smにフォールバック (MPI の章)。PML UCX could not be selectedmpi4py が
THREAD_MULTIPLEで初期化し、この UCX は使えません。from mpi4py import MPIの前にimport mpi4py; mpi4py.rc.thread_level = "serialized"を置きます。no auxiliary transport … Destination is unreachable(UCX)UCX RC トランスポートは
ud補助が必要です。UCX_TLSにud_verbsを含めます(例rc_verbs,ud_verbs,sm,self)。ibv_reg_mr … Cannot allocate memory(InfiniBand、バッチジョブで)memlockulimit が低すぎます。管理者が計算ノードのLimitMEMLOCKを上げます(バッチジョブは低い上限を継承)。- MPI ジョブがノード間で予想より遅い
InfiniBand ではなく TCP/Ethernet にフォールバックした、または通信律速の可能性。IB トランスポートを明示的に 選び、
-xで環境を転送し、--map-by numa --bind-to coreでランクをバインドします。
それでも詰まったら#
ターミナルの AI コーディングアシスタント(Claude Code / Codex)は、エラーと ビルド設定を読んで通常 1 ステップで診断できます — これが意図された qc-rs のワークフローです。バグは、プロジェクト は GitHub Issues を使います。