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

# Class CudaMemoryAllocator

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

All Implemented Interfaces:
  `GPUMemoryAllocator`

public class CudaMemoryAllocator extends Object implements GPUMemoryAllocator

## Constructor Summary

Constructors
Constructor
Description
`CudaMemoryAllocator()`

## 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.
`static void`
`resetUnusableFreeMemory()`

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

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

## Constructor Details

### CudaMemoryAllocator

public CudaMemoryAllocator()

## Method Details

### allocate

public void allocate(jcuda.Pointer devPtr, long size)
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

### resetUnusableFreeMemory

public static void resetUnusableFreeMemory()