Package org.apache.sysds.runtime.instructions.gpu.context

# Class GPUContextPool

java.lang.Object
org.apache.sysds.runtime.instructions.gpu.context.GPUContextPool

public class GPUContextPool extends Object

## Field Summary

Fields
Modifier and Type
Field
Description
`static String`
`AVAILABLE_GPUS`
GPUs to use, can specify -1 to use all, comma separated list of GPU numbers, a specific GPU or a range

## Constructor Summary

Constructors
Constructor
Description
`GPUContextPool()`

## Method Summary

Modifier and Type
Method
Description
`static void`
`freeAllGPUContexts()`
Unreserves all GPUContexts
`static int`
`getAvailableCount()`
Get the number of free GPUContexts
`static int`
`getDeviceCount()`
Number of available devices on this machine
`static long`
`initialGPUMemBudget()`
Gets the initial GPU memory budget.
`static void`
`initializeGPU()`
Static initialization of the number of devices Also sets behaviour for J{Cuda, Cudnn, Cublas, Cusparse} in case of error Initializes the CUDA driver All these need be done once, and not per GPU
`static ArrayList<Integer>`
`parseListString(String str, int max)`
Parses a string into a list.
`static List<GPUContext>`
`reserveAllGPUContexts()`
Reserves and gets an initialized list of GPUContexts

### Methods inherited from class java.lang.Object

`equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Field Details

### AVAILABLE_GPUS

public static String AVAILABLE_GPUS
GPUs to use, can specify -1 to use all, comma separated list of GPU numbers, a specific GPU or a range

## Constructor Details

### GPUContextPool

public GPUContextPool()

## Method Details

### initializeGPU

public static void initializeGPU()
Static initialization of the number of devices Also sets behaviour for J{Cuda, Cudnn, Cublas, Cusparse} in case of error Initializes the CUDA driver All these need be done once, and not per GPU

### parseListString

public static ArrayList<Integer> parseListString(String str, int max)
Parses a string into a list. The string can be of these forms: 1. "-1" : all integers from range 0 to max - [0,1,2,3....max] 2. "2,3,0" : comma separated list of integers - [0,2,3] 3. "4" : a specific integer - [4] 4. "0-4" : a range of integers - [0,1,2,3,4] In ranges and comma separated lists, all values must be positive. Anything else is invalid.

Parameters:
  `str` - input string
  `max` - maximum range of integers
Returns:
  the list of integers in the parsed string

### reserveAllGPUContexts

public static List<GPUContext> reserveAllGPUContexts()
Reserves and gets an initialized list of GPUContexts

Returns:
  null if no GPUContexts in pool, otherwise a valid list of GPUContext

### getAvailableCount

public static int getAvailableCount()
Get the number of free GPUContexts

Returns:
  number of free GPUContexts

### getDeviceCount

public static int getDeviceCount()
Number of available devices on this machine

Returns:
  number of available GPUs on this machine

### freeAllGPUContexts

public static void freeAllGPUContexts()
Unreserves all GPUContexts

### initialGPUMemBudget

public static long initialGPUMemBudget() throws RuntimeException
Gets the initial GPU memory budget. This is the minimum of the available memories across all the GPUs on the machine(s)

Returns:
  minimum available memory
Throws:
  `RuntimeException` - if error initializing the GPUs