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

## Interface GPUMemoryAllocator

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

    public interface GPUMemoryAllocator

### Method Summary

All Methods Instance Methods Abstract Methods
`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 Detail

#### allocate

    void allocate​(jcuda.Pointer devPtr,
                  long size)
           throws jcuda.CudaException

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