This tutorial will teach you what an SBU is and how to estimate it.

What is an SBU?

An SBU stands for System Billing Unit, and it is a unit that is used to account for the usage of computing resources in Snellius. In short it measures the amount of compute cores that are used in a job over an amount of time. Thus an SBU can also be called a "core-hour." SBU is a more general term, and allows us (the computing center) to normalize the cost of different computing resources. 

The simplest example of calculating an SBU is (N_cores * N_hours). For example:

I have a program that runs on 1 core for 1 hour, therefore (1 core x 1 hour =1 SBU) I will be charged 1 SBU for this job.

How do I calculate SBUs when I am using a machine like Snellius?

If this idea is brand new to you its probably best to look at our HPC user guide located here and better yet, join one of our month introduction to supercomputing classes. They are advertised here 

First you need understand a little about the type of "node" that you will run on. There is a simple outline of the node types here and a more verbose outline here. Basically You cannot simply request 1 core for your job. You need to request a node and run your job on that node. So this means that you need to account for all the cores that you will use in that node. 

Simplest example

Lets take a look at my program that uses 1 core example again. I want to run my program on Snellius for 3 hours. Since I have to do this on a basic compute node (on Snellius this is a thin node and contains 128 cores). This will cost me (128 cores x 3 hours) = 384 SBUs

Wait! According to the Snellius partitions and accounting page I don't have to request a full node I can request 1/4th of a node and only use 32 cores from a full node (how do I do that? read here and here.) So now my estimation becomes (32 cores x3 hours) = 96 SBUs.

Estimating SBUs for my project

You probably have been asked to estimate the SBUs required for your entire project. You need to ask yourself these questions:

  1. How long does one run of my program/workflow take?
  2. How many cores will my program/workflow use?
  3. What type of node/s should I submit to?
  4. How many runs will I need in my project?

Lets follow this example. I am a researcher who wants to simulate the fluid dynamics of a group of dutch cyclists that are cycling on a dyke in the wind. I want to know what is the best formation that these cyclist should be in, in order to reduce their drag. I know that one simulation typically takes about 9.5 hours to run (using 30 cores). I want to simulate about 1000 different orientations of the cyclists in order to understand what is the best orientation for the cyclists. I see that since I need 30 cores, I will ask for 1/4th of a thin node (32 cores). So my estimation of SBUs is then.... (32 cores * 10 hours * 1000 simulations)  = 320,000 SBUs. Now given that I will do some post processing of the data created from the simulations and maybe some simulations may crash... I will ask for 400,000 SBUs to include a little overhead.



  • No labels