# Concepts & Terminology

Neurox has a number of different concepts and terminology that are important to understand.

### Users

* A **User** is associated with a unique email address
* A **User** can belong to one or more **Groups**
* **Users** can log in as local users or via their configured [Identity Provider (IdP)](https://docs.neurox.com/installation/identity-providers)

### Groups

* A group associates **Users** with **Workloads**
* Groups are automatically synced from your configured [Identity Provider (IdP)](https://docs.neurox.com/installation/identity-providers)
* Your IdP also determines which **Users** are part of which **Groups**
* In addition to users, groups also have an associated set of **Projects** and **Quotas**
* **Projects** and **Quotas** are configured in Neurox and not in your IdP

### Projects

* **Projects** are company initiatives
* Every **Project** has an associated **Priority Limit** and **Priority Default**
* Every P**roject** has at least one allowed **Node Pool**
* A single P**roject** may be associated with multiple **Groups**

### Node Pools

* A **Node Pool** is a set of GPU nodes within your [**Workload Clusters**](https://docs.neurox.com/architecture/overview)
* **Node Pools** typically have similar GPU hardware across all nodes
* The total number of GPUs in a **Node Pool** constrains the maximum value of its summed associated **Quotas**

### Priority Limits

* A **Priority Limit** is a numeric value directly associated with **Projects**
* **Priority Limits** determine the maximum **Priority Level** for a **Workload**

### Priority Default

* A P**riority Default** is a numeric value directly associated with **Projects**
* **Priority Defaults** determine the default **Priority Level** that is selected for a **Workload**

### Priority Levels

* A **Priority Level** is a numeric value directly associated with **Workloads**
* The value of a priority level can be set to a preset less than or equal to the **Workload's** **Project's** **Priority Limit**
* During eviction, higher **Priority Levels** take precedence over lower ones

### Quotas

* A **Quota** allocates a number GPUs within a single **Node Pool** to a specific **Group**
* A **Quota** guarantees that number of GPU resources within a **Node Pool** for that **Group's Workloads**
* The sum of of all **Quotas** associated with a given **Node Pool** must not exceed the number of GPUs within that **Node Pool**

### Workloads

* A **Workload** is an application that requests GPU
* Every **Workload** has an associated **Group**, **Project**, and **Priority Level**
* By association, every W**orkload** also has a set of **Node Pools** and **Quotas**
* The user may select the **Node Pools**, and override **Priority Level**
