Frequently asked questions
--------------------------
Can external collaborators access Bora?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Access to Bora is currently reserved to members and students of the Physics Department at UniTS. We may reconsider this policy in the future.
How do I install Python packages?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
It is recommended to install Python packages in a `Python virtual environment `_. While not strictly mandatory, it is generally best practice to create a dedicated environment for each project. This approach ensures a clean and reproducible setup and avoids potential conflicts between dependencies of different projects.
Navigate to your project’s directory
.. code::
cd my_project
Create a virtual environment in folder ``env/``
.. code::
python3 -m venv env
To activate the environment and install packages within it
.. code::
. env/bin/activate
pip install
When you submit a job to the cluster, the job will inherit the environment of your shell, hence it will use the current virtual environment.
Once you have finished using the environment and you want to go back to the default Python distribution
.. code::
deactivate
You can have several environments (e.g. one per project) and they can be deleted anytime by just deleting the ``env/`` folder.
Can I use Julia?
~~~~~~~~~~~~~~~~
Yes, of course! Just `install Julia `_ in your home
.. code::
curl -fsSL https://install.julialang.org | sh
In the future, we may provide a Julia module.
How do I install Julia packages?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
We recommend to install Julia packages in a local virtual environment. While not strictly mandatory, it is generally best practice to create a dedicated environment for each project. This approach ensures a clean and reproducible setup and avoids potential conflicts between dependencies of different projects.
Navigate to your project’s directory
.. code::
cd my_project
Open Julia, and activate a new environment:
.. code::
using Pkg
Pkg.activate(".”)
This creates a new Julia environment in the current directory and activates it.
While the environment is active, install any required packages:
.. code::
Pkg.add("PackageName”)
This updates the two files Project.toml and Manifest.toml in your project folder to track the installed dependencies. Once the necessary packages are installed, you can exit the Julia session.
To run a Julia script with the packages from the environment, navigate to the project directory and run:
.. code::
julia --project=. path_to_script/myscript.jl
The --project flag ensures that Julia uses the dependencies from the current project environment. Of course, this is the command you would put in your job script. Alternatively, you can add the lines
.. code::
using Pkg
Pkg.activate(".”)
at the beginning of your script.
Can I use docker images?
~~~~~~~~~~~~~~~~~~~~~~~~
On Bora we have `apptainer `_ as a software to run containers. You can load it with
.. code::
module load apptainer
Docker images are compatible with apptainer, check out `this page <(https://apptainer.org/docs/user/main/docker_and_oci.html>`_ for instructions to use them with apptainer.
How can I submit a job on a specific node?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Typically, you should let the scheduler find the first available node for your job. If you need specific resources (GPUs, large amount of RAM, ...) check out the `user guide `_ to configure your job accordingly.
How can I use the Intel compiler?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
To use the Intel compilers (``ifort`` and ``icc``) and the MKL libraries
.. code::
module intel-oneapi-compilers
module intel-oneapi-mkl
You can put this command in your ``~/.bashrc`` file, so that it is executed every time you log in.
Can squeue print the number of cores used by jobs?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Add this to your ``~/.bashrc`` file
.. code::
alias squeue='squeue -o "%.7i %.9P %.8j %.8u %.2t %.10M %.6D %C %R"'
Log out, log in again and type ``squeue``
How do I get the number of idle cores in the cluster?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Use the following command
.. code::
queue -o "%t %C" | awk "BEGIN{a=0}/R/{a=a+\$2}END{print 216-a}"