Мне нужно как-то уметь вычислять экспоненту матрицы внутри ядра CUDA. Есть ли какая-либо библиотека, чья функция для этой задачи может быть вызвана из потока CUDA? Или, возможно, можно было бы реализовать эту функцию с нуля, как __device__
функционировать?
Я использую Microsoft Visual Studio 2008 Express для компиляции кода хоста и компилятор nvcc из инструментария 3.2v.
Графический процессор: NVIDIA GeForce GT640 (вычислительная способность 3.0)
Нет, в библиотеке CUDA нет таких вещей, но вы можете взглянуть на этот код, чтобы помочь вам разработать решение в CUDA:
https://github.com/poliu2s/MKL/blob/master/matrix_exponential.cpp
Если вы работаете над архитектурой 3.5, может быть проще решить вашу проблему (с динамическим параллелизмом), вызвав __global__
ядро от другого __global__
Ядро без возврата на хост, так что вы можете установить конфигурацию, которую хотите выполнить (потоки и блоки).
В принципе:
__global__ child( ... )
{
....
}
__global__ parent( ... )
{
child<<< ..., ... >>>( ... )
}
Надеюсь, что это может помочь
Других решений пока нет …