Difference between revisions of "GPU Access"
(46 intermediate revisions by 11 users not shown) | |||
Line 1: | Line 1: | ||
− | [[Category: | + | [[Category:Scheduler]][[Category:GPU]] |
+ | {|align=right | ||
+ | |__TOC__ | ||
+ | |} | ||
+ | ==GPUs Per Group== | ||
− | + | Normalized Graphics Processor Units (NGUs) include all of the infrastructure (memory, network, rack space, cooling) necessary for GPU-accelerated computation. Each NGU is equivalent to 1 GPU presently, however newer GPUs such as the A100s may require more than 1 NGU to access in the future. | |
− | + | In order to use GPU resources HPG groups need to have an active NGU investment. To check if your group(s) has GPUs allocated and available with the command <code>$ slurmInfo -g group_name</code> (with the [https://help.rc.ufl.edu/doc/UFRC_environment_module module "ufrc"] loaded). | |
− | + | Researchers can add NGUs to their allocations by filling out the [https://www.rc.ufl.edu/get-started/purchase-allocation/ Purchase Form] or requesting a [https://www.rc.ufl.edu/services/request-trial-allocation/ Trial Allocation]. | |
− | =GPU | + | ==Select a GPU Partition== |
+ | There are two partitions that contain GPUs: the ''hwgui'' partition for visualization and the ''gpu'' partition for general GPU computation. | ||
− | + | ==Open On Demand Access== | |
+ | {{Note|Interactive OnDemand Jobs in the GPU partition are limited to 12 hrs. Computational GPU jobs are limited to 14 days. Each GPU job requires at least one CPU core|warn}} | ||
− | == Hardware Accelerated GUI == | + | To access GPUs using [https://help.rc.ufl.edu/doc/Open_OnDemand Open OnDemand], please check the form for your application. If your application supports multiple GPU types, choose the GPU partition and specify number of GPUs and type: |
+ | <div style="column-count:2"> | ||
+ | *To request access to one GPU (of any type, use this gres string): | ||
+ | gpu:1 | ||
+ | |||
+ | *To request multiple GPUs (of any type, use this gres string were n is the number of GPUs you need): | ||
+ | gpu:n | ||
+ | |||
+ | *To request a specific type of GPU, use this gres string (requesting geforce GPUs in this example): | ||
+ | gpu:geforce:1 | ||
+ | |||
+ | *To request a A100 GPU, use this gres string: | ||
+ | gpu:a100:1 | ||
+ | </div> | ||
+ | |||
+ | |||
+ | ==GPU-enabled Services== | ||
+ | |||
+ | Types of GPU partitions are listed below. | ||
+ | |||
+ | === Hardware Accelerated GUI === | ||
GPUs in these servers are used to accelerate rendering for graphical applications. These servers are in the SLURM "'''hwgui'''" partition. Refer to the '''[[Hardware Accelerated GUI Sessions]]''' page for more information on available resources and usage. | GPUs in these servers are used to accelerate rendering for graphical applications. These servers are in the SLURM "'''hwgui'''" partition. Refer to the '''[[Hardware Accelerated GUI Sessions]]''' page for more information on available resources and usage. | ||
− | == GPU Assisted Computation == | + | === GPU Assisted Computation === |
− | A number of high performance applications installed on HiPerGator implement GPU-accelerated computing functions via CUDA to achieve significant speed-up over CPU | + | A number of high performance applications installed on HiPerGator implement GPU-accelerated computing functions via CUDA to achieve significant speed-up over CPU calculations. These servers are in the SLURM '''"gpu"''' partition (<code>--partition=gpu</code>). |
− | === Hardware Specifications for the GPU Partition=== | + | ==== Hardware Specifications for the GPU Partition==== |
We have the following types of NVIDIA GPU nodes available in the "gpu" partition: | We have the following types of NVIDIA GPU nodes available in the "gpu" partition: | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
{| style="margin-left: 5px; width:80%" | {| style="margin-left: 5px; width:80%" | ||
| | | | ||
{| class="wikitable" style="text-align: center" | {| class="wikitable" style="text-align: center" | ||
− | !GPU!!Host Quantity!!Host Architecture!!Host Memory!!Host Interconnect!!CPUs per Host!!CPUS per Socket!!GPUs per Host!!CPUs per GPU!!Memory per GPU!!SLURM Feature!!GRES GPU type | + | !GPU Specs!!Host Quantity!!Host Architecture!!Host Memory!!Host Interconnect!!CPUs per Host!!CPUS per Socket!!GPUs per Host!!CPUs per GPU!!Memory per GPU!!SLURM Feature!!GRES GPU type!!Technical Ref |
|- | |- | ||
− | | style="width: 14%;"| | + | | style="width: 14%;"|GeForce 1080Ti||1||Intel Haswell||128 GB||FDR IB||28||14||2||14||11GB||n/a||geforce||[https://www.geforce.com/hardware/desktop-gpus/geforce-gtx-1080-ti/specifications Specifications] |
|- | |- | ||
− | | style="width: 14%;"|GeForce | + | | style="width: 14%;"|GeForce 2080Ti||32||Intel Skylake||187 GB||EDR IB||32||16||8||4||11GB||2080ti||geforce||[https://www.nvidia.com/en-us/geforce/graphics-cards/rtx-2080-ti Specifications] |
|- | |- | ||
− | | style="width: 14%;"|GeForce 2080Ti|| | + | | style="width: 14%;"|GeForce 2080Ti||38||Intel Cascade Lake||187 GB||EDR IB||32||16||8||4||11GB||2080ti||geforce||[https://www.nvidia.com/en-us/geforce/graphics-cards/rtx-2080-ti Specifications] |
|- | |- | ||
− | | style="width: 14%;"| | + | | style="width: 14%;"|Quadro RTX 6000 SLI||6||Intel Cascade Lake||187 GB||EDR IB||32||16||8||4||23GB||rtx6000||quadro||[https://www.nvidia.com/en-us/design-visualization/quadro/rtx-6000/ Specifications] |
|- | |- | ||
− | | style="width: 14%;"| | + | | style="width: 14%;"|NVIDIA A100 [https://www.nvidia.com/en-us/data-center/nvlink/ NVSWITCH]||140||AMD EPYC ROME||2 TB||HDR IB||128||16||8||16||80GB||a100||a100||[https://www.nvidia.com/en-us/data-center/a100/ Specifications] |
|} | |} | ||
|} | |} | ||
− | For a list of node features | + | For a list of additional node features, see the [[Available Node Features]] page. |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | To select a specific type of GPU within a partition please use either a SLURM constraint (e.g. --constraint=rtx6000) or a GRES with the needed GPU type (--gres or --gpu=a100:1). | |
− | |||
− | == | + | == Compiling CUDA Enabled Programs == |
− | |||
− | + | The most direct way to develop a custom GPU accelerated algorithm is with the CUDA programming, please refer to the [[Nvidia CUDA Toolkit]] page. The current CUDA environment is cuda/11. However, C++ or Python packages numba and PyCuda are other ways to program GPU algorithms. | |
− | + | == Conda Environments with GPU == | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | To make sure your code will run on GPUs install a recent <code>cudatoolkit</code> package that works with the NVIDIA drivers on HPG (currently 12.x, but older versions are still supported) alongside the pytorch or tensorflow package(s). See RC provided tensorflow or pytorch installs for examples if needed. Mamba can detect if there is a gpu in the environment, so the easiest approach is to run the mamba install command in a gpu session. Alternatively, you can run mamba install on any node or if a cpu-only pytorch package was already installed by explicitly requiring a gpu version of pytorch when running mamba install. E.g. | |
− | + | mamba install cudatoolkit=11.3 pytorch=1.12.1=gpu_cuda* -c pytorch | |
− | |||
− | + | See also [[Conda]]. | |
− | |||
− | + | == Multiple GPUs == | |
− | + | Find the following resource for [https://github.com/YunchaoYang/MultiGPUTraining2023 Multi-GPU Training]. | |
− | |||
− | + | == Slurm and GPU Use == | |
− | + | View instructions for using GPUs and scheduling GPU jobs with SLURM at [[Slurm and GPU Use]] | |
− |
Latest revision as of 18:02, 27 June 2024
GPUs Per Group
Normalized Graphics Processor Units (NGUs) include all of the infrastructure (memory, network, rack space, cooling) necessary for GPU-accelerated computation. Each NGU is equivalent to 1 GPU presently, however newer GPUs such as the A100s may require more than 1 NGU to access in the future.
In order to use GPU resources HPG groups need to have an active NGU investment. To check if your group(s) has GPUs allocated and available with the command $ slurmInfo -g group_name
(with the module "ufrc" loaded).
Researchers can add NGUs to their allocations by filling out the Purchase Form or requesting a Trial Allocation.
Select a GPU Partition
There are two partitions that contain GPUs: the hwgui partition for visualization and the gpu partition for general GPU computation.
Open On Demand Access
To access GPUs using Open OnDemand, please check the form for your application. If your application supports multiple GPU types, choose the GPU partition and specify number of GPUs and type:
- To request access to one GPU (of any type, use this gres string):
gpu:1
- To request multiple GPUs (of any type, use this gres string were n is the number of GPUs you need):
gpu:n
- To request a specific type of GPU, use this gres string (requesting geforce GPUs in this example):
gpu:geforce:1
- To request a A100 GPU, use this gres string:
gpu:a100:1
GPU-enabled Services
Types of GPU partitions are listed below.
Hardware Accelerated GUI
GPUs in these servers are used to accelerate rendering for graphical applications. These servers are in the SLURM "hwgui" partition. Refer to the Hardware Accelerated GUI Sessions page for more information on available resources and usage.
GPU Assisted Computation
A number of high performance applications installed on HiPerGator implement GPU-accelerated computing functions via CUDA to achieve significant speed-up over CPU calculations. These servers are in the SLURM "gpu" partition (--partition=gpu
).
Hardware Specifications for the GPU Partition
We have the following types of NVIDIA GPU nodes available in the "gpu" partition:
|
For a list of additional node features, see the Available Node Features page.
To select a specific type of GPU within a partition please use either a SLURM constraint (e.g. --constraint=rtx6000) or a GRES with the needed GPU type (--gres or --gpu=a100:1).
Compiling CUDA Enabled Programs
The most direct way to develop a custom GPU accelerated algorithm is with the CUDA programming, please refer to the Nvidia CUDA Toolkit page. The current CUDA environment is cuda/11. However, C++ or Python packages numba and PyCuda are other ways to program GPU algorithms.
Conda Environments with GPU
To make sure your code will run on GPUs install a recent cudatoolkit
package that works with the NVIDIA drivers on HPG (currently 12.x, but older versions are still supported) alongside the pytorch or tensorflow package(s). See RC provided tensorflow or pytorch installs for examples if needed. Mamba can detect if there is a gpu in the environment, so the easiest approach is to run the mamba install command in a gpu session. Alternatively, you can run mamba install on any node or if a cpu-only pytorch package was already installed by explicitly requiring a gpu version of pytorch when running mamba install. E.g.
mamba install cudatoolkit=11.3 pytorch=1.12.1=gpu_cuda* -c pytorch
See also Conda.
Multiple GPUs
Find the following resource for Multi-GPU Training.
Slurm and GPU Use
View instructions for using GPUs and scheduling GPU jobs with SLURM at Slurm and GPU Use