| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- # Copyright (c) 2024 PaddlePaddle Authors. All Rights Reserved.
- #
- # 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 .deps import is_dep_available, require_deps
- def get_device_type():
- import paddle
- device_str = paddle.get_device()
- return device_str.split(":")[0]
- def get_paddle_version():
- import paddle
- version = paddle.__version__
- if "-" in version:
- version, tag = version.split("-")
- else:
- tag = None
- version = version.split(".")
- assert len(version) == 3
- major_v, minor_v, patch_v = map(int, version)
- if tag:
- return major_v, minor_v, patch_v, tag
- else:
- return major_v, minor_v, patch_v, None
- def get_paddle_cuda_version():
- import paddle.version
- cuda_version = paddle.version.cuda()
- if cuda_version == "False":
- return None
- return tuple(map(int, cuda_version.split(".")))
- def get_paddle_cudnn_version():
- import paddle.version
- cudnn_version = paddle.version.cudnn()
- if cudnn_version == "False":
- return None
- return tuple(map(int, cudnn_version.split(".")))
- # Should we also support getting the runtime versions of CUDA and cuDNN?
- def is_cuda_available():
- if is_dep_available("paddlepaddle"):
- import paddle.device
- # TODO: Check runtime availability
- return (
- paddle.device.is_compiled_with_cuda() and not paddle.is_compiled_with_rocm()
- )
- else:
- # If Paddle is unavailable, check GPU availability using PyTorch API.
- require_deps("torch")
- import torch.cuda
- import torch.version
- # Distinguish GPUs and DCUs by checking `torch.version.cuda`
- return torch.cuda.is_available() and torch.version.cuda
- def get_gpu_compute_capability():
- cap = None
- if is_cuda_available():
- if is_dep_available("paddlepaddle"):
- import paddle.device
- cap = paddle.device.cuda.get_device_capability()
- else:
- # If Paddle is unavailable, retrieve GPU compute capability from PyTorch instead.
- require_deps("torch")
- import torch.cuda
- cap = torch.cuda.get_device_capability()
- return cap
|