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

# Interface GPUMemoryAllocator

All Known Implementing Classes:
  `CudaMemoryAllocator`, `UnifiedMemoryAllocator`

public interface GPUMemoryAllocator

## Method Summary

Modifier and Type
Method
Description
`void`
`allocate(jcuda.Pointer devPtr, long size)`
Allocate memory on the device.
`boolean`
`canAllocate(long size)`
Check if there is enough memory to allocate a pointer of given size
`void`
`free(jcuda.Pointer devPtr)`
Frees memory on the device
`long`
`getAvailableMemory()`
Gets the available memory on GPU that SystemDS can use.

## Method Details

### allocate

void allocate(jcuda.Pointer devPtr, long size)
Allocate memory on the device.

Parameters:
  `devPtr` - Pointer to allocated device memory
  `size` - size in bytes
Throws:
  `jcuda.CudaException` - if unable to allocate

### free

void free(jcuda.Pointer devPtr) throws jcuda.CudaException
Frees memory on the device

Parameters:
  `devPtr` - Device pointer to memory to free
Throws:
  `jcuda.CudaException` - if error occurs

### canAllocate

boolean canAllocate(long size)
Check if there is enough memory to allocate a pointer of given size

Parameters:
  `size` - size in bytes
Returns:
  true if there is enough available memory to allocate a pointer of the given size

### getAvailableMemory

long getAvailableMemory()
Gets the available memory on GPU that SystemDS can use.

Returns:
  the available memory in bytes