Введение

расположение матриц в памяти компьютеров

Матричное представление — это метод, используемый языком программирования для хранения многомерных матриц, состоящих из столбцов векторов, в памяти. Fortran и C используют различные схемы для своих встроенных массивов. Fortran использует "Column Major" (AoS), при котором все элементы заданного столбца хранятся последовательно в памяти. C использует "Row Major" (SoA), при котором все элементы заданной строки хранятся последовательно в памяти. LAPACK определяет различные матричные представления в памяти. Также существуют представление разреженных матриц и представление матриц в порядке Мортона. Согласно документации, в LAPACK оптимизировано представление унитарных матриц. Некоторые языки, такие как Java, хранят матрицы, используя векторы Iliffe. Они особенно полезны для хранения нерегулярных матриц. Матрицы имеют первостепенное значение в линейной алгебре.

Основные математические операции

Матрица порядка m × n (читается как m на n) представляет собой набор чисел, расположенных в m строках и n столбцах. Матрицы одинакового порядка можно складывать, складывая соответствующие элементы. Две матрицы можно умножать при условии, что число столбцов первой матрицы равно числу строк второй матрицы. Следовательно, если матрицу m × n умножить на матрицу n × r, то результирующая матрица будет порядка m × r.

На матрицу можно выполнять операции над строками или столбцами, с помощью которых можно получить обратную матрицу. Обратную матрицу также можно получить, определив присоединенную матрицу. Строки и столбцы – это различные виды матриц.

Рядовой майор (SoA)

При порядке хранения матрицы в стиле "строка за строкой" (row major) векторы легко преобразуются с помощью операций скалярного произведения, поскольку коэффициенты каждого компонента располагаются в памяти последовательно. Следовательно, такая организация данных может быть предпочтительной, если процессор аппаратно поддерживает операции скалярного произведения. Кроме того, становится возможным эффективно использовать аффинную матрицу преобразований "3×4" без добавления отступов или сложных перестановок.

Колонна майор (AoS)

При использовании порядка столбцов, умножение "матрица на вектор" может быть реализовано с помощью векторизованных операций умножения-сложения, если компоненты вектора транслируются в каждый канал SIMD. Также удобно обращаться к базисным векторам, представленным матрицей преобразования, как к отдельным столбцам, поскольку они располагаются в памяти последовательно.