Inclusion du package CUDA et vérification du support.

Needs["CUDALink`"]
CUDAQ[]

Informations sur la carte graphique.

CUDAInformation[]

Comparaison du temps d’exécution du produit matriciel. L’ajout du paramètre “TargetPrecision”->”Single”, précise à Mathematica de traiter les composantes de Agpu et Bgpu comme des nombres à virgule flottante de simple précision (float); par défaut, la précision “double” serait attribuée. Il est nécessaire d’utiliser la même précision dans les deux expériences (CPU et GPU) car sinon le résultat pourra légèrement différer.

Acpu=RandomReal[1,{5000,5000}];
Bcpu=RandomReal[1,{5000,5000}];
Agpu=CUDAMemoryLoad[Acpu,Real,"TargetPrecision"->"Single"];
Bgpu=CUDAMemoryLoad[Bcpu,Real,"TargetPrecision"->"Single"];

AbsoluteTiming[(Acpu.Bcpu)[[1,1]]]

AbsoluteTiming[
CUDAMemoryGet[CUDADot[Agpu,Bgpu]][[1,1]]]

Libération de la mémoire GPU.

CUDAMemoryUnload[Agpu,Bgpu];