2014-03-13 10 views
0

Мне нужно как-то вычислить экспоненту матрицы внутри ядра CUDA. Есть ли библиотека, чья функция для этой задачи может быть вызвана из потока CUDA? Или, может быть, можно будет реализовать эту функцию с нуля, как функция __device__?Как вычислить экспоненту матрицы внутри потока CUDA?

Я использую Microsoft Visual Studio 2008 Express для компиляции кода хоста и nvcc-компилятора из инструментария 3.2v.

GPU: NVIDIA GeForce GT640 (вычислительные возможности 3,0)

ответ

0

Нет там нет таких вещей в библиотеке CUDA, но вы можете посмотреть на этот код, чтобы помочь вам разработке решения в CUDA:

https://github.com/poliu2s/MKL/blob/master/matrix_exponential.cpp

Если вы работаете над архитектурой 3.5, проще решить вашу проблему (с динамическим параметром paralleslism), вызвав ядро ​​__global__ из другого ядра __global__ без возврата на хост, чтобы вы могли установить конфигурацию, которую вы хотите выполнить (потоки и блоки).

В основном:

__global__ child(...) 
{ 
    .... 
} 

__global__ parent(...) 
{ 
    child<<< ..., ... >>>(...) 
} 

Надеется, что это может помочь

+0

При работе на карточке с куб.смом> 3.5, вы можете вызвать cuBLAS подпрограмму внутри ядра. Это поможет выполнить требуемые преобразования матриц. – JackOLantern

Смежные вопросы