69 lines
2.5 KiB
C++
69 lines
2.5 KiB
C++
// 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_
|
|
|
|
|
|
|