如何让 PyCuda 拉入字符串数组而不是一个 char 字符串?如果取消注释 C 代码中的行,您会看到它遍历每个字符而不是每个字符串。
现在我只是想计算每个字符串的长度,但最终会将它变成一个词频计数器。第一步:传入一个数组...现在所需的输出应该是 25,27,44
import pycuda.driver as drv
import pycuda.tools
import pycuda.autoinit
import numpy
from pycuda.compiler import SourceModule
# create an array of 1s
lines = numpy.array(['ok this is the first line','number two line is this one','alright last line is in the third place here'])
lines = numpy.array(lines)
blocks = len(lines)
block_size = 1
nbr_values = blocks * block_size
# create a destination array that will receive the result
a = numpy.zeros(nbr_values).astype(numpy.float32)
dest = numpy.zeros_like(a)
######################
# SourceModele SECTION
mod = SourceModule("""
__global__ void gpusin(float *dest, char *lines)
{
const int i = blockDim.x*blockIdx.x + threadIdx.x;
dest[i] = sizeof (lines[i]);
//dest[i] = lines[i]; //uncomment this line to see that its iterating through individual chars not strings
}
""")
#Run the sourc model
gpusin = mod.get_function("gpusin")
gpusin(drv.Out(dest), drv.In(lines), grid=(blocks,1), block=(block_size,1,1) )
print str(dest)
print lines