void cartesian_communicator::topology( cartesian_topology& topo, std::vector<int>& coords ) const { int ndims = this->ndims(); topo.resize(ndims); coords.resize(ndims); std::vector<int> cdims(ndims); std::vector<int> cperiods(ndims); BOOST_MPI_CHECK_RESULT(MPI_Cart_get, (MPI_Comm(*this), ndims, c_data(cdims), c_data(cperiods), c_data(coords))); cartesian_topology res(cdims.begin(), cperiods.begin(), ndims); topo.swap(res); }
CLayerT(Params& params) { this->out_ = MainTensorType(params.inp_width - params.kernel_width + 1, params.inp_height - params.kernel_height + 1, params.noutputs); this->input_width_ = params.inp_width; this->input_height_ = params.inp_height; this->ninputs_ = params.ninputs; this->is_trainable_ = params.is_trainable; std::vector<UINT> wdims(4); wdims[0] = params.kernel_width; wdims[1] = params.kernel_height; wdims[2] = params.ninputs; wdims[3] = params.noutputs; this->weights_ = MainTensorType(wdims); this->biases_ = TT<T>(1, 1, params.noutputs); std::vector<UINT> cdims(2); cdims[0] = params.ninputs; cdims[1] = params.noutputs; this->con_map_ = TT<int>(cdims); }