Определяемое пользователем умножение разреженных матриц в c ++ / cuda: сумма только тогда, когда произведение превышает некоторый порог - PullRequest
0 голосов
/ 08 июля 2019

Я хотел бы знать, возможно ли определить пользователем умножение встроенной матрицы Matlab mtimes (или хорошую эквивалентность в библиотеке линейной алгебры с открытым исходным кодом в C / C ++).

Цель: добавить шаг цензуры между операторским продуктом и суммой. В частности, исходное матричное умножение mtimes: C = mtimes(A, B) делает следующее

c_{i,j} := \sum_{k} a_{i,k} * b{k,j}, поверх которого мне нужно определить моего оператора my_mtimes: C = my_mtimes(A,B) так, чтобы

c_{i,j} := \sum_{k} max(abs(a_{i,k} * b{k,j})-d, 0). Перед выполнением sum продукт с постоянным порогом d подвергается цензуре.

Вопрос:

  1. Я не знаю, как / если возможно редактировать встроенную функцию mtimes в Matlab. Мне трудно найти исходный код.

  2. Существует ли библиотека C / C ++ с открытым исходным кодом, которая эффективно выполняет подпрограмму имитации разреженного умножения матриц mkl_scsrmm и которую мы можем легко переписать в CUDA.

Я пытался отследить исходный код библиотеки BLAS, но, похоже, mkl_scsrmm не является открытым исходным кодом. Любой комментарий будет полезен и приветствуется.

...