"src/array/cuda/git@developer.sourcefind.cn:OpenDAS/dgl.git" did not exist on "40b44a43a98b4a5dbc088fd1a6839adbda370fb5"
dlib.cpp 3.17 KB
Newer Older
1
// Copyright (C) 2015 Davis E. King (davis@dlib.net)
2
// License: Boost Software License   See LICENSE.txt for the full license.
3

4
#include <pybind11/pybind11.h>
5
#include <dlib/simd.h>
6
#include <string>
7

8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
namespace py = pybind11;

void bind_matrix(py::module& m);
void bind_vector(py::module& m);
void bind_svm_c_trainer(py::module& m);
void bind_decision_functions(py::module& m);
void bind_basic_types(py::module& m);
void bind_other(py::module& m);
void bind_svm_rank_trainer(py::module& m);
void bind_cca(py::module& m);
void bind_sequence_segmenter(py::module& m);
void bind_svm_struct(py::module& m);
void bind_image_classes(py::module& m);
void bind_rectangles(py::module& m);
void bind_object_detection(py::module& m);
void bind_shape_predictors(py::module& m);
void bind_correlation_tracker(py::module& m);
void bind_face_recognition(py::module& m);
void bind_cnn_face_detection(py::module& m);
void bind_global_optimization(py::module& m);
void bind_numpy_returns(py::module& m);
29
void bind_image_dataset_metadata(py::module& m);
30
31

#ifndef DLIB_NO_GUI_SUPPORT
32
void bind_gui(py::module& m);
33
#endif
34

35
PYBIND11_MODULE(dlib, m)
36
{
37
38
    warn_about_unavailable_but_used_cpu_instructions();

Davis King's avatar
Davis King committed
39

40
41
#define DLIB_QUOTE_STRING(x) DLIB_QUOTE_STRING2(x)
#define DLIB_QUOTE_STRING2(x) #x
42
    m.attr("__version__") = DLIB_QUOTE_STRING(DLIB_VERSION);
43
    m.attr("__time_compiled__") = std::string(__DATE__) + " " + std::string(__TIME__);
44

45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#ifdef DLIB_USE_CUDA
    m.attr("DLIB_USE_CUDA") = true;
#else
    m.attr("DLIB_USE_CUDA") = false;
#endif
#ifdef DLIB_USE_BLAS 
    m.attr("DLIB_USE_BLAS") = true;
#else
    m.attr("DLIB_USE_BLAS") = false;
#endif
#ifdef DLIB_USE_LAPACK
    m.attr("DLIB_USE_LAPACK") = true;
#else
    m.attr("DLIB_USE_LAPACK") = false;
#endif
#ifdef DLIB_HAVE_AVX
    m.attr("USE_AVX_INSTRUCTIONS") = true;
#else
    m.attr("USE_AVX_INSTRUCTIONS") = false;
#endif
#ifdef DLIB_HAVE_NEON 
    m.attr("USE_NEON_INSTRUCTIONS") = true;
#else
    m.attr("USE_NEON_INSTRUCTIONS") = false;
#endif


72

73
74
75
76
77
78
79
80
81
    // Note that the order here matters.  We need to do the basic types first.  If we don't 
    // then what happens is the documentation created by sphinx will use horrible big
    // template names to refer to C++ objects rather than the python names python users
    // will expect.  For instance, if bind_basic_types() isn't called early then when
    // routines take a std::vector<double>, rather than saying dlib.array in the python
    // docs it will say "std::vector<double, std::allocator<double> >" which is awful and
    // confusing to python users.
    //
    // So when adding new things always add them to the end of the list.
82
83
84
85
    bind_matrix(m);
    bind_vector(m);
    bind_basic_types(m);
    bind_other(m);
86

87
    bind_svm_rank_trainer(m);
88
    bind_decision_functions(m);
89
90
91
92
93
94
95
96
97
98
99
100
    bind_cca(m);
    bind_sequence_segmenter(m);
    bind_svm_struct(m);
    bind_image_classes(m);
    bind_rectangles(m);
    bind_object_detection(m);
    bind_shape_predictors(m);
    bind_correlation_tracker(m);
    bind_face_recognition(m);
    bind_cnn_face_detection(m);
    bind_global_optimization(m);
    bind_numpy_returns(m);
101
    bind_svm_c_trainer(m);
102
#ifndef DLIB_NO_GUI_SUPPORT
103
    bind_gui(m);
104
#endif
105
106
107
108

    bind_image_dataset_metadata(m);


109
}