Передача класса C++/CUDA в SourceModule PyCUDA

У меня есть класс, написанный на C++, который также использует некоторые определения из cuda _runtime.h, это часть проекта с открытым исходным кодом под названием ADOL -C, вы можете посмотреть здесь !

Это работает, когда я использую CUDA -C, но я хочу как-то импортировать этот класс в PyCUDA, если есть возможность это сделать. Итак, я буду использовать этот класс внутри ядра (, а не в «основном» ), чтобы определить конкретные переменные, которые используются для вычисления производных функции. Есть ли способ передать этот класс в SourceModule PyCUDA?

Я задавал аналогичный вопрос, но здесь я хотел бы объяснить немного больше, чем это. Итак, есть решение, компилирующее мой код C с использованием nvcc -cubin (благодаря talonmies )и затем импортируя его с помощью driver.module _из файла _(), но я бы хотел использовать 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.

Спасибо за помощь!

7
задан Banana 2 July 2012 в 08:54
поделиться