summaryrefslogtreecommitdiffstats
path: root/ml/dlib/dlib/svm/structural_svm_problem_threaded_abstract.h
diff options
context:
space:
mode:
Diffstat (limited to 'ml/dlib/dlib/svm/structural_svm_problem_threaded_abstract.h')
-rw-r--r--ml/dlib/dlib/svm/structural_svm_problem_threaded_abstract.h68
1 files changed, 68 insertions, 0 deletions
diff --git a/ml/dlib/dlib/svm/structural_svm_problem_threaded_abstract.h b/ml/dlib/dlib/svm/structural_svm_problem_threaded_abstract.h
new file mode 100644
index 000000000..3cfc6a6eb
--- /dev/null
+++ b/ml/dlib/dlib/svm/structural_svm_problem_threaded_abstract.h
@@ -0,0 +1,68 @@
+// Copyright (C) 2011 Davis E. King (davis@dlib.net)
+// License: Boost Software License See LICENSE.txt for the full license.
+#undef DLIB_STRUCTURAL_SVM_PRObLEM_THREADED_ABSTRACT_Hh_
+#ifdef DLIB_STRUCTURAL_SVM_PRObLEM_THREADED_ABSTRACT_Hh_
+
+#include "structural_svm_problem_abstract.h"
+#include "../matrix.h"
+
+namespace dlib
+{
+
+// ----------------------------------------------------------------------------------------
+
+ template <
+ typename matrix_type_,
+ typename feature_vector_type_ = matrix_type_
+ >
+ class structural_svm_problem_threaded : public structural_svm_problem<matrix_type_,feature_vector_type_>
+ {
+ public:
+ /*!
+ WHAT THIS OBJECT REPRESENTS
+ This object is identical to the structural_svm_problem object defined in
+ dlib/svm/structural_svm_problem_abstract.h except that its constructor
+ takes a number which defines how many threads will be used to make concurrent
+ calls to the separation_oracle() routine.
+
+ So this object lets you take advantage of a multi-core system. You should
+ set the num_threads parameter equal to the number of available cores. Note
+ that the separation_oracle() function which you provide must be thread safe
+ if you are to use this version of the structural_svm_problem. In
+ particular, it must be safe to call separation_oracle() concurrently from
+ different threads. However, it is guaranteed that different threads will
+ never make concurrent calls to separation_oracle() using the same idx value
+ (i.e. the first argument).
+ !*/
+
+ typedef matrix_type_ matrix_type;
+ typedef typename matrix_type::type scalar_type;
+ typedef feature_vector_type_ feature_vector_type;
+
+ structural_svm_problem (
+ unsigned long num_threads
+ );
+ /*!
+ ensures
+ - this object is properly initialized
+ - #get_num_threads() == num_threads
+ !*/
+
+ unsigned long get_num_threads (
+ ) const;
+ /*!
+ ensures
+ - Returns the number of threads which will be used to make concurrent
+ calls to the separation_oracle() function.
+ !*/
+
+ };
+
+// ----------------------------------------------------------------------------------------
+
+}
+
+#endif // DLIB_STRUCTURAL_SVM_PRObLEM_THREADED_ABSTRACT_Hh_
+
+
+