since developing object oriented software is so cumbersome in C and we are all resistent to doing it in C++

Barry Smith bsmith at
Fri Dec 4 22:42:35 CST 2009


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  


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,  

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