1/* Copyright 2017 The TensorFlow Authors. All Rights Reserved.
2
3Licensed under the Apache License, Version 2.0 (the "License");
4you may not use this file except in compliance with the License.
5You may obtain a copy of the License at
6
7 http://www.apache.org/licenses/LICENSE-2.0
8
9Unless required by applicable law or agreed to in writing, software
10distributed under the License is distributed on an "AS IS" BASIS,
11WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12See the License for the specific language governing permissions and
13limitations under the License.
14==============================================================================*/
15
16#ifndef TENSORFLOW_CORE_GRAPPLER_DEVICES_H_
17#define TENSORFLOW_CORE_GRAPPLER_DEVICES_H_
18
19#include <functional>
20#include <utility>
21
22#include "tensorflow/core/lib/core/status.h"
23#include "tensorflow/core/lib/core/threadpool.h"
24#include "tensorflow/core/platform/types.h"
25
26namespace tensorflow {
27namespace grappler {
28
29// Get the number of available GPUs whose number of multiprocessors is no less
30// than 8 and whose CUDA compute capability is no less than
31// min_cuda_compute_capability.
32int GetNumAvailableGPUs(
33 const std::pair<int, int>& min_cuda_compute_capability = {0, 0});
34
35// Maximum amount of gpu memory available per gpu. gpu_id must be in the range
36// [0, num_available_gpu)
37int64_t AvailableGPUMemory(int gpu_id);
38
39// Get the number of logical CPU cores (aka hyperthreads) available.
40int GetNumAvailableLogicalCPUCores();
41
42} // end namespace grappler
43} // end namespace tensorflow
44
45#endif // TENSORFLOW_CORE_GRAPPLER_DEVICES_H_
46