diff --git a/sasmodels/kernelcl.py b/sasmodels/kernelcl.py
index 24ee778..e8c1c90 100644
a
|
b
|
from __future__ import print_function |
53 | 53 | import os |
54 | 54 | import warnings |
55 | 55 | import logging |
| 56 | import time |
56 | 57 | |
57 | 58 | import numpy as np # type: ignore |
58 | 59 | |
… |
… |
class GpuKernel(Kernel): |
556 | 557 | #print("Calling OpenCL") |
557 | 558 | #call_details.show(values) |
558 | 559 | # Call kernel and retrieve results |
559 | | last_call = None |
560 | | step = 100 |
| 560 | in_process = None |
| 561 | last_nap = time.clock() |
| 562 | step = 50 |
561 | 563 | for start in range(0, call_details.num_eval, step): |
562 | 564 | stop = min(start + step, call_details.num_eval) |
563 | 565 | #print("queuing",start,stop) |
564 | 566 | args[1:3] = [np.int32(start), np.int32(stop)] |
565 | | last_call = [kernel(self.queue, self.q_input.global_size, |
566 | | None, *args, wait_for=last_call)] |
| 567 | call = kernel(self.queue, self.q_input.global_size, None, |
| 568 | *args, wait_for=in_process) |
| 569 | if stop < call_details.num_eval: |
| 570 | # Allow other processes to run |
| 571 | # TODO: maybe check time before sleep |
| 572 | in_process = [call] |
| 573 | call.wait() |
| 574 | current_time = time.clock() |
| 575 | if current_time - last_nap > 0.5: |
| 576 | time.sleep(0.05) |
| 577 | last_nap = current_time |
567 | 578 | cl.enqueue_copy(self.queue, self.result, self.result_b) |
568 | 579 | #print("result", self.result) |
569 | 580 | |