Changeset 9eb3632 in sasmodels for sasmodels/kernelcl.py
- Timestamp:
- Jul 22, 2016 10:54:17 PM (8 years ago)
- Branches:
- master, core_shell_microgels, costrafo411, magnetic_model, release_v0.94, release_v0.95, ticket-1257-vesicle-product, ticket_1156, ticket_1265_superball, ticket_822_more_unit_tests
- Children:
- 7b7da6b
- Parents:
- 6a0d6aa
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sasmodels/kernelcl.py
r32e3c9b r9eb3632 385 385 self.program = None 386 386 387 def make_kernel(self, q_vectors , magnetic=False):387 def make_kernel(self, q_vectors): 388 388 # type: (List[np.ndarray]) -> "GpuKernel" 389 389 if self.program is None: … … 391 391 self.program = compiler(self.info.name, self.source, 392 392 self.dtype, self.fast) 393 names = [generate.kernel_name(self.info, variant) 394 for variant in ("Iq", "Iqxy", "Imagnetic")] 395 self._kernels = [getattr(self.program, name) for name in names] 393 396 is_2d = len(q_vectors) == 2 394 variant = "Imagnetic" if magnetic else "Iqxy" if is_2d else "Iq" 395 kernel_name = generate.kernel_name(self.info, variant) 396 kernel = getattr(self.program, kernel_name) 397 kernel = self._kernels[1:3] if is_2d else [self._kernels[0]]*2 397 398 return GpuKernel(kernel, self.dtype, self.info, q_vectors) 398 399 … … 529 530 hostbuf=values) 530 531 532 kernel = self.kernel[1 if magnetic else 0] 533 args = [ 534 np.uint32(self.q_input.nq), None, None, 535 details_b, values_b, self.q_input.q_b, self.result_b, 536 self.real(cutoff), 537 ] 538 #print("Calling OpenCL") 539 #print("values",values) 531 540 # Call kernel and retrieve results 541 last_call = None 532 542 step = 100 533 #print("calling OpenCL")534 543 for start in range(0, call_details.pd_prod, step): 535 544 stop = min(start+step, call_details.pd_prod) 536 args = [ 537 np.uint32(self.q_input.nq), np.int32(start), np.int32(stop), 538 details_b, values_b, self.q_input.q_b, self.result_b, 539 self.real(cutoff), 540 ] 541 self.kernel(self.queue, self.q_input.global_size, None, *args) 545 #print("queuing",start,stop) 546 args[1:3] = [np.int32(start), np.int32(stop)] 547 last_call = [kernel(self.queue, self.q_input.global_size, 548 None, *args, wait_for=last_call)] 542 549 cl.enqueue_copy(self.queue, self.result, self.result_b) 543 550 … … 546 553 if v is not None: v.release() 547 554 548 return self.result[:self.q_input.nq] 555 scale = values[0]/self.result[self.q_input.nq] 556 background = values[1] 557 #print("scale",scale,background) 558 return scale*self.result[:self.q_input.nq] + background 559 # return self.result[:self.q_input.nq] 549 560 550 561 def release(self):
Note: See TracChangeset
for help on using the changeset viewer.