Re: [eigen] [Review] Pull request 66, Huge Tensor module improvements |

[ Thread Index | Date Index | More lists.tuxfamily.org/eigen Archives ]

*To*: <eigen@xxxxxxxxxxxxxxxxxxx>*Subject*: Re: [eigen] [Review] Pull request 66, Huge Tensor module improvements*From*: Christian Seiler <christian@xxxxxxxx>*Date*: Mon, 16 Jun 2014 11:51:55 +0200

Hi,

Regarding class names, Id would suggest "Tensor" for the generalization of matrices and "MultiDimArray" for the generalization of arrays.

Thank you! I was looking for a better name than 'TensorArray' but it appears I missed the forest for the trees.

Ideally, Id even merge these last two notions to make Array multi-dimensional, or in other words if everything does well, at the end MultiDimArray would be renamed Array, and the current Array would go to /dev/null.

Yes, this seems to me to be a good idea in the long term. However, I'd first like to stabilize the current experimental module and slowly implement all the features that are present in Array so far, before we should be discussing a merge.

Im pretty sure that this is possible without breaking the API. Not 100% sure about the ABI though.

I'll look into that. OTOH, this is something that's probably not going to happen in the immediate future, so maybe this might be a thing for a future (and currently not even talked about) Eigen 4, where I don't think ABI breakage is going to be a problem.

Regarding the class hierarchy, this implies something like: DenseBase <- MatrixBase ... <- MultiDimBase <- MultiDimArrayBase <- MultiDimStorageBase <- MultiDimArray <- TensorBase <- MultiDimStorageBase <- Tensor

I generally like your new names, but I don't think I can reuse DenseBase at the moment as a base class, since EigenBase, DenseCoeffsBase and DenseBase currently only support two indices. That's why I suggested copying but not reusing Eigen's own class hierarchy. But with your new names, the following could probably make sense: Eigen Matrix/Array Tensor/MultiDimArray ----------------------------------------------------------------------- EigenBase EigenMultiDimBase <- DenseCoeffsBase <- MultiDimDenseCoeffsBase <- DenseBase <- MultiDimBase <- MatrixBase <- TensorBase <- PlainObjectBase <- MultiDimStorageBase <- Matrix <- Tensor <- ArrayBase <- MultiDimArrayBase <- PlainObjectBase <- MultiDimStorageBase <- Array <- MultiDimArray If at a later point Array/MultiDimArray are merged, we may think about making EigenMultiDimBase the new EigenBase and add some specializations for the case of one and two indices. But while the Tensor module is still very much in flux, I think it's best to keep it separate for now.

Im also wondering whether 1D and 2D tensors should not behave as for the current vectors and matrices regarding operator* and the likes? operator* would be coefficient-wise for multi-dim arrays of arbitrary dimension, for tensors it would be restricted to 1D and 2D objects.

My original idea was to add .vector() / .matrix() to 1d and 2d tensors, such that the following code is possible: VectorXd = tensor2d.matrix().eigenvalues(); or perhaps: VectorXd = tensor2d.asMatrix().eigenvalues(); I don't like treating a 2d tensor as a matrix automatically, since I think both are different perspectives on the same object. I think there is a good argument to be made for the following distinctions (the following diagram assumes that at some point Array and MultiDimArray are merged): .tensor() Matrix ----------------> Tensor <---------------- ^| .matrix() ^| || || || || ||.array() .tensor() || |+--------> (MultiDim)Array -------------+| +---------- <-------------+ .matrix() .array() Or, as long as they are not merged: Matrix <---------------- Tensor .matrix() ^| ^| || || .matrix() || .array() .tensor() || .array() |v |v Array MultiDimArray Regards, Christian

**Follow-Ups**:**Re: [eigen] [Review] Pull request 66, Huge Tensor module improvements***From:*Gael Guennebaud

**References**:**[eigen] [RFC] Tensor module: class hierarchy***From:*Christian Seiler

**Re: [eigen] [RFC] Tensor module: class hierarchy***From:*Benoit Steiner

**[eigen] [Review] Pull request 66, Huge Tensor module improvements***From:*Christian Seiler

**Re: [eigen] [Review] Pull request 66, Huge Tensor module improvements***From:*Benoit Steiner

**Re: [eigen] [Review] Pull request 66, Huge Tensor module improvements***From:*Christian Seiler

**Re: [eigen] [Review] Pull request 66, Huge Tensor module improvements***From:*Benoit Steiner

**Re: [eigen] [Review] Pull request 66, Huge Tensor module improvements***From:*Christian Seiler

**Re: [eigen] [Review] Pull request 66, Huge Tensor module improvements***From:*Gael Guennebaud

**Messages sorted by:**[ date | thread ]- Prev by Date:
**Re: [eigen] [Review] Pull request 66, Huge Tensor module improvements** - Next by Date:
**Re: [eigen] [Review] Pull request 66, Huge Tensor module improvements** - Previous by thread:
**Re: [eigen] [Review] Pull request 66, Huge Tensor module improvements** - Next by thread:
**Re: [eigen] [Review] Pull request 66, Huge Tensor module improvements**

Mail converted by MHonArc 2.6.19+ | http://listengine.tuxfamily.org/ |