В последнее время я работаю над довольно обширной программой, и сейчас я в такой ситуации, когда мне приходится использовать умножение матрицы. Дело в том, что для этой конкретной программы скорость имеет решающее значение. Я знаком с несколькими матричными установками, но мне хотелось бы знать, какой метод будет работать быстрее всего. Я провел обширные исследования, но получил очень мало результатов. Вот список алгоритмов умножения матриц Я знаком с:Каков самый быстрый способ умножения матрицы?
- итерационного алгоритма
- Разделить и алгоритм властвуй
- Sub кубические алгоритмы
- Shared Memory параллелизм
Если кому-то нужен разъяснения по методам, перечисленным мной, или по вопросу в целом, не стесняйтесь спрашивать.
A: Библиотеки ручной настройки, разработанные специалистами с подробными знаниями и опытом архитектуры процессора, на котором будет выполняться код; другими словами, не сворачивайте свои собственные, попросите заимствовать или украсть реализацию. О, или на самом деле купить. –
Этот вопрос слишком широк. Матрица может быть большой, небольшой, редкой, плотной ... Нет лучшего алгоритма для каждого контекста. Обратите внимание, что параллелизм с разделяемой памятью не является алгоритмом, и есть алгоритмы, которые ведут себя лучше или хуже в зависимости от параллельных архитектур, на которых вы находитесь. – coincoin
Посмотрите на [связанный пост] (http://stackoverflow.com/questions/4455645/what-is-the-best-matrix-multiplication-algorithm?rq=1) –