Как сделать поэлементную экспоненту для матрицы в программировании Cuda?
Например:
A = [1 3 4; 6 5 2];
Я хочу вычислить:
B = [ехр (1), ехр (3), ехр (4); ехр (6); ехр (5); (2)]
Есть ли способ сделать это эффективно и сделать это на месте (например, B заменяет A)? Кажется, что cublas не обеспечивает поэлементную работу с матрицей.
1 ответ
Я не знаю, существуют ли библиотеки, которые выполняют поэлементные операции с матрицами, но вы можете легко настроить ядро CUDA для выполнения этой работы. Вы можете, например, передать один элемент матрицы A
каждому потоку, и они могут выполнить экспоненту и записать ответ в B
. Затем вы вызываете свое ядро CUDA как обычно. Взгляните на это, чтобы получить представление о как реализовать ваше ядро и как его вызвать (но вместо умножения двух векторов, как в gpuMM
, вы бы сделали экспоненту).
РЕДАКТИРОВАТЬ : похоже, что вы можете выполнять поэлементные операции, используя Thrust и набор макросов Newton, как показано в этом SO question.
Похожие вопросы
Связанные вопросы
Новые вопросы
c++
C++ — это язык программирования общего назначения. Изначально он разрабатывался как расширение C и имел аналогичный синтаксис, но теперь это совершенно другой язык. Используйте этот тег для вопросов о коде, который будет скомпилирован с помощью компилятора C++. Используйте тег версии для вопросов, связанных с конкретной стандартной версией [C++11], [C++14], [C++17], [C++20] или [C++23]. и т.д.