Remove unused ThreadTokenProvider classes ThreadTokenProvider and ScopedThreadToken are unused since ParallelInvoke passes thread IDs directly to worker tasks. Change-Id: If1c7c2671a7b621ec2dc453165c6eaccc9d8c1e5
diff --git a/bazel/ceres.bzl b/bazel/ceres.bzl index e161120..f407f88 100644 --- a/bazel/ceres.bzl +++ b/bazel/ceres.bzl
@@ -128,7 +128,6 @@ "subset_preconditioner.cc", "suitesparse.cc", "thread_pool.cc", - "thread_token_provider.cc", "triplet_sparse_matrix.cc", "trust_region_minimizer.cc", "trust_region_preprocessor.cc",
diff --git a/internal/ceres/CMakeLists.txt b/internal/ceres/CMakeLists.txt index 0456c29..043848a 100644 --- a/internal/ceres/CMakeLists.txt +++ b/internal/ceres/CMakeLists.txt
@@ -249,7 +249,6 @@ subset_preconditioner.cc suitesparse.cc thread_pool.cc - thread_token_provider.cc triplet_sparse_matrix.cc trust_region_minimizer.cc trust_region_preprocessor.cc
diff --git a/internal/ceres/schur_eliminator_impl.h b/internal/ceres/schur_eliminator_impl.h index 4c4917d..ce2ee25 100644 --- a/internal/ceres/schur_eliminator_impl.h +++ b/internal/ceres/schur_eliminator_impl.h
@@ -71,10 +71,8 @@ #include "ceres/map_util.h" #include "ceres/parallel_for.h" #include "ceres/schur_eliminator.h" -#include "ceres/scoped_thread_token.h" #include "ceres/small_blas.h" #include "ceres/stl_util.h" -#include "ceres/thread_token_provider.h" namespace ceres::internal {
diff --git a/internal/ceres/scoped_thread_token.h b/internal/ceres/scoped_thread_token.h deleted file mode 100644 index 76da95b..0000000 --- a/internal/ceres/scoped_thread_token.h +++ /dev/null
@@ -1,59 +0,0 @@ -// Ceres Solver - A fast non-linear least squares minimizer -// Copyright 2023 Google Inc. All rights reserved. -// http://ceres-solver.org/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// * Redistributions of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// * Neither the name of Google Inc. nor the names of its contributors may be -// used to endorse or promote products derived from this software without -// specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -// POSSIBILITY OF SUCH DAMAGE. -// -// Author: yp@photonscore.de (Yury Prokazov) - -#ifndef CERES_INTERNAL_SCOPED_THREAD_TOKEN_H_ -#define CERES_INTERNAL_SCOPED_THREAD_TOKEN_H_ - -#include "ceres/internal/export.h" -#include "ceres/thread_token_provider.h" - -namespace ceres::internal { - -// Helper class for ThreadTokenProvider. This object acquires a token in its -// constructor and puts that token back with destruction. -class CERES_NO_EXPORT ScopedThreadToken { - public: - explicit ScopedThreadToken(ThreadTokenProvider* provider) - : provider_(provider), token_(provider->Acquire()) {} - - ~ScopedThreadToken() { provider_->Release(token_); } - ScopedThreadToken(ScopedThreadToken&) = delete; - ScopedThreadToken& operator=(ScopedThreadToken&) = delete; - - int token() const { return token_; } - - private: - ThreadTokenProvider* provider_; - int token_; -}; - -} // namespace ceres::internal - -#endif // CERES_INTERNAL_SCOPED_THREAD_TOKEN_H_
diff --git a/internal/ceres/thread_token_provider.cc b/internal/ceres/thread_token_provider.cc deleted file mode 100644 index 133767d..0000000 --- a/internal/ceres/thread_token_provider.cc +++ /dev/null
@@ -1,51 +0,0 @@ -// Ceres Solver - A fast non-linear least squares minimizer -// Copyright 2023 Google Inc. All rights reserved. -// http://ceres-solver.org/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// * Redistributions of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// * Neither the name of Google Inc. nor the names of its contributors may be -// used to endorse or promote products derived from this software without -// specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -// POSSIBILITY OF SUCH DAMAGE. -// -// Author: yp@photonscore.de (Yury Prokazov) - -#include "ceres/thread_token_provider.h" - -#include "absl/log/check.h" - -namespace ceres::internal { - -ThreadTokenProvider::ThreadTokenProvider(int num_threads) { - for (int i = 0; i < num_threads; i++) { - pool_.Push(i); - } -} - -int ThreadTokenProvider::Acquire() { - int thread_id; - CHECK(pool_.Wait(&thread_id)); - return thread_id; -} - -void ThreadTokenProvider::Release(int thread_id) { pool_.Push(thread_id); } - -} // namespace ceres::internal
diff --git a/internal/ceres/thread_token_provider.h b/internal/ceres/thread_token_provider.h deleted file mode 100644 index 5d375d1..0000000 --- a/internal/ceres/thread_token_provider.h +++ /dev/null
@@ -1,83 +0,0 @@ -// Ceres Solver - A fast non-linear least squares minimizer -// Copyright 2023 Google Inc. All rights reserved. -// http://ceres-solver.org/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// * Redistributions of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// * Neither the name of Google Inc. nor the names of its contributors may be -// used to endorse or promote products derived from this software without -// specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -// POSSIBILITY OF SUCH DAMAGE. -// -// Author: yp@photonscore.de (Yury Prokazov) - -#ifndef CERES_INTERNAL_THREAD_TOKEN_PROVIDER_H_ -#define CERES_INTERNAL_THREAD_TOKEN_PROVIDER_H_ - -#include "ceres/concurrent_queue.h" -#include "ceres/internal/config.h" -#include "ceres/internal/export.h" - -namespace ceres::internal { - -// Helper for C++ thread number identification that is similar to -// omp_get_thread_num() behaviour. This is necessary to support C++ -// threading with a sequential thread id. This is used to access preallocated -// resources in the parallelized code parts. The sequence of tokens varies from -// 0 to num_threads - 1 that can be acquired to identify the thread in a thread -// pool. -// -// -// Example usage pseudocode: -// -// ThreadTokenProvider ttp(N); // allocate N tokens -// Spawn N threads { -// int token = ttp.Acquire(); // get unique token -// ... -// ... use token to access resources bound to the thread -// ... -// ttp.Release(token); // return token to the pool -// } -// -class CERES_NO_EXPORT ThreadTokenProvider { - public: - explicit ThreadTokenProvider(int num_threads); - - // Returns the first token from the queue. The acquired value must be - // given back by Release(). - int Acquire(); - - // Makes previously acquired token available for other threads. - void Release(int thread_id); - - private: - // This queue initially holds a sequence from 0..num_threads-1. Every - // Acquire() call the first number is removed from here. When the token is not - // needed anymore it shall be given back with corresponding Release() - // call. This concurrent queue is more expensive than TBB's version, so you - // should not acquire the thread ID on every for loop iteration. - ConcurrentQueue<int> pool_; - ThreadTokenProvider(ThreadTokenProvider&) = delete; - ThreadTokenProvider& operator=(ThreadTokenProvider&) = delete; -}; - -} // namespace ceres::internal - -#endif // CERES_INTERNAL_THREAD_TOKEN_PROVIDER_H_