MCPcopy Create free account
hub / github.com/MegEngine/MegEngine / transpose

Function transpose

dnn/src/x86/utils.cpp:183–213  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

181
182template <>
183void transpose(
184 const float* src, float* dst, size_t m, size_t n, ptrdiff_t lds,
185 ptrdiff_t ldd) {
186 if (lds == -1) {
187 lds = n;
188 }
189 if (ldd == -1) {
190 ldd = m;
191 }
192
193 for (size_t is = 0; is < n; is += 16) {
194 for (size_t js = 0; js < m; js += 16) {
195 auto ie = std::min(is + 16, n), je = std::min(js + 16, m), i = is;
196 for (; i + 4 <= ie; i += 4) {
197 auto j = js;
198 for (; j + 4 <= je; j += 4) {
199 transpose4x4_sse(src + j * lds + i, dst + i * ldd + j, lds, ldd);
200 }
201 if (j < je) {
202 transpose_naive(
203 src + j * lds + i, dst + i * ldd + j, lds, ldd, 4, je - j);
204 }
205 }
206 if (i < ie) {
207 transpose_naive(
208 src + js * lds + i, dst + i * ldd + js, lds, ldd, ie - i,
209 je - js);
210 }
211 }
212 }
213}
214
215template <>
216void transpose_knc2nsck(

Callers 3

transpose_knc2nsckFunction · 0.70
scn_do_executeMethod · 0.50

Calls 3

transpose4x4_sseFunction · 0.85
transpose_naiveFunction · 0.70
minFunction · 0.50

Tested by

no test coverage detected