C против Fortran для BLAS 2 - PullRequest
0 голосов
/ 05 января 2012

У меня есть приложение, в котором мне нужно выполнить множество норм, точечных продуктов и, самое главное, умножения матрицы на вектор.

матрицы и векторы огромные .Размер матрицы обычно составляет 100000x100000

. Структура цикла:

while(condition)
/* usually iterations=dimension of matrix, so around 1 million iterations are *at least* required (if not more) */
matrix-vector multiplication
3 dot prods
2 norms

. В настоящее время я использую Intel Fortran с Intel MKL.Поможет ли переписывание моих кодов в Intel C с помощью Intel MKL?Кто-нибудь когда-либо проводил какой-либо тест (особенно для DGEMV)?Переписывание кодов - это большая проблема, но я не возражаю против переписывания, если я увижу причину.

РЕДАКТИРОВАТЬ: Я ошибся: размеры матрицы составляют 100000, а не миллион.Довольно серьезная ошибка: |

И да, матрица имеет плотность и должна быть плотной.Более того, оно не симметрично и даже не является положительно определенным.Мой алгоритм является модифицированной версией QMR.

1 Ответ

9 голосов
/ 05 января 2012

Производительность будет полностью одинаковой как в C, так и в Fortran, поскольку фактическая реализация, поддерживающая библиотечные вызовы, одинакова, и, по сути, все время в вашем коде затрачивается на эти библиотечные вызовы.

...