Allocation de RAM pour un vecteur

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Thomas Dubos
Messages : 1
Enregistré le : 20 Juil 2018, 15:32

Allocation de RAM pour un vecteur

Messagepar Thomas Dubos » 21 Juil 2018, 07:28

Bonjour,

J'ai des difficulté sous R avec le problème, semble-t-il assez répandu "impossible d'allouer un vecteur de taille XX Go".

Dans mon cas il s'agit de deux procédures, l'une avec un échec sur un vecteur de 1.1 Go et l'autre sur un vecteur de 4.8 Go

J'ai comme ressources matérielles un PC sous Windows 10 avec un processeur 8 cœurs (Xeon E5-1620 v4 3.50 Ghz) et 16 Go de RAM et j'utilise R 3.5.0 en 64 bits.

... je n'imaginais donc pas que mon problème soit une ressource matérielle pour un "petit" vecteur de 1.1 Go

J'ai parcouru le net et essayé plusieurs solutions (memory.limit, --min-vsize, R_MAX_VSIZE, --max-ppsize, priorite haute et execution de R en tant qu'administrateur...) mais rien n'y fait.

Du coup j'ai essayé de comprendre d'où venait le problème :

> gcinfo(TRUE)
[1] TRUE
> myBiomodData <- BIOMOD_FormatingData(resp.var = myResp,
+ expl.var = myExpl,
+ resp.xy = myRespXY,
+ resp.name = myRespName,
+ PA.nb.rep = 1,
+ PA.nb.absences = 5000,
+ PA.strategy = 'random',
+ PA.dist.min = ,
+ PA.dist.max = ,
+ na.rm=TRUE)

-=-=-=-=-=-=-=-=-=-=-=-=-=-= BarBar Data Formating -=-=-=-=-=-=-=-=-=-=-=-=-=-=

! No data has been set aside for modeling evaluation
> Pseudo Absences Selection checkings...
> random pseudo absences selection
> Pseudo absences are selected in explanatory variablesGarbage collection 1459 = 967+228+264 (level 0) ...
160.5 Mbytes of cons cells used (53%)
379.5 Mbytes of vectors used (38%)
Garbage collection 1461 = 968+228+265 (level 0) ...
160.5 Mbytes of cons cells used (53%)
482.3 Mbytes of vectors used (61%)
Garbage collection 1462 = 969+228+265 (level 0) ...
160.5 Mbytes of cons cells used (53%)
659.6 Mbytes of vectors used (84%)
Garbage collection 1463 = 969+228+266 (level 2) ...
160.5 Mbytes of cons cells used (53%)
189.1 Mbytes of vectors used (24%)

...

160.5 Mbytes of cons cells used (53%)
5002.4 Mbytes of vectors used (42%)
Garbage collection 1777 = 1122+288+367 (level 2) ...
160.5 Mbytes of cons cells used (53%)
5002.4 Mbytes of vectors used (35%)
Garbage collection 1778 = 1122+288+368 (level 2) ...
160.5 Mbytes of cons cells used (53%)
9968.1 Mbytes of vectors used (56%)
Garbage collection 1779 = 1122+288+369 (level 2) ...
160.5 Mbytes of cons cells used (53%)
9968.1 Mbytes of vectors used (56%)
Garbage collection 1780 = 1122+288+370 (level 2) ...
160.5 Mbytes of cons cells used (53%)
14933.8 Mbytes of vectors used (69%)
Erreur : impossible d'allouer un vecteur de taille 1.1 Go
> myBiomodData
Erreur : objet 'myBiomodData' introuvable

> gc(TRUE)
Garbage collection 1781 = 1122+288+371 (level 2) ...
160.4 Mbytes of cons cells used (53%)
36.7 Mbytes of vectors used (0%)
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 3003244 160.4 5651730 301.9 3838487 205.0
Vcells 4801284 36.7 1880774788 14349.2 1957396291 14933.8
>

Ce que j'en comprends c'est que les ressources allouées au processus sont déjà au max (memory.size(max=TRUE) renvoie 15290.12 MB, sans même les changements de variables d'environnement R_MAX et autres d'ailleurs) : le processus plante à 14 933.8 MB soit presque 15Go --> +/- toute la RAM dispo sur mon ordi de 16Go de RAM avec les autres processus en cours (Windows etc), mais qu'elles ne suffisent pas à créer le vecteur de 1.1Go (ça plante à 69%)

Ma question est donc la suivante : pourquoi R utilise à priori un peu plus de 20Go de RAM (si 69% = 15Go) pour allouer un vecteur de 1.1 Go ? Et est-ce qu'il existe une solution autre que matérielle et physique (rajouter 16Go de RAM à mon ordi) pour contourner ce problème ?

Merci d'avance
Thomas

Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité