Skip to content

Commit 47b2395

Browse files
committed
Fix bug on AMD GPU
1 parent 320b6b5 commit 47b2395

File tree

1 file changed

+10
-10
lines changed

1 file changed

+10
-10
lines changed

pyFAI/opencl/peak_finder.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929

3030
__authors__ = ["Jérôme Kieffer"]
3131
__license__ = "MIT"
32-
__date__ = "24/11/2021"
32+
__date__ = "03/02/2022"
3333
__copyright__ = "2014-2021, ESRF, Grenoble"
3434
__contact__ = "[email protected]"
3535

@@ -743,8 +743,8 @@ def _count8(self, data, dark=None, dummy=None, delta_dummy=None,
743743

744744
wdim_data = (data.shape[0] + wg0 - 1) & ~(wg0 - 1), (data.shape[1] + wg1 - 1) & ~(wg1 - 1)
745745
# allocate local memory: we store 4 bytes but at most 1 pixel out of 4 can be a peak
746-
747-
buffer_size = int(math.ceil(wg * 4 / ((1+hw)*min(wg0, 1+hw))))
746+
747+
buffer_size = int(math.ceil(wg * 4 / ((1 + hw) * min(wg0, 1 + hw))))
748748
kw_proj["local_highidx"] = pyopencl.LocalMemory(1 * buffer_size)
749749
kw_proj["local_peaks"] = pyopencl.LocalMemory(4 * buffer_size)
750750
kw_proj["local_buffer"] = pyopencl.LocalMemory(8 * (wg0 + 2 * hw) * (wg1 + 2 * hw))
@@ -814,15 +814,15 @@ def peakfinder8(self, data, dark=None, dummy=None, delta_dummy=None,
814814
count = self._count8(data, dark, dummy, delta_dummy, variance, dark_variance, flat, solidangle, polarization, absorption,
815815
dark_checksum, flat_checksum, solidangle_checksum, polarization_checksum, absorption_checksum, dark_variance_checksum,
816816
safe, error_model, normalization_factor, cutoff_clip, cycle, noise, cutoff_pick, radial_range, patch_size, connected)
817-
818817
index = numpy.zeros(count, dtype=numpy.int32)
819818
peaks = numpy.zeros((count, 4), dtype=numpy.float32)
820-
idx = pyopencl.enqueue_copy(self.queue, index, self.cl_mem["peak_position"])
821-
events = [EventDescription("copy D->H index", idx)]
822-
idx = pyopencl.enqueue_copy(self.queue, peaks, self.cl_mem["peak_descriptor"])
823-
events.append(EventDescription("copy D->H peaks", idx))
824-
if self.profile:
825-
self.events += events
819+
if count:
820+
idx = pyopencl.enqueue_copy(self.queue, index, self.cl_mem["peak_position"])
821+
events = [EventDescription("copy D->H index", idx)]
822+
idx = pyopencl.enqueue_copy(self.queue, peaks, self.cl_mem["peak_descriptor"])
823+
events.append(EventDescription("copy D->H peaks", idx))
824+
if self.profile:
825+
self.events += events
826826
output = numpy.empty(count, dtype=[("index", numpy.int32), ("intensity", numpy.float32), ("sigma", numpy.float32),
827827
("pos0", numpy.float32), ("pos1", numpy.float32)])
828828
output["index"] = index

0 commit comments

Comments
 (0)