// SPDX-License-Identifier: MIT // Copyright (c) 2018-2022, Advanced Micro Devices, Inc. All rights reserved. #include #include #include "ck/ck.hpp" #include "ck/library/utility/convolution_parameter.hpp" ck::tensor_operation::device::ConvParams parse_conv_params(int num_dim_spatial, int arg_idx, char* const argv[]) { ck::tensor_operation::device::ConvParams params; params.num_dim_spatial_ = num_dim_spatial; params.N_ = std::stoi(argv[arg_idx++]); params.K_ = std::stoi(argv[arg_idx++]); params.C_ = std::stoi(argv[arg_idx++]); params.filter_spatial_lengths_.resize(num_dim_spatial); for(int i = 0; i < num_dim_spatial; ++i) { params.filter_spatial_lengths_[i] = std::stoi(argv[arg_idx++]); } params.input_spatial_lengths_.resize(num_dim_spatial); for(int i = 0; i < num_dim_spatial; ++i) { params.input_spatial_lengths_[i] = std::stoi(argv[arg_idx++]); } params.conv_filter_strides_.resize(num_dim_spatial); for(int i = 0; i < num_dim_spatial; ++i) { params.conv_filter_strides_[i] = std::stoi(argv[arg_idx++]); } params.conv_filter_dilations_.resize(num_dim_spatial); for(int i = 0; i < num_dim_spatial; ++i) { params.conv_filter_dilations_[i] = std::stoi(argv[arg_idx++]); } params.input_left_pads_.resize(num_dim_spatial); for(int i = 0; i < num_dim_spatial; ++i) { params.input_left_pads_[i] = std::stoi(argv[arg_idx++]); } params.input_right_pads_.resize(num_dim_spatial); for(int i = 0; i < num_dim_spatial; ++i) { params.input_right_pads_[i] = std::stoi(argv[arg_idx++]); } return params; } void print_use_msg() { std::cout << "arg1: verification (0=no, 1=yes)\n" << "arg2: initialization (0=no init, 1=integer value, 2=decimal value)\n" << "arg3: time kernel (0=n0, 1=yes)\n" << "arg4: N spatial dimensions (default 2)\n" << "Following arguments (depending on number of spatial dims):\n" << " N, K, C, \n" << " , (ie Y, X for 2D)\n" << " , (ie Hi, Wi for 2D)\n" << " , (ie Sy, Sx for 2D)\n" << " , (ie Dy, Dx for 2D)\n" << " , (ie LeftPy, LeftPx for 2D)\n" << " , (ie RightPy, RightPx for 2D)\n" << std::endl; }