CUDA: комплексный скаляр * двойная разреженная матрица * двойной вектор - PullRequest
0 голосов
/ 26 апреля 2018

Мне нужна функция, которая выполняет операцию y = y + s*A*x на CUDA.Где y - сложный вектор (например, cuDoubleComplex), x - двойной вектор, A - двойная разреженная матрица (формат csr) и s - сложный скаляр.

Вопрос : Есть ли какая-либо библиотека для выполнения этой операции?

Я хотел бы пропустить преобразование всего в сложное, если вы не убедите меня в том, что это можно сделать эффективно.

PS

К сожалению, это не может быть сделано функцией cusparse cusparseCsrmvEx()

1 Ответ

0 голосов
/ 26 апреля 2018

Есть ли библиотека для выполнения этой операции?

Почти наверняка нет.Типовое продвижение, которое вам нужно сделать, в значительной степени исключает это.То, что вы могли бы сделать, это что-то вроде:

  1. cusparseDcsrmv для получения z0 = A * x
  2. собственного ядра или, возможно, операции тяги для получения z1 = complex (z0)
  3. cublas Zaxpy для вычисления y = y + s * z1

Еще лучше было бы написать собственное ядро ​​для слияния (2) и (3) вместе.Ваш выбор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...