Changeset a4280bd in sasmodels for sasmodels/generate.py
- Timestamp:
- Jul 25, 2016 11:54:30 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:
- 2f5c6d4
- Parents:
- 2c74c11
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sasmodels/generate.py
r2c74c11 ra4280bd 487 487 source.append(code) 488 488 489 490 489 def make_source(model_info): 491 # type: (ModelInfo) -> str490 # type: (ModelInfo) -> Dict[str, str] 492 491 """ 493 492 Generate the OpenCL/ctypes kernel from the module info. … … 575 574 # Fill in definitions for numbers of parameters 576 575 source.append("#define MAX_PD %s"%partable.max_pd) 577 source.append("#define NPARS %d"%partable.npars) 576 source.append("#define NUM_PARS %d"%partable.npars) 577 source.append("#define NUM_VALUES %d" % partable.nvalues) 578 578 source.append("#define NUM_MAGNETIC %d" % partable.nmagnetic) 579 source.append("#define NUM_VALUES %d" % partable.nvalues)580 579 source.append("#define MAGNETIC_PARS %s"%",".join(str(k) for k in magpars)) 580 for k,v in enumerate(magpars[:3]): 581 source.append("#define MAGNETIC_PAR%d %d"%(k+1, v)) 581 582 582 583 # TODO: allow mixed python/opencl kernels? 583 584 584 source.append("#if defined(USE_OPENCL)") 585 source.extend(_add_kernels(ocl_code, call_iq, call_iqxy, model_info.name)) 586 source.append("#else /* !USE_OPENCL */") 587 source.extend(_add_kernels(dll_code, call_iq, call_iqxy, model_info.name)) 588 source.append("#endif /* !USE_OPENCL */") 589 return '\n'.join(source) 590 591 592 def _add_kernels(kernel, call_iq, call_iqxy, name): 585 ocl = kernels(ocl_code, call_iq, call_iqxy, model_info.name) 586 dll = kernels(dll_code, call_iq, call_iqxy, model_info.name) 587 result = { 588 'dll': '\n'.join(source+dll[0]+dll[1]+dll[2]), 589 'opencl': '\n'.join(source+ocl[0]+ocl[1]+ocl[2]), 590 } 591 592 return result 593 594 595 def kernels(kernel, call_iq, call_iqxy, name): 593 596 # type: ([str,str], str, str, str) -> List[str] 594 597 code = kernel[0] … … 598 601 "#define KERNEL_NAME %s_Iq" % name, 599 602 call_iq, 600 '#line 1 "%s -Iq"' % path,603 '#line 1 "%s Iq"' % path, 601 604 code, 602 605 "#undef CALL_IQ", … … 608 611 "#define KERNEL_NAME %s_Iqxy" % name, 609 612 call_iqxy, 610 '#line 1 "%s -Iqxy"' % path,613 '#line 1 "%s Iqxy"' % path, 611 614 code, 612 615 "#undef CALL_IQ", … … 619 622 "#define MAGNETIC 1", 620 623 call_iqxy, 621 '#line 1 "%s -Imagnetic"' % path,624 '#line 1 "%s Imagnetic"' % path, 622 625 code, 623 626 "#undef MAGNETIC", … … 625 628 "#undef KERNEL_NAME", 626 629 ] 627 return iq+iqxy+imagnetic 630 631 return iq, iqxy, imagnetic 628 632 629 633 … … 739 743 model_info = make_model_info(kernel_module) 740 744 source = make_source(model_info) 741 print(source )745 print(source['dll']) 742 746 743 747
Note: See TracChangeset
for help on using the changeset viewer.