I'm CCing Mark Dewing, who wrote the SymPy llvm PR. Aaron Meurer
On Thu, Apr 21, 2016 at 1:22 PM, yueming liu <nkliuyuem...@gmail.com> wrote: > I looked at the PRs yesterday, there are some overlap in the basic > functions. However, I have a longer road map about the JIT compilation. Let > me briefly list out it, so you all may think about if it is worthy or > suitable to put it in SymPy. > For the JIT compilation, it should provide the class or function interfaces > that wrap the details of llvmlite, the following functions are included: > > 1. Compile a single SymPy expression, a number is returned as the result > > 2. Compile a list of SymPy expresions, an array is returned as the result > (batch compile) > > 3. Compile a single SymPy expression, a array is returned when an array is > passed into the compiled function (vectorization) > - This is very useful since the over head of the function call can be > reduced when you want to do many times evaluation against the compiled > expressison > > Advanced features: > 4. The extension from 3, provide Cartisian product of parameters like the > Cartisian product in SQL > expr = x*y > f = jit_compile([x,y], expr) > f([2,3], [4,5,6]) # return [2*4, 2*5, 2*6, 3*4, 3*5, 3*6] > > 5. The extension from 4, vector symbol can be used instead of symbol of > double number > - This can be used in design algorithms which involve in a double loop > between two list of vectors > > Even longer road map: > 6. The compiled IR can be send to a remote server and the evaluation can be > performed on the server. > > All the above has been implemented in my another project SymJava in the > experimental branch dist-snc. Actually, SymJava is motivated by SymPy, so I > believe is easy to implement the proposed features in SymPy. > > -Yueming Liu > > On Wednesday, April 20, 2016 at 1:43:11 PM UTC-7, Jason Moore wrote: >> >> This sounds great. Note that we have recently merged some code that uses >> llvm to automatically JIT sympy expressions. Check out the master branch and >> search for the relevant pull requests. Maybe there is some overlap with your >> project. >> >> >> Jason >> moorepants.info >> +01 530-601-9791 >> >> On Wed, Apr 20, 2016 at 11:29 AM, yueming liu <nkliuy...@gmail.com> wrote: >>> >>> I am not sure if it is too late to contribute to SymPy and the paper. >>> I've been developing a private project called sympy-llvm which uses >>> just-in-time (JIT) compilation technique to compile SymPy expressions to >>> native machine code in order to speedup the numerical evaluation of the >>> expressions for numerical computation purpose. This is similar to the >>> existing functions in SymPy like subs/evalf, lambdify, ufuncify and Theano >>> (see http://docs.sympy.org/latest/modules/numeric-computation.html). The >>> advantage of sympy-llvm is that it is faster than all the existing methods >>> in the sense of compilation time and numerical evaluation time. Another >>> advantage is that no FORTRAN or C/C++ source code generation involved. >>> Runnable machine code is generated in memory using LLVM (Attached figures >>> show some comparison benchmarks. SMC_py stands for sympy-llvm >>> implementation). Example applications are implemented such as the numerical >>> computation for modals in PyDy. I'd like to make sympy-llvm public and >>> integrate into SymPy as an optional component for numerical computation if >>> possible. >>> >>> As you all may know that the projects like Google TensorFlow and Theano >>> are both using symbolic-numerical way to provide human friendly language >>> interface and fast numerical computation. The CASs projects developed a >>> couple of decades ago like Maple, Maxima, Mathematica, Reduce etc >>> (https://en.wikipedia.org/wiki/List_of_computer_algebra_systems) none of >>> them have 'in-memory' JIT complication functions to bridge the gap between >>> symbolic and numeric computations. I believe sympy-llvm as a component of >>> SymPy will be a great enhancement of SymPy in numerical computation field. >>> >>> -Yueming Liu >>> >>> >>> On Tuesday, April 19, 2016 at 3:53:13 PM UTC-7, Ondřej Čertík wrote: >>>> >>>> Hi, >>>> >>>> I would like to invite anybody to contribute to our paper about SymPy >>>> and become an author. We use the authorship criteria that are written >>>> in our README: >>>> >>>> >>>> https://github.com/sympy/sympy-paper/blob/2a93d84a6f3447f8e15e24f02cedb6c27c299abd/README.md#authorship-criteria >>>> >>>> In other words, to satisfy 1), you must contribute to sympy in some >>>> way (e.g. some good patch that is more than, say, fixing a typo in >>>> documentation), to satisfy 2), get involved with the development of >>>> the sympy-paper repository: https://github.com/sympy/sympy-paper, >>>> submit a patch there, write a section, or just review PRs. Finally, >>>> you must also be willing to satisfy 3) and 4). Hopefully this should >>>> be pretty clear, but if you have any questions about authorship, >>>> please let me or Aaron know. >>>> >>>> Once this paper is accepted, we will probably put it into the SymPy's >>>> README for people to cite, so I encourage everyone to get involved. >>>> >>>> Ondrej >>> >>> -- >>> 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+un...@googlegroups.com. >>> To post to this group, send email to sy...@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/af0be361-2f60-4c4e-878c-6a264289ba50%40googlegroups.com. >>> >>> 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/ffd26adc-c9f2-4c68-abf1-37febd8efe48%40googlegroups.com. > > 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/CAKgW%3D6JnEiW1MkWoLxaAUgVkLpOoYTXA8OPpG5cAHrqSjcF%2BNw%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.