Heim >Backend-Entwicklung >Python-Tutorial >Warum kann ich unter Ubuntu keine großen NumPy-Arrays zuweisen und wie kann ich das Problem beheben?

Warum kann ich unter Ubuntu keine großen NumPy-Arrays zuweisen und wie kann ich das Problem beheben?

Linda Hamilton
Linda HamiltonOriginal
2024-11-23 21:34:14397Durchsuche

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

Speicherzuweisungseinschränkungen in Numpy für große Arrays

Beim Versuch, ein großes Numpy-Array unter Ubuntu 18 zuzuweisen, tritt ein Fehler auf: „Nicht möglich Array mit Form und Datentyp zuweisen“ tritt dieses Problem unter MacOS nicht auf. Der Grund für diese Ungleichheit liegt im Overcommit-Behandlungsmodus des Systems.

Overcommit-Behandlung und Speicherzuweisung

Der Overcommit-Behandlungsmodus bestimmt, wie das System Speicherzuweisungsanforderungen verwaltet. Im Standardmodus (0) prüft der Kernel, ob genügend physischer Speicher vorhanden ist, um die Zuweisungsanforderung auszuführen. Ist dies nicht der Fall, verweigert es die Zuteilung. Im Overcommit-Modus 1 lässt der Kernel immer Zuweisungen zu, unabhängig vom verfügbaren physischen Speicher.

Lösung

Um dieses Problem unter Ubuntu zu beheben, müssen Sie den Overcommit-Modus aktivieren 1. Führen Sie als Root den folgenden Befehl aus:

$ echo 1 > /proc/sys/vm/overcommit_memory

Dadurch wird der Overcommit-Handhabungsmodus auf 1 geändert, wodurch die Zuweisung des großen Numpy-Array.

Sparse Arrays und virtueller Speicher

Der Overcommit-Modus 1 kann für spärliche Arrays nützlich sein, bei denen nur ein kleiner Teil des zugewiesenen Speichers tatsächlich verwendet wird. Dies liegt daran, dass das System physischen Speicher nur für die Seiten festlegt, auf die explizit geschrieben wird, wodurch physischer Speicher gespart wird.

Warnung

Es ist wichtig, dies im Overcommit-Modus zu beachten 1 große Zuweisungen zulässt, kann es zu potenzieller Systeminstabilität kommen, wenn der zugewiesene Speicher den verfügbaren physischen Speicher übersteigt. Verwenden Sie Overcommit-Modus 1 mit Vorsicht und überwachen Sie die Speichernutzung Ihres Systems genau.

Das obige ist der detaillierte Inhalt vonWarum kann ich unter Ubuntu keine großen NumPy-Arrays zuweisen und wie kann ich das Problem beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn