This page documents answers to questions that we’ve been asked or that we’re surprised we haven’t been asked yet. These questions could be about working in Unity’s environment, a difference between Unity and OSC (or other HPC environments), or unexpected behavior of Unity (without judgement of why this is unexpected or who finds it unexpected).
Unlike OSC, Unity does not automatically scale the amount of memory for a job based on the number of cores requested. Instead, if you do not explicitly request a specific amount of memory, you get 3 GB. If you’re requesting more than one core, 3 GB of memory is probably not what you want. Make your request specific in your PBS script file:
#PBS -l nodes=1:ppn=4 #PBS -l mem=16GB
or in one line (note use of colon and comma):
#PBS -l nodes=1:ppn=4,mem=16GB
$TMPDIR is not created
The environment variable
$TMPDIR is set to the appropriate value but the directory itself is not created. To use the temporary directory, you need to execute the command
mkdir $TMPDIR at the command line in an interactive session or include that line in a batch file for a submitted job.
Don’t request all of a node’s memory
While the list of compute nodes shows the total amount of memory for each node, not all of the memory is available for jobs; some is required for the node’s operating system. This means that if you request 192 GB, for example, that job cannot run on the nodes with 192 GB (or less) of memory. Instead, the job will try to run on a node with more than 192 GB (with our current nodes on Unity, at least 256 GB). You may either have to wait for one of the larger nodes to become available or not be able to run because the nodes with the most memory are exclusive. Instead, ask for a little less than the full amount of memory available on a node (say, 184 GB to run on a 192-GB node).
Using a GPU
In order to use a GPU, you need not only specify a node that has a GPU and that you want to use the GPU but also that you want to use a CPU core.
For an interactive session, that looks like
qsub -I -l nodes=1:ppn=1:gpus=1
or in batch mode, include a line like
#PBS -l nodes=1:ppn=1:gpus=1
in your PBS script file.
Using R in Unity
R is installed locally on some (but not all) of the compute nodes. This can lead to some confusion–you don’t know if R is there or what version it might be. A more robust solution when using R (whether in batch mode or interactive mode) is to first load the Intel module and then load R.
module load intel module load R
You can also specify a particular version of R if you don’t want the default (after loading the intel module, run
module avail to see what versions of R are available.
How do I change my default shell?
You interact with Unity through a program called a shell; over the years, many shells have been developed. Probably the most commonly-used shell is bash, which is the default for Unity. In a stand-alone Linux system, you can change your default shell with the
chsh command. However, Unity gets its user information from ASCTech’s directory service; to change your default shell on Unity, submit a request or send email to email@example.com.