Maison > développement back-end > Tutoriel Python > Pourquoi ne puis-je pas allouer de grands tableaux NumPy sur Ubuntu malgré une mémoire suffisante ?

Pourquoi ne puis-je pas allouer de grands tableaux NumPy sur Ubuntu malgré une mémoire suffisante ?

Linda Hamilton
Libérer: 2024-12-09 04:33:15
original
781 Les gens l'ont consulté

Why Can't I Allocate Large NumPy Arrays on Ubuntu Despite Sufficient Memory?

Problèmes d'allocation de mémoire avec l'allocation de tableaux Numpy sur Ubuntu

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.

Root Cause

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.

Solution

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
Copier après la connexion

Sparse Array Considérations

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!

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