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

## Class UnifiedMemoryAllocator

- java.lang.Object
- - org.apache.sysds.runtime.instructions.gpu.context.UnifiedMemoryAllocator

All Implemented Interfaces:
  GPUMemoryAllocator

    public class UnifiedMemoryAllocator
    extends Object
    implements GPUMemoryAllocator

### Constructor Summary

Constructors
Constructor and Description
`UnifiedMemoryAllocator()`

### Method Summary

All Methods Instance Methods Concrete 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.

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

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

### Constructor Detail

#### UnifiedMemoryAllocator

    public UnifiedMemoryAllocator()

### Method Detail

#### allocate

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

Allocate memory on the device.

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

#### free

    public void free(jcuda.Pointer devPtr)
              throws jcuda.CudaException

Frees memory on the device

Specified by:
  `free` in interface `GPUMemoryAllocator`
Parameters:
  `devPtr` - Device pointer to memory to free
Throws:
  `jcuda.CudaException` - if error occurs

#### canAllocate

    public boolean canAllocate(long size)

Check if there is enough memory to allocate a pointer of given size

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

#### getAvailableMemory

    public long getAvailableMemory()

Gets the available memory on GPU that SystemDS can use.

Specified by:
  `getAvailableMemory` in interface `GPUMemoryAllocator`
Returns:
  the available memory in bytes