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

Method deduce_format

dnn/src/common/relayout_format.cpp:302–421  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

300}
301
302void RelayoutFormat::deduce_format(TensorFormat src, TensorFormat& dst) {
303 size_t align = handle()->image2d_pitch_alignment();
304 auto vendor_type = handle()->vendor_type();
305 using Param = param::RelayoutFormat;
306#define CHECK_SRC(_expect) \
307 megdnn_assert( \
308 src == _expect, "invalid src format: expect=%s got=%s", \
309 _expect.to_string().c_str(), src.to_string().c_str())
310 switch (param().mode) {
311 case Param::Mode::NHWC_NHWCD4:
312 CHECK_SRC(DefaultTensorFormat::make());
313 dst = src;
314 break;
315 case Param::Mode::NHWCD4_NHWC:
316 CHECK_SRC(DefaultTensorFormat::make());
317 dst = src;
318 break;
319 case Param::Mode::NHWC_NHWCD4I:
320 CHECK_SRC(DefaultTensorFormat::make());
321 dst = Image2DPack4TensorFormat::make_raw(2, align, vendor_type);
322 break;
323 case Param::Mode::NCHW_NHWCD4:
324 CHECK_SRC(DefaultTensorFormat::make());
325 dst = src;
326 break;
327 case Param::Mode::NCHW_NHWCD4I:
328 CHECK_SRC(DefaultTensorFormat::make());
329 dst = Image2DPack4TensorFormat::make_raw(2, align, vendor_type);
330 break;
331 case Param::Mode::NHWCD4I_NHWC:
332 case Param::Mode::NHWCD4I_NCHW:
333 CHECK_SRC(Image2DPack4TensorFormat::make_raw(2, align, vendor_type));
334 dst = DefaultTensorFormat::make();
335 break;
336 case Param::Mode::NHWCD4_NCHW:
337 CHECK_SRC(DefaultTensorFormat::make());
338 dst = src;
339 break;
340 case Param::Mode::INTER_WEIGHT_DENSE:
341 CHECK_SRC(DefaultTensorFormat::make());
342 dst = src;
343 break;
344 case Param::Mode::INTER_WEIGHT_DENSEI:
345 case Param::Mode::INTER_WEIGHT_DENSEI_DOT:
346 CHECK_SRC(DefaultTensorFormat::make());
347 dst = Image2DPack4TensorFormat::make_raw(3, align, vendor_type);
348 break;
349 case Param::Mode::INTER_WEIGHT_GROUP:
350 CHECK_SRC(DefaultTensorFormat::make());
351 dst = src;
352 break;
353 case Param::Mode::INTER_WEIGHT_GROUPI:
354 case Param::Mode::INTER_WEIGHT_GROUPI_DOT:
355 CHECK_SRC(DefaultTensorFormat::make());
356 dst = Image2DPack4TensorFormat::make_raw(4, align, vendor_type);
357 break;
358 case Param::Mode::INTER_WEIGHT_CHAN:
359 CHECK_SRC(DefaultTensorFormat::make());

Callers 1

init_output_formatMethod · 0.45

Calls 5

paramFunction · 0.50
makeFunction · 0.50
vendor_typeMethod · 0.45
typeMethod · 0.45

Tested by

no test coverage detected