|
|
Choosing A Webhost: |
Re: Proposed backward-incompatible changes totheCCGS.: msg#00028text.xml.cellml.general
excellent, thanks for the explanations Andrew - it all makes sense now :-) Andre. Andrew Miller wrote: > David Nickerson wrote: >> Hi Andrew, >> >> I think the advantages offered by this transition outweigh the lack of >> backwards compatibility and have no objections to your proposal, just a >> few clarifications below... >> >> >>> I am planning on completely updating the CCGS to make use of CeVAS, >>> MaLaES, and CUSES. Due to the large scale of the changes, I am taking >>> this opportunity to fix some design issues which currently limit what >>> CCGS can do. This inevitably means breaking the existing interface, and >>> any code that uses it (I could have tried to make the interfaces look >>> the same, but the code generated would still be different, due to the >>> changes discussed below). >>> >>> Major changes proposed: >>> * The concept of variables and rates in CCGS is being replaced by a >>> concept of a computation target. A computation target is anything which >>> can be computed by CCGS, and includes variables and rates (possibly >>> multiple times). >>> >> I'm not sure I follow how variable's are linked to a ComputationTarget. >> You say that a given variable may be associated with multiple >> computable's - does this mean there are possibly multiple methods to >> compute the same variable or will all the ComputationTarget's for a >> given variable resolve to the same computational steps? >> > Hi Andre, > > 'Computing a variable' no longer has much meaning, because there can be > more than one thing which you need to compute (multiple derivatives of > the same variable). > > For example, if you have an equation like d^3(x)/dt^3 = t in the CellML, > then what actually gets computed is: > 1. The rate d^3(x)/dt^3 > 2. The rate d^2(x) / dt^2 (copied from the state variable for 1 above). > 3. The rate d(x)/dt (copied from the state variable for 2 above). > > All three rates are separate computation targets associated with > variable x, and all three get computed (there is no choice between > them). They do not 'resolve to the same computational step' in the sense > that they could be computed in different places in the generated code. > However, the order chosen will always ensure that rates or variables are > computed prior to being used to compute another rate or variable. >> >>> * There will no longer be separate blocks of code which explicitly >>> compute rates and blocks which explicitly compute variables. Instead, >>> computation targets are computed, and as a side effect of this, any >>> other algebraic or rate variable may be computed as a pre-requisite. One >>> positive result of this is that it will be possible to use derivatives >>> like any other variable, so the same derivative can appear more than >>> once, and derivatives can even be solved by Newton-Raphson steps if >>> required. It means that it is possible to efficient code which evolves >>> the model without computing unnecessary variables until they are needed >>> for presentation purposes. This completely changes the structure of the >>> strings produced, causing backward-incompatibility. >>> >> Could you clarify what you mean by "presentation purposes"? >> > Perhaps 'presentation purposes' is not the best phrase, because > obviously it might be used for further non-CellML computations rather > than presentation to the user. The point is that the blocks of code > generated will be split up differently. One block of code will compute > how to initialise constants, another will compute the rates and the > minimum other variables needed to compute the rates, and the third will > compute all remaining variables. The third block does not need to be run > at every integration step unless you have a compelling reason to know > the values of the variables computed in it (e.g. to present them to the > user, or to allow for further use of these values). This makes it > possible to have lots of extra variables which just give you some more > useful interpretation of the model but don't actually affect the > evolution of the state variables, without worrying that they will slow > the algorithm when they aren't needed (the current code does have > something similar which was hacked in using pre-processor macros in the > generated code, to avoid breaking backwards compatibility, but that > solution is not sustainable especially for languages without > pre-processors, and the new split is much cleaner). >> >>> * The idea that a rate is a constant is contemplated, allowing for more >>> efficient computation. >>> >> Is this looking at the math defining a rate and checking if it would >> remain constant after all the other math has been processed? >> > Yes. The current code allows for variables to be 'computed constants', > but not rates. The new code gives rates equivalent status to variables, > so they can also be computed only once if that is required. > > Some integrators might require that the rates array be backed up and > copied to support this (because in reality, there is more than one rates > array internal to the integrator), but a copy is still better than > performing complex computations which are not necessary at every step > (of course, it is not clear that such rates are very common in real > models, but I think it makes sense to put all computation targets into > the same general framework, so any future optimisations which might be > more useful also can be used). In the future, for example, this could be > used as part of a partial evaluation framework, or perhaps models could > be split into non-coupled components, allowing larger models to be more > efficiently evaluated, and perhaps some parts being evaluated analytically. > > Best regards, > Andrew > > _______________________________________________ > cellml-discussion mailing list > cellml-discussion-+N4dcC6UsuQdnm+yROfE0A@xxxxxxxxxxxxxxxx > http://www.cellml.org/mailman/listinfo/cellml-discussion -- David Nickerson, PhD Research Fellow Division of Bioengineering Faculty of Engineering National University of Singapore Email: david.nickerson-6Bl98Hp8bEiLvajZxc+D7Q@xxxxxxxxxxxxxxxx
|
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| Previous by Date: | Re: removal of reaction components from models, Andrew Miller |
|---|---|
| Next by Date: | Re: removal of reaction components from models, James Lawson |
| Previous by Thread: | Re: removal of reaction components from models, James Lawson |
| Next by Thread: | initial feedback on new repository metadata tools, David Nickerson |
| Indexes: | [Date] [Thread] [Top] [All Lists] |
Free MagazinesCisco NewsReceive a free quarterly e-newsletter with exclusive articles on how Cisco IT uses its own products and solutions to enable the business. subscribe Systems Management News, the newspaper for IT systems administration and data center managers! Each issue of Systems Management News is chock-full of news and analysis to help you understand what's happening in your field. subscribe The Enterprise Newsweekly eWeek is the essential technology information source for builders of e-business. subscribe Oracle Magazine Oracle Magazine contains technology strategy articles, sample code, tips, Oracle and partner news, how to articles for developers and DBAs, and more. Oracle (NASDAQ: ORCL) is the world's largest enterprise software company. subscribe Total Telecom Total Telecom is "The Economist of the communications industry". subscribe |