Zhiqi, This looks well thought out a first glance. Check out https://github.com/sympy/sympy/wiki/GSoC-2019-Student-Instructions if you haven't yet.
Jason moorepants.info +01 530-601-9791 On Wed, Mar 27, 2019 at 12:13 AM <zhiqik...@gmail.com> wrote: > Hello, > > > My name is Zhiqi KANG, I am a 4th year undergraduate of a 5-year > engineering institution: Université de Technologie de Compiègne, France. I > am interested in the project Linear algebra: Tensor core.Here is the link > for the description of project idea. > https://github.com/sympy/sympy/wiki/GSoC-2019-Ideas#linear-algebra-tensor-core > Even > though I am not very familiar with the tensor in the physical field, its > principal in the mathematical field is quite interesting. I have > precisely looked at the requirement of this project and make sure that I am > capable to accomplish most of its task. However, there are still many > questions that I would like to discuss with all contributors of SymPy and > expecially with the mentor. One urgent problem is that I don't find the > name of mentor for this project, so I don't really know who I should CC. > Could you please help me to find the mentor for this project? > > > Please review this draft proposal and tell me what to be ameliorated. > Thank you! > > > > Ø Better Algorithms for sparse array: > > The idea is to manipulate directly les arrays in the sparse array level. > Casting sparse arrays to a dense array and then operating is kind of a > redundancy. I have found an example in tomatrix() function of > sympy\sympy\tensor\array\sparse_ndim_array.py where we convert the > sparse_array to a new dictionay and then cast it to matrix.(Code bellow) > > But I cannot find more cases in the array/tensor module, it would be great > if some one can help me find out where other cases are. > > > from sympy.matrices import SparseMatrix > > if self.rank() != 2: > > raise ValueError('Dimensions must be of size of 2') > > mat_sparse = {} > > for key, value in self._sparse_array.items(): > > mat_sparse[self._get_tuple_index(key)] = value > > return SparseMatrix(self.shape[0], self.shape[1], mat_sparse) > > > > Ø NumPy-like operations > > We have now some operations for arrays in SymPy: > > ² arrayfy > > ² tensor product > > ² derivatives by array > > ² permute dimension > > ² contraction > > For this part of project, I am planning to implement some operations such > as: > > ² sum > > ² divide/multiply(element wise) > > ² any > > ² comparators(greater/less/equal) > > ² logical operator(and/or/not/xor) > > ² random > > > > Ø lazy operators on arrays > > lazy evaluation can improve the performance while iterating the array > since it creates value only if it is called. To implement lazy operators, I > am thinking about two plans: > > 1. Create a new sub-module named lazy-array (larray) of which most > of the operations are lazy evaluated. A standard Array can be cast to a > lazy-array by simply calling the constructor of larray and passing it as > parameter. By doing so, users can choose whatever they want in the module > level, which means that to manipulate a simple array or a lazy array. > > > > 1. Create a lazy version for les operators mentioned above. The lazy > operators are accessible for a specific purpose. This implementation > focusses on a function level for calling lazy evaluated operations, which > means to call a simple inverse_matrix function or a lazy one. > > > > Besides, I have found in sympy\sympy\tensor\tensor.py a class > _TensorDataLazyEvaluator which can be an example for me to implement these > functionalities. It has methods like delete item, inverse matrix, etc. > > > > Ø code generation for arrays and array operators > > This part of project should be involved with another GSoC project purely > for code generation. I would like to discuss with the mentor of the codegen > project to have a better point of view for it. > > I have had an internship for 6 months in BNP Paribas Securities Services > in Paris as developer. During this period, I have similarly worked on code > generation task, except that the programming language is C#.( I was using > EntityFramework and T4 by Microsoft) I believe that this experience can > help me to get familiar with the code generation process in this project. > > > > Ø Integration over indexed symbols and arrays > > Firstly, I would like to talk about integration over arrays: > > Can we imagine the array as a set of coordinates? Suppose that we have a > array A, say 2-dimension as (p, q). We can image two axis x and y so that > index i and j are coordinates for the point Pij in axis x and axis y. The > value A[pi,qj] should be the coordinate of axis z. By assuming this, we can > use a Riemann integral or Lebesgue integral to calculate its integration > like summing the column in the 3D space. > > I don’t know if this idea is correct, I would love to discuss it with you! > > > > Secondly, for integration over indexed symbols, I don’t really know what > it means. Should the output be an expression rather than a value? It would > be great if someone can show me with an example, thanks! > > > > Ø Equation solving with indexed symbols. > > I am not very familiar with this topic either. Should the result be an > expression as well? It would be great if someone can show me with an > example, thanks! > > > Ø Implement some well-known tensor math > > If the time permits, I would be glad to do the extra part of this project. > But I don’t know very well relativity, electromagnetism, etc. It would > take me some time to better understand the principles and start to work on > it. However, I do find some math formula that associated with this topic. > https://en.wikipedia.org/wiki/Integral > > > Ø Unify the various SymPy module > > To be done. > > > -- > You received this message because you are subscribed to the Google Groups > "sympy" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to sympy+unsubscr...@googlegroups.com. > To post to this group, send email to sympy@googlegroups.com. > Visit this group at https://groups.google.com/group/sympy. > To view this discussion on the web visit > https://groups.google.com/d/msgid/sympy/a5ff49d3-63e4-45e5-b87f-4b9d6be30085%40googlegroups.com > <https://groups.google.com/d/msgid/sympy/a5ff49d3-63e4-45e5-b87f-4b9d6be30085%40googlegroups.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "sympy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sympy+unsubscr...@googlegroups.com. To post to this group, send email to sympy@googlegroups.com. Visit this group at https://groups.google.com/group/sympy. To view this discussion on the web visit https://groups.google.com/d/msgid/sympy/CAP7f1Ai3Nf5sssgJVmb3rXPH5GVWBosJJa%2BMixG_KhfLaEdrPA%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.