Hi all, I'm putting together an application for GSOC 2015, and, although the deadline is approaching fast, I would still appreciate your feedback on a few of my ideas. I am a masters student studying mathematics at Brigham Young University. Thus far my primary contribution to SciPy has been the Cython API for BLAS and LAPACK (see https://github.com/scipy/scipy/pull/4021). My research is in Isogeometric Analysis, i.e. finite element analysis on spline curves. My open source work and research at BYU have given me a great deal of experience with Python and Cython, but I am also familiar with C, C++, and Fortran. As such, I have been reflecting on projects that would be best suited to my skill set, as well as most beneficial to SciPy. I'm curious to know which of the following projects would be of greatest interest to the SciPy community: 1. Wrapping the PROPACK library for sparse linear algebra and using it for sparse SVD computation in scipy.sparse. There has been some initial work on f2py wrappers for PROPACK at https://github.com/jakevdp/pypropack, though it appears the wrappers are still incomplete. 2. Implementing an improved library for spline operations in SciPy. I am very familiar with the different refinement techniques used in CAD (knot insertion, degree elevation, etc.) and could implement a library that would be able to perform them all. My ideal here would be to write a C++ or Fortran library to do this and then wrap it via Cython. The emphasis would be primarily on writing code for refinement and evaluation that is both fast and general. I could include code for spline subdivision methods as well. 3. Adding support for Cython to both f2py and numpy.distutils. The goal here would be to allow f2py to generate cython-compatible wrappers from existing pyf files. I would also modify numpy.distutils so it could compile Cython files. 4. Wrap ffts (https://github.com/anthonix/ffts) and use it as an alternative to FITPACK in scipy.fft for use cases where it is faster. Which of these projects would be most appreciated? I certainly want to be able to make a valid and, more importantly, useful contribution. Thanks! - Ian Henriksen
Hi Ian, On Tue, Mar 24, 2015 at 1:22 AM, Ian Henriksen < insertinterestingnamehere@gmail.com> wrote:
Hi all,
I'm putting together an application for GSOC 2015, and, although the deadline is approaching fast, I would still appreciate your feedback on a few of my ideas.
Great to see your interest.
I am a masters student studying mathematics at Brigham Young University. Thus far my primary contribution to SciPy has been the Cython API for BLAS and LAPACK (see https://github.com/scipy/scipy/pull/4021).
My research is in Isogeometric Analysis, i.e. finite element analysis on spline curves. My open source work and research at BYU have given me a great deal of experience with Python and Cython, but I am also familiar with C, C++, and Fortran. As such, I have been reflecting on projects that would be best suited to my skill set, as well as most beneficial to SciPy.
I'm curious to know which of the following projects would be of greatest interest to the SciPy community:
1. Wrapping the PROPACK library for sparse linear algebra and using it for sparse SVD computation in scipy.sparse. There has been some initial work on f2py wrappers for PROPACK at https://github.com/jakevdp/pypropack, though it appears the wrappers are still incomplete.
This is definitely a feature that's regularly requested. On an older post on this mailing list a factor of 10 faster than ARPACK is mentioned, benchmarks at https://jakevdp.github.io/blog/2012/12/19/sparse-svds-in-python/ say a factor ~5. Here is an old issue requesting addition of a wrapper to Scipy: https://github.com/scipy/scipy/issues/857 Some feedback from Jake on the state of his wrapper and whether this would fill a whole GSoC would be great to have. 2. Implementing an improved library for spline operations in SciPy. I am
very familiar with the different refinement techniques used in CAD (knot insertion, degree elevation, etc.) and could implement a library that would be able to perform them all. My ideal here would be to write a C++ or Fortran library to do this and then wrap it via Cython. The emphasis would be primarily on writing code for refinement and evaluation that is both fast and general. I could include code for spline subdivision methods as well.
Also often discussed, is one of the listed GSoC ideas, and one of the topics in Scipy that need a major make over. It's not clear to me how well your proposed C++/Fortran library would mesh with the Python/Cython splines code that Evgeni and Pauli have in progress - that would need some discussion. (https://github.com/scipy/scipy/pull/3174 seems to have stalled)
3. Adding support for Cython to both f2py and numpy.distutils. The goal here would be to allow f2py to generate cython-compatible wrappers from existing pyf files. I would also modify numpy.distutils so it could compile Cython files.
The f2py part sounds potentially interesting, I'm a bit worried about mentoring power here though (f2py is close to unmaintained). The numpy.distutils part seems to me to be of lower prio - Cython itself has distutils support, and things like tools/cythonize.py in Scipy work fine. 4. Wrap ffts (https://github.com/anthonix/ffts) and use it as an
alternative to FITPACK in scipy.fft for use cases where it is faster.
Benchmarks look great, but this also looks like a potential build nightmare (dynamically generated code, a JNI interface, no Windows builds?).
Which of these projects would be most appreciated? I certainly want to be able to make a valid and, more importantly, useful contribution.
All of these ideas could make a nice GSoC project, but I suspect (1) or (2) would be preferable over (3) or (4). Cheers, Ralf
participants (2)
-
Ian Henriksen
-
Ralf Gommers