Changeset dd7fc12 in sasmodels for sasmodels/kernelcl.py


Ignore:
Timestamp:
Apr 15, 2016 11:11:43 AM (8 years ago)
Author:
Paul Kienzle <pkienzle@…>
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:
3599d36
Parents:
b151003
Message:

fix kerneldll dtype problem; more type hinting

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sasmodels/kernelcl.py

    ra5b8477 rdd7fc12  
    103103ENV = None 
    104104def environment(): 
     105    # type: () -> "GpuEnvironment" 
    105106    """ 
    106107    Returns a singleton :class:`GpuEnvironment`. 
     
    114115 
    115116def has_type(device, dtype): 
     117    # type: (cl.Device, np.dtype) -> bool 
    116118    """ 
    117119    Return true if device supports the requested precision. 
     
    127129 
    128130def get_warp(kernel, queue): 
     131    # type: (cl.Kernel, cl.CommandQueue) -> int 
    129132    """ 
    130133    Return the size of an execution batch for *kernel* running on *queue*. 
     
    135138 
    136139def _stretch_input(vector, dtype, extra=1e-3, boundary=32): 
     140    # type: (np.ndarray, np.dtype, float, int) -> np.ndarray 
    137141    """ 
    138142    Stretch an input vector to the correct boundary. 
     
    157161 
    158162def compile_model(context, source, dtype, fast=False): 
     163    # type: (cl.Context, str, np.dtype, bool) -> cl.Program 
    159164    """ 
    160165    Build a model to run on the gpu. 
     
    192197    """ 
    193198    def __init__(self): 
     199        # type: () -> None 
    194200        # find gpu context 
    195201        #self.context = cl.create_some_context() 
     
    210216 
    211217    def has_type(self, dtype): 
     218        # type: (np.dtype) -> bool 
    212219        """ 
    213220        Return True if all devices support a given type. 
    214221        """ 
    215         dtype = generate.F32 if dtype == 'fast' else np.dtype(dtype) 
    216222        return any(has_type(d, dtype) 
    217223                   for context in self.context 
     
    219225 
    220226    def get_queue(self, dtype): 
     227        # type: (np.dtype) -> cl.CommandQueue 
    221228        """ 
    222229        Return a command queue for the kernels of type dtype. 
     
    227234 
    228235    def get_context(self, dtype): 
     236        # type: (np.dtype) -> cl.Context 
    229237        """ 
    230238        Return a OpenCL context for the kernels of type dtype. 
     
    235243 
    236244    def _create_some_context(self): 
     245        # type: () -> cl.Context 
    237246        """ 
    238247        Protected call to cl.create_some_context without interactivity.  Use 
     
    248257 
    249258    def compile_program(self, name, source, dtype, fast=False): 
     259        # type: (str, str, np.dtype, bool) -> cl.Program 
    250260        """ 
    251261        Compile the program for the device in the given context. 
     
    261271 
    262272    def release_program(self, name): 
     273        # type: (str) -> None 
    263274        """ 
    264275        Free memory associated with the program on the device. 
     
    269280 
    270281def _get_default_context(): 
     282    # type: () -> cl.Context 
    271283    """ 
    272284    Get an OpenCL context, preferring GPU over CPU, and preferring Intel 
     
    334346    that the compiler is allowed to take shortcuts. 
    335347    """ 
    336     def __init__(self, source, model_info, dtype=generate.F32): 
     348    def __init__(self, source, model_info, dtype=generate.F32, fast=False): 
     349        # type: (str, ModelInfo, np.dtype, bool) -> None 
    337350        self.info = model_info 
    338351        self.source = source 
    339         self.dtype = generate.F32 if dtype == 'fast' else np.dtype(dtype) 
    340         self.fast = (dtype == 'fast') 
     352        self.dtype = dtype 
     353        self.fast = fast 
    341354        self.program = None # delay program creation 
    342355 
    343356    def __getstate__(self): 
     357        # type: () -> Tuple[ModelInfo, str, np.dtype, bool] 
    344358        return self.info, self.source, self.dtype, self.fast 
    345359 
    346360    def __setstate__(self, state): 
     361        # type: (Tuple[ModelInfo, str, np.dtype, bool]) -> None 
    347362        self.info, self.source, self.dtype, self.fast = state 
    348363        self.program = None 
    349364 
    350365    def make_kernel(self, q_vectors): 
     366        # type: (List[np.ndarray]) -> "GpuKernel" 
    351367        if self.program is None: 
    352368            compiler = environment().compile_program 
     
    356372        kernel_name = generate.kernel_name(self.info, is_2d) 
    357373        kernel = getattr(self.program, kernel_name) 
    358         return GpuKernel(kernel, self.info, q_vectors, self.dtype) 
     374        return GpuKernel(kernel, self.info, q_vectors) 
    359375 
    360376    def release(self): 
     377        # type: () -> None 
    361378        """ 
    362379        Free the resources associated with the model. 
     
    367384 
    368385    def __del__(self): 
     386        # type: () -> None 
    369387        self.release() 
    370388 
     
    390408    """ 
    391409    def __init__(self, q_vectors, dtype=generate.F32): 
     410        # type: (List[np.ndarray], np.dtype) -> None 
    392411        # TODO: do we ever need double precision q? 
    393412        env = environment() 
     
    419438 
    420439    def release(self): 
     440        # type: () -> None 
    421441        """ 
    422442        Free the memory. 
     
    427447 
    428448    def __del__(self): 
     449        # type: () -> None 
    429450        self.release() 
    430451 
     
    450471    """ 
    451472    def __init__(self, kernel, model_info, q_vectors): 
    452         # type: (KernelModel, ModelInfo, List[np.ndarray]) -> None 
     473        # type: (cl.Kernel, ModelInfo, List[np.ndarray]) -> None 
    453474        max_pd = model_info.parameters.max_pd 
    454475        npars = len(model_info.parameters.kernel_parameters)-2 
     
    505526 
    506527    def release(self): 
     528        # type: () -> None 
    507529        """ 
    508530        Release resources associated with the kernel. 
     
    513535 
    514536    def __del__(self): 
     537        # type: () -> None 
    515538        self.release() 
Note: See TracChangeset for help on using the changeset viewer.