-
Notifications
You must be signed in to change notification settings - Fork 35
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Modernising PyOP2 #615
Comments
There are a bunch of places in firedrake where we still manipulate coffee rather than loopy kernels to paste them together. TBH this is mostly to paste strings together so one could build loopy and turn it into a string. I think we never did it is all. |
Just FYI, there are two types of caching in PyOP2:
I think 2 was also done because we used object identity lookup in various other caches (but again that can go away). This was a kind of workaround for initially thinking that some objects would be throw-away create/destroy, but then realising that they needed to carry heavy data. I think a redesign should do basically no caching and require the consumer of the API to hold on to objects that are "heavy". We should then strive to make throwaway objects as lightweight to construct as possible. |
Ah yes thank you. We should definitely keep the former but I didn't make that clear. Also, given that you haven't commented on the remaining items I brought up, am I safe to assume that you agree with them? |
I think so |
This is quite an out-of-date discussion and my pyop3 work supercedes this. Closing. |
Since I'm going to be spending a lot of time digging around PyOP2 over my PhD I think it would be good to get a list of old features that can be removed/refactored so I can tackle them along the way. I was thinking of creating a GitHub Project to track them all.
To start with I'd like to know what people think about the following:
base.py
intoarg.py
,dat.py
,set.py
etc (mentioned here).petsc_base.py
andsequential.py
into these files. My understanding is these were created when it was thought that we might want to support multiple backends but this is no longer the case.caching.py
(see below)._version.py
so I thought that this should be a part of the discussion.For the caching mentioned above, one of the things that I am working on at the moment is trying to treat parloops as generated code, much like a TSFC kernel, so they don't hold any data references. This means that we can focus on caching parloops outside of PyOP2 so we could remove much of the caching that we currently do internally.
Please do share any other ideas that you think of.
The text was updated successfully, but these errors were encountered: