A GPU backend implements two important abstract classes:
org.apache.sysml.runtime.controlprogram.context.GPUContext
org.apache.sysml.runtime.controlprogram.context.GPUObject
The GPUContext is responsible for GPU memory management and initialization/destruction of Cuda handles.
A GPUObject (like RDDObject and BroadcastObject) is stored in CacheableData object. It gets call-backs from SystemML's bufferpool on following methods
The current prototype supports Nvidia's CUDA libraries using JCuda wrapper. The implementation for the above classes can be found in:
org.apache.sysml.runtime.controlprogram.context.JCudaContext
org.apache.sysml.runtime.controlprogram.context.JCudaObject
https://developer.nvidia.com/cuda-downloads
and install CUDA 7.5.https://developer.nvidia.com/cudnn
and install CuDNN v4.git clone https://github.com/MysterionRise/mavenized-jcuda.git mvn -Djcuda.version=0.7.5b -Djcudnn.version=0.7.5 clean package CURR_DIR=`pwd` JCUDA_PATH=$CURR_DIR"/target/lib/" JAR_PATH="." for j in `ls $JCUDA_PATH/*.jar` do JAR_PATH=$JAR_PATH":"$j done export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$JCUDA_PATH
Note for Windows users:
http://developer.download.nvidia.com/compute/redist/cudnn/v4/cudnn-7.0-win-x64-v4.0-prod.zip
To use SystemML's GPU backend,
-gpu
flag.For example: to use GPU backend in standalone mode:
java -classpath $JAR_PATH:systemml-0.10.0-incubating-SNAPSHOT-standalone.jar org.apache.sysml.api.DMLScript -f MyDML.dml -gpu -exec singlenode ...