Welcome to the SlurmQuest Challenge Guide. This walkthrough shows how to get the most value from our interactive challenges.
Contact Us
Please help us improve this guide by sharing feedback via the contact link in the sidebar. You can give feedback about anything: unclear steps, missing screenshots, or ideas for new exercises.
If you found the guide useful, or if you got stuck while using the challenges, please let us know.
About This Guide
⚠️ This guide is not a syllabus. It reflects common production issues, not an exhaustive list of SLURM concepts.
- We aim to be a one-stop shop for queue triage, fair-share tuning, and GPU scheduling patterns.
- Each challenge is built from a real failure we saw on production clusters.
- The Advanced section contains material that is relevant for multi-tenant GPU fleets.
Note: We currently focus on the General track. Some advanced modules will remain incomplete while we collect more real incidents.
How to Use This Guide
- Use the Module Progress dropdown on the right of the page to track your status.
- Stuck on a challenge? Ask for help in the community Discord linked from the sidebar.
- Read through all starred resources before continuing.
- Difficulty reflects how challenging the problem is expected to be after you read the module. It is not comparable across modules.
- Skipping around is fine—mark a module as Skipped and come back later.
See the Introducing Modules section for more information on pacing.
Making an Account
Create an account via the button at the bottom-left. That way, your settings and progress are backed up and synced across devices.
Changing Your Language
Use the Settings button at the bottom-left to change your language (CLI snippets and UI copy adjust accordingly).
#include <bits/stdc++.h>
using namespace std;
int main() {
int N;
cin >> N;
vector<int> height(N);
for (int i = 0; i < N; i++) { cin >> height[i]; }
// dp[N] is the minimum cost to get to the Nth stone
vector<int> dp(N, INT_MAX);
// dp[0] = 0 is our base case since we're already at the first stone
dp[0] = 0;
// for each state, calculate the states it leads to
for (int i = 0; i < N - 1; i++) {
// jump one stone
dp[i + 1] = min(dp[i + 1], dp[i] + abs(height[i] - height[i + 1]));
// jump two stones
if (i + 2 < N) {
dp[i + 2] = min(dp[i + 2], dp[i] + abs(height[i] - height[i + 2]));
}
}
cout << dp[N - 1] << endl;
}Your current language is Bash.
For Instructors
If you're teaching for free, you may use any parts of this guide. Please credit SlurmQuest and link to the site. Reach out if you have a specific request for what material you'd find helpful.
Licensing notes: No part of this site may be used, reproduced, redistributed, commercialized, or sold without prior written permission.