🌎

Slurm上でのvscodeのdebug設定

に公開

目的:slurm上で、vscodeのgui debugを利用したい

一般的なvscodeのdebugerの使い方

slurmはジョブスケジューラーです。

設定方法

前提:

  • login nodeとcompute nodeが一致してる (必須条件) 満たせない場合はこれを使う
  • srunが使える

以下の場合の例

  • python
  • uv
  • slurmのpartitonはshort
  • gpu(cuda)を使用
  • vscodeのremote development mode(cursorも可)

以下の2つのファイルの設定が必要

  • .vscode/launch.json
  • .vscode/tasks.json

launch.json

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "SLURM GPU Debug main_simulation.py",
            "type": "debugpy",
            "request": "launch",
            "program": "${workspaceFolder}/main_simulation.py",
            "console": "integratedTerminal",
            "cwd": "${workspaceFolder}",
            "python": "${workspaceFolder}/.venv/bin/python",
            "env": {
                "PYTHONPATH": "${workspaceFolder}",
                "VIRTUAL_ENV": "${workspaceFolder}/.venv",
                "PATH": "${workspaceFolder}/.venv/bin:${env:PATH}"
            },
            "args": [
                "--seed", "0",
                "--output_dir", "tmp",
            ],
            "justMyCode": false,
            "preLaunchTask": "srun-gpu-debug"
        }
    ]
}

task.json

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "srun-gpu-debug",
            "type": "shell",
            "command": "srun --partition=short --gres=gpu:1 --job-name=DEBUG --pty bash",
            "group": "build",
            "presentation": {
                "echo": true,
                "reveal": "always",
                "focus": false,
                "panel": "shared",
                "showReuseMessage": true,
                "clear": false
            },
            "problemMatcher": [],
            "options": {
                "cwd": "${workspaceFolder}"
            }
        }
    ]
}

ポイント:

  • preLaunchTaskでsrunを実行する
  • argsでコードの引数を指定する
  • packageのpathが${workspaceFolder}/.venv/bin/以下にある

Discussion