Shortcuts

Source code for pytorch_lightning.accelerators.cpu

# Copyright The PyTorch Lightning team.
#
# 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.
from typing import Any, Dict, List, Union

import torch

from lightning_lite.accelerators.cpu import _parse_cpu_cores
from lightning_lite.utilities.types import _DEVICE
from pytorch_lightning.accelerators.accelerator import Accelerator
from pytorch_lightning.utilities.exceptions import MisconfigurationException
from pytorch_lightning.utilities.imports import _PSUTIL_AVAILABLE


[docs]class CPUAccelerator(Accelerator): """Accelerator for CPU devices."""
[docs] def setup_device(self, device: torch.device) -> None: """ Raises: MisconfigurationException: If the selected device is not CPU. """ if device.type != "cpu": raise MisconfigurationException(f"Device should be CPU, got {device} instead.")
[docs] def get_device_stats(self, device: _DEVICE) -> Dict[str, Any]: """Get CPU stats from ``psutil`` package.""" return get_cpu_stats()
[docs] def teardown(self) -> None: pass
[docs] @staticmethod def parse_devices(devices: Union[int, str, List[int]]) -> int: """Accelerator device parsing logic.""" devices = _parse_cpu_cores(devices) return devices
[docs] @staticmethod def get_parallel_devices(devices: Union[int, str, List[int]]) -> List[torch.device]: """Gets parallel devices for the Accelerator.""" devices = _parse_cpu_cores(devices) return [torch.device("cpu")] * devices
[docs] @staticmethod def auto_device_count() -> int: """Get the devices when set to auto.""" return 1
[docs] @staticmethod def is_available() -> bool: """CPU is always available for execution.""" return True
@classmethod def register_accelerators(cls, accelerator_registry: Dict) -> None: accelerator_registry.register( "cpu", cls, description=f"{cls.__class__.__name__}", )
# CPU device metrics _CPU_VM_PERCENT = "cpu_vm_percent" _CPU_PERCENT = "cpu_percent" _CPU_SWAP_PERCENT = "cpu_swap_percent" def get_cpu_stats() -> Dict[str, float]: if not _PSUTIL_AVAILABLE: raise ModuleNotFoundError( "Fetching CPU device stats requires `psutil` to be installed." " Install it by running `pip install -U psutil`." ) import psutil return { _CPU_VM_PERCENT: psutil.virtual_memory().percent, _CPU_PERCENT: psutil.cpu_percent(), _CPU_SWAP_PERCENT: psutil.swap_memory().percent, }

© Copyright Copyright (c) 2018-2022, Lightning AI et al... Revision a86584d6.

Built with Sphinx using a theme provided by Read the Docs.
Read the Docs v: latest
Versions
latest
stable
1.8.3post1
1.8.3.post0
1.8.3
1.8.2
1.8.1
1.8.0.post1
1.8.0
1.7.7
1.7.6
1.7.5
1.7.4
1.7.3
1.7.2
1.7.1
1.7.0
1.6.5
1.6.4
1.6.3
1.6.2
1.6.1
1.6.0
1.5.10
1.5.9
1.5.8
1.5.7
1.5.6
1.5.5
1.5.4
1.5.3
1.5.2
1.5.1
1.5.0
1.4.9
1.4.8
1.4.7
1.4.6
1.4.5
1.4.4
1.4.3
1.4.2
1.4.1
1.4.0
1.3.8
1.3.7
1.3.6
1.3.5
1.3.4
1.3.3
1.3.2
1.3.1
1.3.0
1.2.10
1.2.8
1.2.7
1.2.6
1.2.5
1.2.4
1.2.3
1.2.2
1.2.1
1.2.0
1.1.8
1.1.7
1.1.6
1.1.5
1.1.4
1.1.3
1.1.2
1.1.1
1.1.0
1.0.8
1.0.7
1.0.6
1.0.5
1.0.4
1.0.3
1.0.2
1.0.1
1.0.0
0.10.0
0.9.0
0.8.5
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.6
0.7.5
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0
0.6.0
0.5.3
0.4.9
Downloads
html
On Read the Docs
Project Home
Builds

Free document hosting provided by Read the Docs.