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);
}
예제 #2
0
	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);
	}