MCPcopy Create free account
hub / github.com/davisking/dlib / multiply_conv

Function multiply_conv

dlib/cuda/cpu_dlib.cpp:82–154  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

80 // ------------------------------------------------------------------------------------
81
82 void multiply_conv (
83 bool add_to,
84 tensor& dest,
85 const tensor& src1,
86 const tensor& src2
87 )
88 {
89 auto d = dest.host();
90 auto s1 = src1.host();
91 auto s2 = src2.host();
92 if (have_same_dimensions(dest,src1))
93 {
94 DLIB_CASSERT(src2.num_samples() == 1 && src2.nr() == 1 && src2.nc() == 1 && src2.k() == src1.k());
95
96 if (add_to)
97 {
98 for (long n = 0; n < dest.num_samples(); ++n)
99 {
100 for (long k = 0; k < dest.k(); ++k)
101 {
102 for (long r = 0; r < dest.nr(); ++r)
103 {
104 for (long c = 0; c < dest.nc(); ++c)
105 {
106 *d++ += (*s1++)*s2[k];
107 }
108 }
109 }
110 }
111 }
112 else
113 {
114 for (long n = 0; n < dest.num_samples(); ++n)
115 {
116 for (long k = 0; k < dest.k(); ++k)
117 {
118 for (long r = 0; r < dest.nr(); ++r)
119 {
120 for (long c = 0; c < dest.nc(); ++c)
121 {
122 *d++ = (*s1++)*s2[k];
123 }
124 }
125 }
126 }
127 }
128 }
129 else
130 {
131 DLIB_CASSERT(have_same_dimensions(src1,src2));
132 DLIB_CASSERT(dest.num_samples() == 1 && dest.nr() == 1 && dest.nc() == 1 && dest.k() == src1.k());
133
134 if (!add_to)
135 {
136 for (long k = 0; k < src1.k(); ++k)
137 d[k] = 0;
138 }
139

Callers 2

test_more_ops2Function · 0.50
backward_inplaceMethod · 0.50

Calls 6

have_same_dimensionsFunction · 0.70
hostMethod · 0.45
num_samplesMethod · 0.45
nrMethod · 0.45
ncMethod · 0.45
kMethod · 0.45

Tested by 1

test_more_ops2Function · 0.40