2012-08-28 3 views
0

Я ищу самый быстрый алгоритм/пакет, который я мог бы использовать для вычисления нулевого пространства чрезвычайно большой (миллионы элементов, а не обязательно квадратной) матрицы. Любой язык будет в порядке, желательно что-то в Python/C/C++/Java. Ваша помощь будет принята с благодарностью!Вычисление нулевого пространства большой матрицы

ответ

2

Способ избежать перехвата кэшей CPU зависит от того, как хранится/загружается/передается матрица, точка, к которой вы не обращались.

Есть несколько общих рекомендаций:

  1. разделения проблемы на рабочие потоки адресации смежных строк на нити

  2. инкремент указатель (в C), чтобы пересекающие строки и держать счетчик на за -thread

  3. консолидировать результаты каждой нити в конце всех рабочих потоков.

Если матричные элементы сделаны из битов (вместо байтов, Интс, или массивы), то вы можете прочитать words (или 4 байта или 8 байт на 32-бит/64-битных платформ) для ускорить подсчет.

Слишком много вопросов осталось без ответа в описании проблемы, чтобы дать вам дополнительные указания.

-1

В какой структуре данных представлена ​​ваша матрица? Если вы используете список элементов для представления матрицы, т. Е. Кортеж «столбец, строка, значение» для одного матричного элемента, тогда решение будет просто подсчитывать количество кортежей (вычитается размером матрицы)

+0

Это ' решение ', похоже, путает пустое пространство матрицы с разрешающей способностью матрицы. –

Смежные вопросы