Как сделать поэлементную экспоненту для матрицы в программировании Cuda

Как сделать поэлементную экспоненту для матрицы в программировании Cuda?

например:

A = [1 3 4; 6 5 2];

Я хочу вычислить:

B = [exp (1), exp (3), exp (4); ехр (6); ехр (5); (2)]

Есть ли способ сделать это эффективно и сделать это на месте (т.е. B заменяет A)?
Кажется, cublas не обеспечивает поэлементную работу над матрицей.

0

Решение

Я не знаю, существуют ли библиотеки, которые выполняют поэлементные операции над матрицами, но вы могли бы легко настроить ядро ​​CUDA для этой работы. Вы могли бы, например, дать один элемент A матрицы для каждого потока, и они могут выполнить экспоненциальную и записать ответ в B, Затем вы вызываете ядро ​​CUDA как обычно. Взглянуть в этот чтобы получить представление о том, как реализовать ваше ядро ​​и как его вызвать (но вместо умножения двух векторов, как это делается в gpuMM вы бы сделали экспоненциальную).

РЕДАКТИРОВАТЬ: Похоже, что вы можете выполнять поэлементные операции, используя осевая нагрузка и набор макросов Ньютон, как показано в этом ТАК вопрос.

2

Другие решения