#numpy #cupy
#numpy #cupy
Вопрос:
Сейчас я использую следующую функцию, но я не думаю, что она работает, но я не могу понять описание определения ядра cupy. Эта функция требует больших затрат памяти и времени, когда речь идет об огромных данных.
def cupy_sum(self, bins):
bidx = cupy.cumsum(bins) -1,
return cupy.diff(cupy.r_[0, cupy.cumsum(self)[bidx]])
Обратитесь к другим примерам и напишите следующий код, не знаю, есть ли проблема.
sum_section_kernel = cp.ElementwiseKernel(
'raw T bins, raw T dats',
'float32 out',
'''
T bin_f = bins[i ];
T bin_l = bins[i 1];
T biv = 0;
for(size_t j=bin_f; j<bin_l; j ){
biv = dats[j];
}
out = biv;
''',
'summe')
a = cp.array([4, 3, 5], dtype=cp.float32)
b = cp.array([1, 1, 1.1, 1, 2, 2, 2, 3, 3, 3, 3, 3], dtype=cp.float32)
y = cp.empty(3, dtype=cp.float32)
a = cp.r_[0,a.cumsum()]
out = sum_section_kernel(a, b, y)
print(out)
> [ 4.100 6.000 15.000]
Ответ №1:
Пример был приведен выше, и скорость не была улучшена, но я думаю, что преимущество экономии памяти все еще есть.