Changeset a4f1a73 in sasmodels


Ignore:
Timestamp:
Oct 31, 2018 8:40:56 AM (6 years ago)
Author:
Paul Kienzle <pkienzle@…>
Branches:
master, core_shell_microgels, magnetic_model, ticket-1257-vesicle-product, ticket_1156, ticket_1265_superball, ticket_822_more_unit_tests
Children:
c11d09f
Parents:
c6084f1
Message:

clean out existing kernels when changing compute engine

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sasmodels/sasview_model.py

    rce1eed5 ra4f1a73  
    2525from . import core 
    2626from . import custom 
     27from . import kernelcl 
    2728from . import product 
    2829from . import generate 
     
    3031from . import modelinfo 
    3132from .details import make_kernel_args, dispersion_mesh 
     33from .kernelcl import reset_environment 
    3234 
    3335# pylint: disable=unused-import 
     
    6870#: has changed since we last reloaded. 
    6971_CACHED_MODULE = {}  # type: Dict[str, "module"] 
     72 
     73def reset_environment(): 
     74    # type: () -> None 
     75    """ 
     76    Clear the compute engine context so that the GUI can change devices. 
     77 
     78    This removes all compiled kernels, even those that are active on fit 
     79    pages, but they will be restored the next time they are needed. 
     80    """ 
     81    kernelcl.reset_environment() 
     82    for model in MODELS.values(): 
     83        model._model = None 
    7084 
    7185def find_model(modelname): 
     
    680694    def _calculate_Iq(self, qx, qy=None): 
    681695        if self._model is None: 
    682             self._model = core.build_model(self._model_info) 
     696            # Only need one copy of the compiled kernel regardless of how many 
     697            # times it is used, so store it in the class.  Also, to reset the 
     698            # compute engine, need to clear out all existing compiled kernels, 
     699            # which is much easier to do if we store them in the class. 
     700            self.__class__._model = core.build_model(self._model_info) 
    683701        if qy is not None: 
    684702            q_vectors = [np.asarray(qx), np.asarray(qy)] 
Note: See TracChangeset for help on using the changeset viewer.