GSoC 2012

71 views
Skip to first unread message

Monalisa Gupta

unread,
Mar 15, 2012, 3:36:44 PM3/15/12
to sy...@googlegroups.com
Hello,
I am Monalisa Gupta, a student of Electrical Engineering at Indian Institute of Technology, Delhi. I would like to be part of sympy organization for GSoC 2012 and work on the project which focuses on implementing the Tensor Core for the Linear Algebra Module of sympy. I have successfully completed a course in Abstract Linear Algebra at Undergraduate Level. 
The project description on the Ideas Page https://github.com/sympy/sympy/wiki/GSoC-2012-Ideas mentions that this project will serve as the base for supporting various kind of application. This project is divided into 2 parts
1. Developing the Tensor Expression Class
2. Refactoring of the existing code base

I have some question regarding the above subgoals
1. Are there any papers or research articles that discuss the efficient implementation of Tensors?
2. Since I don't have any idea about the implementation specifics of projects related to Tensor/Linear Algebra, Could someone help me with developing the basic layout of the Tensor Expression Class so that it can seamlessly support varied applications.


Regards
Monalisa Gupta

krastano...@gmail.com

unread,
Mar 15, 2012, 8:06:03 PM3/15/12
to sy...@googlegroups.com
Hi Monalisa,

I am also interested in the same subject and here are some discussions
that may help you prepare your application:

The first time I mentioned it:
https://groups.google.com/d/topic/sympy/KVBZBlH7YVg/discussion
The xAct stuff is opensorce and has nice documentation and can be very useful.

But my current ideas about the project has changed quite a bit:
https://groups.google.com/d/msg/sympy/yLHpxsguI0M/4Ng4VhYYah8J
I am especially interested in implementing the functionality from the
article mentioned in the last post (by the way, many thanks to Akshay
Srinivasan for pointing to it) as it will be a great base for building
abstract multilinear algebra system.

Overall, there is plenty of stuff to be done for more than one project
and it will be great if we both get accepted. For instance, the
abstract representation (symbols) and the representation in a basis
(containers, matrices, the current tensor implementation (which I find
very untensorly ;)) are only loosely coupled. Moreover implementing,
for example, the xAct stuff does not contradict implementing the
symbolic vector analysis stuff as they can be coupled later.

Concerning the manipulation of new types of symbols (a sore point of
sympy) you can check:
https://groups.google.com/d/topic/sympy/rKnqkU_iK44/discussion

And it may be useful to check the work of Matthew Rocklin on
ImmutableMatrix (check the recent archive of the group) as there are
certain constraints to what can be used in the core (the part of sympy
manipulating the expressions).

Maybe you will not need all this information as some of it is only
tangential to the project, but I tried to be exhaustive.

Stefan

PS I have some very ugly code that I use to calculate tensor
contractions in one certain tensor space. I like the basic idea but it
is not very useful the way I have written it at the moment. I will
have to clean it up and I will post it somewhere when it is done. It
is just my proposition for a way to implement tensors (in a basis, not
abstract)

Matthew Rocklin

unread,
Mar 15, 2012, 8:33:10 PM3/15/12
to sy...@googlegroups.com
There is definitely a lot of space for many GSoC projects here. I think that symbolic linear algebra is likely to become more important in the near future. I would be very happy to see a lot of work within SymPy on this topic. 

One possible separation of work within this category would be the following

1) Tensor core - how do we represent and simplify indexed expressions? How do we interact with the rest of SymPy?
2) Abstract Tensors - There is some serious math behind these things. Lets write it down - I think this is where Stefan is particularly interested
3) Numeric ND-Arrays - we often have a basis and want to write down these things explicitly. There a number of concerns here (mutability, sparsity, ground-types, numpy, code generation). 

Stefan has listed some excellent links. I would check out the xAct documentation and the second link on functional differential geometry. These correspond very roughly to topics (1) and (2). I also suggest playing with Matrices and MatrixSymbols within SymPy and looking at some of the issues within the issue tracker with the Matrices tag http://code.google.com/p/sympy/issues/list?can=2&q=label%3AMatrices . You should also look at the Indexed object which is sort of the closest thing we have at the moment. 

Question for Stefan: Do you think it is feasible to separate out (1) and (2) into separate GSoC projects? There is obviously enough work involved for two projects but I wonder how connected their development will have to be. Also, where is your current tensor work? I'd love to see how you're formulating things. I started playing with this a TensorExpr idea a while ago. My work is here

As an aside, a question of mine on scicomp.stackexchange.com related to this question was just given a bounty today. This question has the highest ratio between question votes and answer votes that I've ever seen. A sure sign that we should work on it and provide the answer.



--
You received this message because you are subscribed to the Google Groups "sympy" group.
To post to this group, send email to sy...@googlegroups.com.
To unsubscribe from this group, send email to sympy+un...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/sympy?hl=en.


krastano...@gmail.com

unread,
Mar 16, 2012, 5:28:28 AM3/16/12
to sy...@googlegroups.com
> One possible separation of work within this category would be the following
>
> 1) Tensor core - how do we represent and simplify indexed expressions? How
> do we interact with the rest of SymPy?
> 2) Abstract Tensors - There is some serious math behind these things. Lets
> write it down - I think this is where Stefan is particularly interested
Yes, this is the project I am interested in, but I will probably start
with abstract linear algebra before (if at all) starting work on the
multilinear case.

> 3) Numeric ND-Arrays - we often have a basis and want to write down these
> things explicitly. There a number of concerns here (mutability, sparsity,
> ground-types, numpy, code generation).

> Question for Stefan: Do you think it is feasible to separate out (1) and (2)
> into separate GSoC projects?
It seems possible, but if two such projects are admitted, there should
definitely be a clear plan for how to couple them.

> There is obviously enough work involved for two
> projects but I wonder how connected their development will have to be.

Clear plan for the architecture and doctests should be enough.

> Also,
> where is your current tensor work? I'd love to see how you're formulating
> things. I started playing with this a TensorExpr idea a while ago. My work
> is here
> https://github.com/mrocklin/sympy/tree/tensor/sympy/tensor

Mine is just a quick and ugly hack over symbol, that I needed to
create in a few hours. It is at the same time SymbolicTensor and
ImmutableTensor, to borrow the naming conventions you used for the
matrices. I will put it on github over the weekend.

> As an aside, a question of mine on scicomp.stackexchange.com related to this
> question was just given a bounty today. This question has the highest ratio
> between question votes and answer votes that I've ever seen. A sure sign
> that we should work on it and provide the answer.
> http://scicomp.stackexchange.com/questions/74/symbolic-software-packages-for-matrix-expressions

I think that I should be able to answer this question if my project
succeeds. But it would be about linear operators, not matrices (it
would be independent of the matrix representation).

Monalisa Gupta

unread,
Mar 28, 2012, 10:59:10 AM3/28/12
to sy...@googlegroups.com
My apologies for all the delay and no reply from my side. Was caught up with exams.

I read the https://github.com/sympy/sympy/wiki/Linear-Algebra-Vision and https://github.com/sympy/sympy/wiki/Linear-Algebra-Module. Can you please give me a bit more idea of what functions need to be implemented for tensor algebra and linear algebra? Basically, I want to know what is expected from me in this project (if I do one :) )? What functions and applications of tensor algebra and linear algebra are you targeting for this summer?

--
You received this message because you are subscribed to the Google Groups "sympy" group.
To post to this group, send email to sy...@googlegroups.com.
To unsubscribe from this group, send email to sympy+un...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/sympy?hl=en.




--
Monalisa Gupta

Monalisa Gupta

unread,
Mar 28, 2012, 11:51:36 PM3/28/12
to sy...@googlegroups.com
Also, I am a novice in open source development, so, I would really appreciate your help and direction.
--
Monalisa Gupta

krastano...@gmail.com

unread,
Mar 29, 2012, 8:13:48 AM3/29/12
to sy...@googlegroups.com
> Also, I am a novice in open source development, so, I would really
> appreciate your help and direction.
There is a requirement to send a patch to sympy to be eligible for
participation in gsoc. You can do this to get more comfortable with
sympy and the tools that you will need. On the application template
page there is an explanation how to find something appropriate for a
patch. On the developer workflow page you can see how to set up your
environment.

You should also try to get a clearer idea of what exactly do you want
to implement. There were numerous discussions on the mailing list
about linear algebra / tensor algebra / vector and tensor calculus.
You can try to find appropriate ideas there.

Reply all
Reply to author
Forward
0 new messages