422 strategy strat(this->m_args.cpu_info);
423 #ifdef CYCLE_PROFILING 424 arm_gemm::profiler prof;
428 TAccum activation_min, activation_max;
429 std::tie(activation_min, activation_max) = get_default_activation_values<TAccum>();
431 switch (this->m_args.activation.type)
434 activation_max =
static_cast<TAccum
>(this->m_args.activation.param1);
437 activation_min =
static_cast<TAccum
>(0);
444 auto tile_fn = [&] (
const TInput **inptrs,
446 const TWeight *weights,
448 const unsigned int start_output_channel) {
449 #ifdef CYCLE_PROFILING 450 auto p = prof.ScopedProfiler(PROFILE_KERNEL, (
unsigned long)(strategy::output_rows() * strategy::output_cols() * this->m_args.channel_multiplier * this->m_args.kernel_rows * this->m_args.kernel_cols));
453 inptrs, outptrs, weights,
454 m_biases ? m_biases + start_output_channel :
nullptr,
455 this->kernel_points(), this->m_args.channel_multiplier,
456 activation_min, activation_max
460 Parent::execute_tiles(
463 _input, ld_input_col, ld_input_row, ld_input_batch,
465 output_height, output_width,
466 _output, ld_output_col, ld_output_row, ld_output_batch,
467 _working_space, thread_id, n_threads
std::unique_ptr< ParametersLibrary > parameters
const size_t input_height