since developing object oriented software is so cumbersome in C and we are all resistent to doing it in C++
Barry Smith
bsmith at mcs.anl.gov
Fri Dec 4 22:42:35 CST 2009
Suggestion:
1) Discard PETSc
2) Develop a general Py{CL, CUDA, OpenMP-C} system that dispatches
"tasks" onto GPUs and multi-core systems (generally we would have one
python process per compute node and local parallelism would be done
via the low-level kernels to the cores and/or GPUs.)
3) Write a new PETSc using MPI4py and 2) written purely in Python 3000
using all its cool class etc features
4) Use other packages (like f2py) to generate bindings so that 3)
maybe called from Fortran90/2003 and C++ (these probably suck since
people usually think the other way around; calling Fortran/C++ from
Python, but maybe we shouldn't care; we and our friends can just be 10
times more efficient developing apps in Python).
enjoy coding much better than today.
What is wrong with Python 3000 that would make this approach not be
great?
Barry
When coding a new numerical algorithm for PETSc we would just code in
Python, then when tested and happy with reimplement in Py{{CL, CUDA,
OpenMP-C}
The other choice is designing and implementing our own cool/great OO
language with the flexibilty and power we want, but I fear that is way
to hard and why not instead leverage Python.
More information about the petsc-dev
mailing list