Description Details Author(s) References See Also Examples
This package implements a general framework for utilizing R to harness the power
of NVIDIA GPU's. The gmatrix
and gvector
classes allow for easy management
of the separate device and host memory spaces. Numerous numerical operations are
implemented for these objects on the GPU. These operations include matrix
multiplication, addition, subtraction, the kronecker product, the outer product,
comparison operators, logical operators, trigonometric functions, indexing, sorting,
random number generation and many more.
Package: | gmatrix |
Type: | Package |
Version: | 0.1 |
Date: | 2013-5-10 |
License: | GPL-2 |
LazyLoad: | yes |
Depends: | methods |
To move an R object to the GPU use the g
function. To move the object back the the host use the h
function.
Standard operations such as matrix multiplication or addition may be performed on GPU objects as with any matrix
or vector
object in R.
The gmatrix
and gvector
classes contain a type
slot which determines if the data is stored as a "double"
, "single"
, "integer"
or "logical."
The gmatrix
and gvector
objects store only a pointer to an object on the GPU device. Thus, a line such as y<-x
will duplicate the pointer but not the actual data on the GPU. One should use instead y<-gdup(x)
.
Numerous random number generators such as grnorm
have been implemented in this package. This package is intended to work with the companion package rcula
which implements matrix factorization and inversions methods.
Nathan Morris
None
rcula-package
, g
, h
, gmatrix-class
, gvector-class
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | #Look at available GPU devices (use setDevice to change the device)
listDevices()
#Creating GPU objects
g_x=g(1:10) #transfer a sequence to the GPU
g_y=gseq(1,10) #create a sequence on the GPU
g_A=gmatrix(grnorm(100),10,10,dup=FALSE) #create a random 10x10 matrix
#look at and change the properties of these objects
type(g_x)
type(g_A)
type(g_x)="d" #'d' may be used as short form of"double"
length(g_x)
dim(g_A)
nrow(g_A)
#Perform some simple calculations
g_ans=g_x %*% log(abs(g_A)) %*% sin(-g_y)
g_rowsum= rowSums(g_A)
#Move data back to the host
h_ans=h(g_x)
h_roswum =h(g_A)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.