| // This file is part of Eigen, a lightweight C++ template library |
| // for linear algebra. |
| // |
| // Copyright (C) 2016 Benoit Steiner <benoit.steiner.goog@gmail.com> |
| // |
| // This Source Code Form is subject to the terms of the Mozilla |
| // Public License v. 2.0. If a copy of the MPL was not distributed |
| // with this file, You can obtain one at http://mozilla.org/MPL/2.0/. |
| |
| #ifndef EIGEN_CXX11_THREADPOOL_MODULE |
| #define EIGEN_CXX11_THREADPOOL_MODULE |
| |
| #include "../../../Eigen/Core" |
| |
| #include <Eigen/src/Core/util/DisableStupidWarnings.h> |
| |
| /** \defgroup CXX11_ThreadPool_Module C++11 ThreadPool Module |
| * |
| * This module provides 2 threadpool implementations |
| * - a simple reference implementation |
| * - a faster non blocking implementation |
| * |
| * This module requires C++11. |
| * |
| * \code |
| * #include <Eigen/CXX11/ThreadPool> |
| * \endcode |
| */ |
| |
| |
| // The code depends on CXX11, so only include the module if the |
| // compiler supports it. |
| #if __cplusplus > 199711L || EIGEN_COMP_MSVC >= 1900 |
| #include <cstddef> |
| #include <cstring> |
| #include <stdint.h> |
| #include <time.h> |
| |
| #include <vector> |
| using ::std::vector; |
| #include <atomic> |
| #include <deque> |
| using ::std::deque; |
| #include <functional> |
| using ::std::binary_function; |
| using ::std::equal_to; |
| using ::std::greater; |
| #include <memory> |
| using ::std::allocator; |
| |
| #if defined(EIGEN_USE_CUSTOM_THREAD_POOL) |
| // Use standard C++ synchronization primitives. |
| #include <condition_variable> |
| #include <mutex> |
| #include <thread> |
| #else |
| // Use tensorflow synchronization primitives. |
| #include "third_party/tensorflow/core/platform/types.h" |
| #include "third_party/tensorflow/core/platform/mutex.h" |
| #endif // EIGEN_USE_CUSTOM_THREAD_POOL |
| |
| |
| #ifdef EIGEN_USE_CUSTOM_THREAD_POOL |
| typedef std::mutex mutex; |
| typedef std::condition_variable condition_variable; |
| typedef std::unique_lock<std::mutex> mutex_lock; |
| #else |
| typedef tensorflow::mutex mutex; |
| typedef tensorflow::condition_variable condition_variable; |
| typedef tensorflow::mutex_lock mutex_lock; |
| #endif |
| |
| #include "unsupported/Eigen/CXX11/Core" |
| #include "unsupported/Eigen/CXX11/src/Tensor/TensorMeta.h" |
| #include "unsupported/Eigen/CXX11/src/Tensor/TensorCostModel.h" |
| #include "unsupported/Eigen/CXX11/src/Tensor/ThreadPoolInterface.h" |
| #include "unsupported/Eigen/CXX11/src/Tensor/TensorNonBlockingThreadPool.h" |
| #include "unsupported/Eigen/CXX11/src/Tensor/TensorDeviceType.h" |
| |
| #endif |
| |
| #include <Eigen/src/Core/util/ReenableStupidWarnings.h> |
| |
| #endif // EIGEN_CXX11_THREADPOOL_MODULE |