Name Mode Size
R 040000
inst 040000
man 040000
src 040000
tests 040000
vignettes 040000
.Rbuildignore 100644 0 kb
.gitignore 100644 0 kb
DESCRIPTION 100644 2 kb 100644 2 kb
NAMESPACE 100644 2 kb
NEWS 100644 1 kb 100644 2 kb
# gpuMagic An R interface to write OpenCL functions This package provide an easy way to access the power of the GPU using the familar R language. The user can write the regular R function and call the gpuSapply function to digest it. The gpuSapply function will translate the R function into openCL code and run it in the GPU, which is supposed to be faster than CPU in math operation. Since the package is still under development, tons of bugs is hidden somewhere and waiting to surprise someone. Please use it with your best judgement. Before you start to use the package, please make sure you have the CUDA toolkit installed. Even though the package uses openCL as the background language, the current makevars only support CUDA path. If you have another openCL platform, you need to customize the makevars to compile the package. After installed the package, here is an example about how to use gpu to compute the matrix multiplication: ``` #C=A%*%B MatMul<-function(ind,A,B){ tmp=B[,ind] C=A%*%tmp return(C) } #Initialize the data n=1024 m=10000 k=1024 A=matrix(runif(n*m),n,m) B=matrix(runif(m*k),m,k) #The traditional way to compute the matrix multiplication res_cpu_stupid=sapply(1:k,MatMul,A,B) res_cpu_clever=A%*%B #Use the GPU to run the code res_gpu_genius=gpuSapply(1:n,MatMul,A,B) #compute the error range(res_gpu_genius-res_cpu_stupid) range(res_gpu_genius-res_cpu_clever) ``` Using the GPU compute, you can expect around 3-6X speedup compared with the optimal CPU counterpart function(e.g %*%). However, since it is not easy to find the optimal CPU code when you are developing your own algorithm, it is more common that you have to rely on the sapply function to loop your code, therefore you will get much more benefit by using this package.