我有一段用python编写的冗长代码(遵循面向对象编程(OOP)),我想用pyCUDA对一些函数进行并行化。我已经将pyCUDA用于一些使用简单整数数组的函数,但是现在我想将一个对象数组传递给pyCUDA内核,比如
class MyClass:
def __init__(self, size):
self.rule = []
for i in range(size):
self.rule.append(0)
self.quality = 0.0
pyCUDA代码
import pycuda.autoinit
import pycuda.driver as drv
import numpy
from pycuda.compiler import DynamicSourceModule
GPUcode = '''
__global__ void mykernel(MyClass myclassList[])
{
//do something with myclassList
}
'''
#list of MyClass object
suppose list name is myclassList
mod = DynamicSourceModule(GPUcode)
mykernel= mod.get_function("mykernel")
mykernel(dr.In(myclassList))
如何做到这一点,可能吗?还是应该用c/c++重写所有代码?我不想用c/c++编写所有代码,因为我使用了许多c/c++中没有的python内置函数,并且我有三种类型的类。需要指导
目前没有回答
相关问题 更多 >
编程相关推荐