У меня есть класс, написанный на C++, который также использует некоторые определения из cuda_runtime.h, это часть проекта с открытым исходным кодом под названием ADOL-C, вы можете посмотреть здесь!
Это работает, когда я использую CUDA-C, но я хочу как-то импортировать этот класс в PyCUDA, если есть возможность это сделать. Итак, я буду использовать этот класс внутри ядра (не в «основном») для определения конкретных переменных, которые используются для вычисления производных функции. Есть ли способ передать этот класс в SourceModule PyCUDA?
Я задавал аналогичный вопрос, но здесь я хотел бы объяснить немного больше, чем это. Итак, есть решение, компилирующее мой код C с помощью nvcc -cubin (спасибо talonmies), а затем импортирующее его с помощью driver.module_from_file(), но я хотел бы использовать SourceModule и записать эти ядра внутри файла .py, поэтому это может быть более удобным для пользователя. Мой пример будет выглядеть примерно так:
from pycuda import driver, gpuarray
from pycuda.compiler import SourceModule
import pycuda.autoinit
kernel_code_template="""
__global__ void myfunction(float* inx, float* outy, float* outderiv)
{
//defining thread index
...
//declare dependent and independet variables as adoubles
//this is a part of my question
adtl::adouble y[3];
adtl::adouble x[3];
// ...
}
"""
... это просто идея, но SourceModule не будет знать, что такое "adouble", потому что они определены в определении класса adoublecuda.h, поэтому я надеюсь, что теперь вы лучше понимаете мой вопрос. Кто-нибудь знает, с чего мне начать? Если нет, то я напишу эти ядра на CUDA-C и использую опцию nvcc -cubin.
Спасибо за помощь!