mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-03-07 18:27:40 +08:00
Improved the resizing of tensors
This commit is contained in:
parent
703c526355
commit
8a382aa119
@ -114,16 +114,12 @@ class TensorStorage<T, NumIndices_, Dynamic, Options_, typename internal::gen_nu
|
|||||||
|
|
||||||
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const DSizes<DenseIndex, NumIndices_>& dimensions() const {return m_dimensions;}
|
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const DSizes<DenseIndex, NumIndices_>& dimensions() const {return m_dimensions;}
|
||||||
|
|
||||||
void conservativeResize(DenseIndex size, const array<DenseIndex, NumIndices_>& nbDimensions)
|
|
||||||
{
|
|
||||||
m_data = internal::conditional_aligned_realloc_new_auto<T,(Options_&DontAlign)==0>(m_data, size, internal::array_prod(m_dimensions));
|
|
||||||
m_dimensions = nbDimensions;
|
|
||||||
}
|
|
||||||
void resize(DenseIndex size, const array<DenseIndex, NumIndices_>& nbDimensions)
|
void resize(DenseIndex size, const array<DenseIndex, NumIndices_>& nbDimensions)
|
||||||
{
|
{
|
||||||
if(size != internal::array_prod(m_dimensions))
|
const DenseIndex currentSz = internal::array_prod(m_dimensions);
|
||||||
|
if(size != currentSz)
|
||||||
{
|
{
|
||||||
internal::conditional_aligned_delete_auto<T,(Options_&DontAlign)==0>(m_data, internal::array_prod(m_dimensions));
|
internal::conditional_aligned_delete_auto<T,(Options_&DontAlign)==0>(m_data, currentSz);
|
||||||
if (size)
|
if (size)
|
||||||
m_data = internal::conditional_aligned_new_auto<T,(Options_&DontAlign)==0>(size);
|
m_data = internal::conditional_aligned_new_auto<T,(Options_&DontAlign)==0>(size);
|
||||||
else
|
else
|
||||||
@ -139,8 +135,6 @@ class TensorStorage<T, NumIndices_, Dynamic, Options_, typename internal::gen_nu
|
|||||||
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE DenseIndex size() const { return m_dimensions.TotalSize(); }
|
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE DenseIndex size() const { return m_dimensions.TotalSize(); }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
} // end namespace Eigen
|
} // end namespace Eigen
|
||||||
|
|
||||||
#endif // EIGEN_CXX11_TENSOR_TENSORSTORAGE_H
|
#endif // EIGEN_CXX11_TENSOR_TENSORSTORAGE_H
|
||||||
|
Loading…
Reference in New Issue
Block a user