Notas para contenedor de docker:
Comando de docker para ejecución de la nota de forma local:
nota: cambiar <ruta a mi directorio>
por la ruta de directorio que se desea mapear a /datos
dentro del contenedor de docker.
docker run --gpus all --rm -v <ruta a mi directorio>:/datos --name jupyterlab_nvidia_r_gputools_container -p 8888:8888 -d palmoreck/jupyterlab_nvidia_r_gputools:1.1.0_10.2
password para jupyterlab: qwerty
Detener el contenedor de docker:
docker stop jupyterlab_nvidia_r_gputools_container
Documentación de la imagen de docker palmoreck/jupyterlab_nvidia_r_gputools:1.1.0_10.2
en liga.
Nota: si se desean ejecutar los ejemplos que se presentan a continuación de forma local, es necesario tener una tarjeta gráfica NVIDIA.
Para ejecutar el notebook si están usando google colab:
Elegir en el menú las opciones Entorno de ejecución > Cambiar tipo de entorno de ejecución > Acelerador por Hardware > GPU Runtime > Change > Hardware Accelerator > GPU .
Instalar gputools con los siguientes comandos:
system('bash -c "wget https://cran.r-project.org/src/contrib/Archive/gputools/gputools_1.1.tar.gz"')
system('bash -c "R CMD INSTALL --configure-args="--with-r-include=/usr/share/R/include" gputools_1.1.tar.gz"')
creando celdas del notebook.
Ver googlecolab github para información sobre google colab.
Extraído de: gputools: A Few GPU Enabled Functions: Provides R interfaces to a handful of common functions implemented using the Nvidia CUDA toolkit. Some of the functions require at least GPU Compute Capability 1.3 ...
Github: nullsatz
Siguientes ejemplos extraídos de la documentación de gputools
: man pages.
In [1]:
library(gputools)
In [2]:
chooseGpu(deviceId = 0)
In [3]:
getGpuId()
Calculate Various Correlation Coefficients With a GPU
In [4]:
example(gpuCor)
Fitting Linear Models using a GPU-enabled QR
In [5]:
example(gpuLm)
In [6]:
example(gpuMatMult)
gpuQr: Estimate the QR decomposition for a matrix
In [7]:
example(gpuQr)
In [8]:
?gpuDist
In [9]:
N <- 9
set.seed(2020)
m <- matrix(sample(3, size = N*N, replace = T), nrow = N)
In [10]:
m
In [11]:
sqrt(sum((m[1,]-m[2,])^2))
In [12]:
sqrt(sum((m[1,]-m[3,])^2))
In [13]:
print(dist(m))
In [14]:
system.time(dist(m))
In [15]:
system.time(gpuDist(m))
In [16]:
N <- 1e3
set.seed(2020)
m <- matrix(sample(100, size = N*N, replace = T), nrow = N)
In [17]:
system.time(dist(m))
In [18]:
system.time(gpuDist(m))
In [19]:
install.packages("microbenchmark",lib="/usr/local/lib/R/site-library/",
repos="https://cran.itam.mx/",verbose=TRUE)
In [20]:
library(microbenchmark)
In [21]:
mbk<-microbenchmark(
dist(m),
gpuDist(m),
times=5
)
In [22]:
print(mbk)