コードは次のようになります。
import pycuda.driver as cuda
import pycuda.autoinit
from pycuda.compiler import SourceModule
import numpy
dtype = numpy.float32
total_size = numpy.int32(1500)
hist_rgb = numpy.random.randn(total_size)
his_rgb = hist_rgb.astype(dtype)
#print hist_rgb
a_gpu = cuda.mem_alloc(hist_rgb.nbytes)
#print a_gpu
cuda.memcpy_htod(a_gpu, hist_rgb)
numblock = 1500/256
print numblock
mod = SourceModule("""
__global__ void enhance(float *a_gpu,int total){
int pixel= threadIdx.x+blockIdx.x*blockDim.x;
if(pixel<total){
a_gpu[pixel]*=2;
}
}
""")
func = mod.get_function("enhance")
func(a_gpu, total_size, block=(256,1,1), grid=(numblock,1))
result=numpy.empty_like(a_gpu)
cuda.memcpy_dtoh(result, a_gpu)
print result
しかし、以下のようにターミナルでエラーが発生します。
Segmentation fault (core dumped)
わからない 何が問題なの?誰か助けて?