Hi everyone @Jaime Thanks for the suggestion. This is really a great idea I will follow this excellent strategy while rewriting the module. @Stefanv I was not able to add the suggestions of Jaime since my proposal was locked . Can you please allow me revise my proposal? I want to include Jaime's suggestion in it. Regards, Aman Singh
That sounds about right. I think that breaking down the schedule to what function will be ported what week is little more than wishful thinking, and that keeping things at the file level would make more sense. But I think you are getting your proposal there.
One idea that just crossed my mind: checking your implementation of the iterators and other stuff in support.c for correctness and performance is going to be an important part of the project. Perhaps it is a good idea to identify, either now or very early on the project, a few current ndimage top level functions that use each of those objects, if possible without interaction with the others, and build a sequence that could look something like (I am making this up in a hurry, so don't take the actual function names proposed too seriously, although they may actually make sense):
Port NI_PointIterator -> Port NI_CenterOfMass, benchmark and test Port NI_LineBuffer -> Port NI_UniformFilter1D, benchmark and test ...
This would very likely extend the time you will need to implement all the items in support.c. But by the time you were finished with that we would both have high confidence that things were going well, plus a "Rosetta Stone" that should make it a breeze to finish the job, both for you and anyone else. We would also have an intermediate milestone (everything in support ported plus a working example of each being used, with correctness and performance verified), that would be a worthy deliverable on its own: if we are terribly miscalculating task duration, and everything slips and is delayed, getting there could still be considered a success, since it would make finishing the job for others much, much simpler.
One little concern of mine, and the questions don't really go to Aman, but to the scipy devs: the Cython docs on fused types have a big fat warning at the top on support still being experimental. Also, this is going to bump the version requirements for Cython to a very recent one. Are we OK with this?
Similarly, you suggest using Cython's prange to parallelize computations. I haven't seen OpenMP used anywhere in NumPy or SciPy, and have the feeling that parallel implementations are left out on purpose. Am I right, or would parallelizing were possible be OK?
-- (\__/) ( O.o) ( > <) Este es Conejo. Copia a Conejo en tu firma y ayúdale en sus planes de dominación mundial.