Maison > développement back-end > Tutoriel Python > Pourquoi ne puis-je pas allouer de grands tableaux NumPy sur Ubuntu et comment puis-je y remédier ?

Pourquoi ne puis-je pas allouer de grands tableaux NumPy sur Ubuntu et comment puis-je y remédier ?

Linda Hamilton
Libérer: 2024-11-23 21:34:14
original
358 Les gens l'ont consulté

Why Can't I Allocate Large NumPy Arrays on Ubuntu, and How Can I Fix It?

Contraintes d'allocation de mémoire dans Numpy pour les grands tableaux

Face à une erreur lors de la tentative d'allocation d'un grand tableau numpy sur Ubuntu 18, "Impossible de allouer un tableau avec une forme et un type de données", ce problème n'est pas rencontré sur MacOS. La raison derrière cette disparité réside dans le mode de gestion des surcharges du système.

Gestion des surcharges et allocation de mémoire

Le mode de gestion des surcharges détermine la manière dont le système gère les demandes d'allocation de mémoire. Dans le mode par défaut (0), le noyau vérifie s'il y a suffisamment de mémoire physique pour s'engager dans la demande d'allocation. Dans le cas contraire, il refuse l'attribution. En mode overcommit 1, le noyau autorise toujours les allocations, quelle que soit la mémoire physique disponible.

Résolution

Pour résoudre ce problème sur Ubuntu, vous devez activer le mode overcommit 1. En tant que root, exécutez la commande suivante :

$ echo 1 > /proc/sys/vm/overcommit_memory
Copier après la connexion

Cela changera le mode de gestion du surengagement en 1, permettant l'allocation du grand tableau numpy.

Tableaux clairsemés et mémoire virtuelle

Le mode de surcommission 1 peut être utile pour les tableaux clairsemés, où seule une petite partie de la mémoire allouée est réellement utilisée. En effet, le système n'engage de mémoire physique que sur les pages sur lesquelles il est explicitement écrit, conservant ainsi la mémoire physique.

Avertissement

Il est important de noter qu'en mode de surcommission 1 autorise des allocations importantes, cela peut conduire à une instabilité potentielle du système si la mémoire allouée dépasse la mémoire physique disponible. Utilisez le mode de surcommission 1 avec prudence et surveillez de près l'utilisation de la mémoire de votre système.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal