|
- # Copyright 2020 Huawei Technologies Co., Ltd
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- # ============================================================================
- """Context setting interface"""
- from mindspore_serving._mindspore_serving import Context_
-
-
- class Context:
- """Set context of device, including device id and device type, can only set once currently."""
-
- def __init__(self):
- self.context_ = Context_.get_instance()
-
- def set_device_type(self, device_type):
- """Set device type, now can be 'None'(default) and 'Ascend', 'Davinci'(same as 'Ascend'), case ignored. """
- self.context_.set_device_type_str(device_type)
-
- def set_device_id(self, device_id):
- """Set device id, default 0"""
- self.context_.set_device_id(device_id)
-
-
- _k_context = None
-
-
- def _context():
- """
- Get the global _context, if context is not created, create a new one.
-
- Returns:
- _Context, the global context in PyNative mode.
- """
- global _k_context
- if _k_context is None:
- _k_context = Context()
- return _k_context
-
-
- def set_context(**kwargs):
- """The context setting interface. The acceptable parameters including:
- device_type: 'Ascend','Davinci', 'None'. Case ignored.
- - Davinci' and 'Ascend' are the same, means Ascend910 or Ascend310.
- - 'None' means depend on MindSpore.
- device_id: reasonable device id
- """
- context = _context()
- for (k, w) in kwargs.items():
- if k == "device_type":
- context.set_device_type(w)
- elif k == "device_id":
- context.set_device_id(w)
- else:
- raise RuntimeError(f"Not support context key '{k}'")
|