Я хотел бы определить теоретические и практические пределы выделения памяти для выполнения программы на Python, например, как можно создать большой массив с одним запуском, то же самое для тензорного потока, Torch и чистого Python.
Iнаписал небольшие тесты для всех библиотек:
import sys
n=int(sys.argv[1])
if sys.argv[2]=='numpy':
import numpy as np
a=np.random.rand(n*n)
if sys.argv[2]=='python':
a=[0.0005 for _ in range(n*n)]
if sys.argv[2]=='tensorflow':
import tensorflow as tf
a=tf.Variable(tf.random_uniform([n*n],0,1,dtype=tf.float64,seed=0)
init=tf.global_variables_initializer()
sess=tf.InteractiveSession()
sess.run(init)
if sys.argv[2]=='torch':
import torch
torch.set_default_dtype(torch.float64)
torch.Tensor(n*n)
и запустил этот скрипт в командной строке следующим образом: python3 file.py 30000 numpy
Вот ограничения, которых я достиг на двух компьютерах(оба являются сервером Ubuntu 18):
1st computer has cpus - 1, ram- 8gb
2nd computer has cpus - 4, ram - 16gb
numpy: 39000 - 45000 cells
python: 39000 - 42000 cells
torch: 39000 - 45000 cells
tensorflow: 27000 - 31000 cells
1) Разница между двумя экспериментами не удваивается, не могли бы вы помочь мне понять, почему?2) Как узнать теоретические ограничения для библиотек?(Я имею в виду использование только ОЗУ) 3) Тестирование Tensorflow на ЦП показывает те же результаты, что и NumPy, я не прав в коде?Потому что я думал, что он должен хранить большее количество ячеек, чем массив numpy