@@ -231,7 +231,7 @@ class CuMatrixBase {
231231 bool ApproxEqual (const CuMatrixBase<Real> &other, float tol = 0.01 ) const ;
232232
233233 // / Get size of matrix in bytes
234- MatrixIndexT SizeInBytes () const { return num_rows_* stride_*sizeof (Real); }
234+ size_t SizeInBytes () const { return static_cast < size_t >( num_rows_)* static_cast < size_t >( stride_) *sizeof (Real); }
235235
236236 // Copy functions. These do not resize.
237237 template <typename OtherReal>
@@ -670,29 +670,29 @@ class CuMatrixBase {
670670 inline const CuSubVector<Real> Row (MatrixIndexT i) const {
671671 KALDI_ASSERT (static_cast <UnsignedMatrixIndexT>(i) <
672672 static_cast <UnsignedMatrixIndexT>(num_rows_));
673- return CuSubVector<Real>(data_ + (i * stride_), NumCols ());
673+ return CuSubVector<Real>(data_ + (static_cast < size_t >(i) * static_cast < size_t >( stride_) ), NumCols ());
674674 }
675675
676676 inline CuSubVector<Real> Row (MatrixIndexT i) {
677677 KALDI_ASSERT (static_cast <UnsignedMatrixIndexT>(i) <
678678 static_cast <UnsignedMatrixIndexT>(num_rows_));
679- return CuSubVector<Real>(data_ + (i * stride_), NumCols ());
679+ return CuSubVector<Real>(data_ + (static_cast < size_t >(i) * static_cast < size_t >( stride_) ), NumCols ());
680680 }
681681
682682 inline CuValue<Real> operator () (MatrixIndexT r, MatrixIndexT c) {
683683 KALDI_PARANOID_ASSERT (static_cast <UnsignedMatrixIndexT>(r) <
684684 static_cast <UnsignedMatrixIndexT>(num_rows_) &&
685685 static_cast <UnsignedMatrixIndexT>(c) <
686686 static_cast <UnsignedMatrixIndexT>(num_cols_));
687- return CuValue<Real>(data_ + r * stride_ + c);
687+ return CuValue<Real>(data_ + static_cast < size_t >(r) * static_cast < size_t >( stride_) + c);
688688 }
689689
690690 inline Real operator () (MatrixIndexT r, MatrixIndexT c) const {
691691 KALDI_PARANOID_ASSERT (static_cast <UnsignedMatrixIndexT>(r) <
692692 static_cast <UnsignedMatrixIndexT>(num_rows_) &&
693693 static_cast <UnsignedMatrixIndexT>(c) <
694694 static_cast <UnsignedMatrixIndexT>(num_cols_));
695- return CuValue<Real>(data_ + r * stride_ + c); // will be casted to Real.
695+ return CuValue<Real>(data_ + static_cast < size_t >(r) * static_cast < size_t >( stride_) + c); // will be casted to Real.
696696 }
697697
698698 Real Sum () const ;
@@ -737,10 +737,10 @@ class CuMatrixBase {
737737
738738 // / Get raw row pointer (const). Warning: may return a pointer to GPU memory. Use at
739739 // / your own risk.
740- inline const Real* RowData (MatrixIndexT r) const { return data_ + r * stride_; }
740+ inline const Real* RowData (MatrixIndexT r) const { return data_ + static_cast < size_t >(r) * static_cast < size_t >( stride_) ; }
741741 // / Get raw row pointer. Warning: may return a pointer to GPU memory. Use at
742742 // / your own risk.
743- inline Real* RowData (MatrixIndexT r) { return data_ + r * stride_; }
743+ inline Real* RowData (MatrixIndexT r) { return data_ + static_cast < size_t >(r) * static_cast < size_t >( stride_) ; }
744744 // / Return data pointer (const). Warning: may return a pointer to GPU memory.
745745 // / Use at your own risk.
746746 inline const Real *Data () const { return data_; }
0 commit comments