Chapitre 6. Programmation en R
299
> cl <- makeCluster(4, type = "PSOCK")
> (out <- clusterCall(cl, Sys.getpid)) # PIDs des nœuds du
# cluster.
[[1]]
[1] 8019
[[2]]
[1] 8028
[[3]]
[1] 8037
[[4]]
[1] 8046
6.7.2 Calcul sur cartes graphiques
Le processeur, ou CPU (de l’anglais Central Processing Unit, Unit´ e centrale
de traitement), est le composant de l’ordinateur qui est charg´ e d’ex´ ecuter les
instructions contenues dans les programmes informatiques. Cependant, depuis
quelques ann´ ees, il est maintenant ´ egalement possible d’ex´ ecuter des calculs
sur un GPU (de l’anglais Graphical Processing Unit, Unit´ e graphique de traitement), autrement dit sur une carte graphique. Les cartes graphiques permettant cette op´ eration sont notamment d´ evelopp´ ees par la compagnie Nvidia, et
elles peuvent contenir plusieurs centaines de processeurs de calculs travaillant
en parall` ele. Le gain en termes de temps de calcul peut alors s’av´ erer appr´ eciable. Toutefois, pour utiliser cette technologie, il faut connaˆ ıtre le langage de
programmation CUDA, d´ evelopp´ e par Nvidia. Quelques d´ eveloppeurs R se sont
lanc´ es dans l’aventure et ont commenc´ e `
a regrouper quelques fonctions dans
le package gputools, qui n’est pour l’instant toutefois disponible que pour la
plateforme Linux.
Nous pr´ esentons ci-dessous un petit exemple d’utilisation de ce package. La
carte graphique utilis´ ee est une NVIDIA GeForce GTX 480.
> require("gputools")
> A <- matrix(runif(40000),nrow=200,ncol=200)
> B <- matrix(runif(40000),nrow=200,ncol=200)
> system.time(cor(A, B, method="kendall")) # Calcul sur CPU.
user system elapsed
28.074
0.004 28.137
> system.time(gpuCor(A, B, method="kendall")) # Calcul sur GPU.
user
system elapsed
0.836
0.052
0.891
299
> cl <- makeCluster(4, type = "PSOCK")
> (out <- clusterCall(cl, Sys.getpid)) # PIDs des nœuds du
# cluster.
[[1]]
[1] 8019
[[2]]
[1] 8028
[[3]]
[1] 8037
[[4]]
[1] 8046
6.7.2 Calcul sur cartes graphiques
Le processeur, ou CPU (de l’anglais Central Processing Unit, Unit´ e centrale
de traitement), est le composant de l’ordinateur qui est charg´ e d’ex´ ecuter les
instructions contenues dans les programmes informatiques. Cependant, depuis
quelques ann´ ees, il est maintenant ´ egalement possible d’ex´ ecuter des calculs
sur un GPU (de l’anglais Graphical Processing Unit, Unit´ e graphique de traitement), autrement dit sur une carte graphique. Les cartes graphiques permettant cette op´ eration sont notamment d´ evelopp´ ees par la compagnie Nvidia, et
elles peuvent contenir plusieurs centaines de processeurs de calculs travaillant
en parall` ele. Le gain en termes de temps de calcul peut alors s’av´ erer appr´ eciable. Toutefois, pour utiliser cette technologie, il faut connaˆ ıtre le langage de
programmation CUDA, d´ evelopp´ e par Nvidia. Quelques d´ eveloppeurs R se sont
lanc´ es dans l’aventure et ont commenc´ e `
a regrouper quelques fonctions dans
le package gputools, qui n’est pour l’instant toutefois disponible que pour la
plateforme Linux.
Nous pr´ esentons ci-dessous un petit exemple d’utilisation de ce package. La
carte graphique utilis´ ee est une NVIDIA GeForce GTX 480.
> require("gputools")
> A <- matrix(runif(40000),nrow=200,ncol=200)
> B <- matrix(runif(40000),nrow=200,ncol=200)
> system.time(cor(A, B, method="kendall")) # Calcul sur CPU.
user system elapsed
28.074
0.004 28.137
> system.time(gpuCor(A, B, method="kendall")) # Calcul sur GPU.
user
system elapsed
0.836
0.052
0.891
