Lors de l'allocation de mémoire importante aux tableaux Numpy sur Ubuntu 18, les utilisateurs peuvent rencontrer un erreur du type "Impossible d'allouer un tableau avec une forme et un type de données." Ce problème survient malgré une mémoire suffisante et n'est pas observé sur MacOS.
Le problème provient du mode de surcharge par défaut (0) sur Ubuntu. . Dans ce mode, le noyau restreint l'allocation de mémoire pour éviter la surcharge des pages physiques. Cela devient un problème lors de l'attribution de mémoire à des baies de grande taille comme celle spécifiée, qui nécessite environ 282 Go.
Pour allouer la baie avec succès, vous pouvez changez le mode de surcommission en 1. Cela active effectivement le mode « toujours surcommission », permettant l'allocation indépendamment du fait que la mémoire physique soit ou non. suffisant.
Pour définir le mode de surcommission sur 1 en tant que root, exécutez la commande suivante :
$ echo 1 > /proc/sys/vm/overcommit_memory
Ceci La solution vous permet d'allouer de l'espace aux tableaux clairsemés ou pour la plupart vides. Cependant, il est important de noter que vous devez écrire explicitement dans le tableau pour allouer des pages physiques où existent des données. Cela peut être crucial pour une utilisation efficace de la mémoire.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!