Максимальный размер матрицы в Scala Breeze или других Java / Scala матричных пакетах? - PullRequest
0 голосов
/ 01 мая 2020

Я пытаюсь написать общий c код моделирования в Scala, который опирается на сетку (матрицу или тензор). После долгих осмотров я решил использовать Breeze для матрицы, потому что (1) его API находится в Scala, что приятно, (2) он достаточно быстрый для того, что мне нужно (не много линейной алгебры, больше удобная структура данных), и (3) это позволяет мне хранить не примитивные значения и сохранять их типы (в моем приложении не все является числовым значением).

Однако я не могу найти информацию о максимальной матрице размер. Мне удалось несколько раз увеличить размер кучи, создав большие тензоры (матрица из 100 000 x 10 000 ячеек, каждая из которых содержит вектор измерения 5), но мне удалось преодолеть это, увеличив размер кучи.

Теперь приведенная выше матрица работает, но я получаю «интересную» ошибку, хотя при попытке создать матрицу из 100 000 x 100 000 ячеек, каждая из которых содержит Вектор измерения 5. Это то, что она мне дает:

Исключение в потоке "main" java .lang.ArrayIndexOutOfBoundsException: Индекс 1410065408 выходит за пределы длины 1410065408

Я подозреваю, что это связано с внутренними принципами работы Breeze с индексами, но я Я не уверен. Я не против иметь ограничение по размеру (это жизнь), но мне нужно знать это, чтобы поймать это до того, как приложение выйдет из строя. У кого-нибудь есть идея?

Или есть лучший пакет для того, что мне нужно? Я играл с OjAl go, который хорош, но медленнее при создании матрицы, чем Breeze, и может хранить только коробочные примитивы или примитивы, а не объекты. Может Спарк?

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...