36 inline void maxpool_op_nnpack(
const tensor_t& in_data,
38 const maxpool_params& params) {
40 const serial_size_t input_channels = params.in.depth_;
42 const nnp_size input_size = {
43 static_cast<size_t>(params.in.width_),
44 static_cast<size_t>(params.in.height_)
47 const nnp_padding input_padding = {
48 static_cast<size_t>(0),
49 static_cast<size_t>(0),
50 static_cast<size_t>(0),
51 static_cast<size_t>(0)
54 const nnp_size pooling_size = {
55 static_cast<size_t>(params.pool_size_x),
56 static_cast<size_t>(params.pool_size_y)
59 const nnp_size pooling_stride = {
60 static_cast<size_t>(params.stride_x),
61 static_cast<size_t>(params.stride_y)
64 const float* input_ptr = in_data[0].data();
65 float* output_ptr = out_data[0].data();
68 const size_t num_mkl_threads = 1;
69 pthreadpool_t threadpool = pthreadpool_create(num_mkl_threads);
71 const size_t batch_size = 1;
74 nnp_max_pooling_output(
85 if (status != nnp_status_success) {
86 throw nn_error(
"Could not succeed with nnp_max_pooling_output");
90 pthreadpool_destroy(threadpool);
92 throw nn_error(
"TinyDNN has not been compiled with NNPACK support.");