Вопрос

Есть ли относительно простой в реализации или прозрачный способ умножения двух больших матриц в Matlab на параллельно?

В идеале я хотел бы выполнить это параллельное умножение с несколькими строками кода, возможно, что -то вроде:

    C_1 = A*B        % normal
    C_2 = pmult(A,B) % parallel
    % C_1 and C_2 have the same entries

Если есть способ легко сделать это размножение паралелла, может ли кто -нибудь указать мне на код? Если нет, есть ли у кого -нибудь какие -либо идеи о том, что, по его мнению, является лучшим способом реализовать алгоритм умножения параллельной матрицы в Matlab?

Заранее спасибо, потрясающее сообщество Stackoverflow.

Редактировать - я считаю, что часть проблемы, с которой я столкнулся, заключается в том, что умножение матрицы для Разреженные матрицы не автоматически параллельно; это автоматически параллелизируется для плотные матрицы. Новый вопрос: может ли Matlab разыгрывать раз редукую матрицу размножение параллельно? (Параллелизация процессора, так как у меня нет графических карт с поддержкой CUDA)

Это было полезно?

Решение

Matlab, вероятно, уже делает это через свою неявную поддержку многопоточного чтения. Видеть http://www.mathworks.com/support/solutions/en/data/1-4pg4an/?solution=1-4pg4an; Оператор. Тривиально параллелизируемые операции уже сделаны для вас Matlab; Просто запустите его на многоядерной машине.

Другие советы

Что вы имеете в виду под параллелью? Эти два подхода используют явную параллелизм, и оба требуют Параллельный набор инструментов для вычислений (Второе также требует способный GPU).

Вариант 1: Параллелизм MPI

matlabpool open local
D = distributed.rand(2000); % distributed across workers of matlabpool
R = D * D; % mtimes overloaded to compute in parallel

Вариант 2: параллелизм графического процессора

G = gpuArray(rand(2000)); % place data on the GPU
G2 = G * G; % operate on it in parallel
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top