message: Add a CSR constructor with only row_ptrs
diff: @@ -985,6 +985,37 @@ protected:
  strategy_(strategy->copy())
  {}
  + /**
  + * Creates a CSR matrix from already allocated (and initialized) row
  + * pointer array.
  + *
  + * @tparam RowPtrsArray type of `row_ptrs` array
  + *
  + * @param exec Executor associated to the matrix
  + * @param size size of the matrix
  + * @param row_ptrs array of row pointers
  + *
  + * @note If `row_ptrs`, is not an rvalue, not
  + * an array of IndexType, IndexType and ValueType, respectively, or
  + * is on the wrong executor, an internal copy of that array will be
  + * created, and the original array data will not be used in the
  + * matrix.
  + */
  + explicit Csr(
  + std::shared_ptr<const Executor> exec, const dim<2>& size,
  + Array<IndexType>&& row_ptrs,
  + std::shared_ptr<strategy_type> strategy = std::make_shared<sparselib>())
  + : EnableLinOp<Csr>(exec, size),
  + row_ptrs_{exec, std::forward<Array<IndexType>>(row_ptrs)},
  + srow_(exec),
  + strategy_(strategy->copy())
  + {
  + auto num_nnz = exec->copy_val_to_host(row_ptrs_.get_data() + size[0]);
  + values_ = Array<ValueType>(exec, num_nnz);
  + col_idxs_ = Array<IndexType>(exec, num_nnz);
  + this->make_srow();
  + }
  +
  /**
  * Creates a CSR matrix from already allocated (and initialized) row
  * pointer, column index and value arrays.
  