/** * \file dnn/test/rocm/linspace.cpp * MegEngine is Licensed under the Apache License, Version 2.0 (the "License") * * Copyright (c) 2014-2021 Megvii Inc. All rights reserved. * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT ARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ #include "hcc_detail/hcc_defs_prologue.h" #include "test/rocm/fixture.h" #include "megdnn/oprs.h" #include "test/common/checker.h" #include "test/rocm/benchmarker.h" namespace megdnn { namespace test { TEST_F(ROCM, LINSPACE) { Checker checker(handle_rocm()); Linspace::Param param; param.start = 0.5; param.stop = 1.5; param.endpoint = true; for (DType dtype : std::vector{dtype::Float16(), dtype::Int32(), dtype::Float32()}) { checker.set_dtype(0, dtype).set_param(param).exec(TensorShapeArray{{11}}); } param.endpoint = false; for (DType dtype : std::vector{dtype::Float16(), dtype::Int32(), dtype::Float32()}) { checker.set_dtype(0, dtype).set_param(param).exec(TensorShapeArray{{11}}); } } TEST_F(ROCM, LINSPACE_BENCHMARK) { ROCMBenchmarker benchmarker(handle_rocm(), handle_naive(false)); benchmarker.set_display(true); Linspace::Param param{0.1, 9999.9, true}; size_t sz = 50000; auto time_ms = benchmarker.set_dtype(0, dtype::Float32()).set_param(param).execs({{sz}}); double bytes = sz * dtype::Float32().size(); printf("vec size = %ld, bandwidth = %.2f GB/s\n", sz, (float)(bytes / (time_ms * 1e6))); } } // namespace test } // namespace megdnn // vim: syntax=cpp.doxygen foldmethod=marker foldmarker=f{{{,f}}}