Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapa Saya Tidak Boleh Memperuntukkan Tatasusunan NumPy yang Besar pada Ubuntu Walaupun Memori Mencukupi?

Mengapa Saya Tidak Boleh Memperuntukkan Tatasusunan NumPy yang Besar pada Ubuntu Walaupun Memori Mencukupi?

Linda Hamilton
Linda Hamiltonasal
2024-12-09 04:33:15787semak imbas

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

Isu Peruntukan Memori dengan Peruntukan Tatasusunan Numpy pada Ubuntu

Apabila memperuntukkan memori penting kepada tatasusunan Numpy pada Ubuntu 18, pengguna mungkin menghadapi masalah ralat seperti "Tidak dapat memperuntukkan tatasusunan dengan bentuk dan jenis data." Isu ini timbul walaupun mempunyai memori yang mencukupi dan ia tidak diperhatikan pada MacOS.

Punca Punca

Isu ini berpunca daripada mod overcommit lalai (0) pada Ubuntu . Dalam mod ini, kernel mengehadkan peruntukan memori untuk mengelakkan halaman fizikal yang terlalu komit. Ini menjadi kebimbangan apabila memperuntukkan memori untuk tatasusunan bersaiz besar seperti yang ditentukan, yang memerlukan kira-kira 282 GB.

Penyelesaian

Untuk memperuntukkan tatasusunan dengan jayanya, anda boleh tukar mod terlebih komitmen kepada 1. Ini secara berkesan membolehkan mod "sentiasa terlebih komitmen", membenarkan peruntukan tidak kira sama ada memori fizikal mencukupi.

Untuk menetapkan mod terlebih komitmen kepada 1 sebagai akar, laksanakan arahan berikut:

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

Pertimbangan Susunan Jarang

Penyelesaian ini membolehkan anda memperuntukkan ruang untuk tatasusunan yang jarang atau kebanyakannya kosong. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa anda harus menulis kepada tatasusunan secara eksplisit untuk memperuntukkan halaman fizikal di mana data wujud. Ini boleh menjadi penting untuk penggunaan memori yang cekap.

Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Memperuntukkan Tatasusunan NumPy yang Besar pada Ubuntu Walaupun Memori Mencukupi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn