Please take our Survey
logo       

Choosing A Webhost:
A web hosting service is a type of Internet hosting service that allows individuals and organizations to provide their own website accessible via the World Wide Web. Web hosts are companies that provide space on a server they own for use by their clients as well as providing Internet connectivity, typically in a data center. Web hosts can also provide data center space and connectivity to the Internet for servers they do not own to be located in their data center, called colocation. more...

Re: Proposed backward-incompatible changes totheCCGS.: msg#00028

text.xml.cellml.general

Subject: Re: Proposed backward-incompatible changes totheCCGS.

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>
Google Custom Search

Recently Viewed:
qnx.openqnx.dev...    gcc.libstdc++.c...    solaris.opensol...    information-ret...    misc.misterhous...    web.catalyst.ge...    apache.webservi...    redhat.release....    hardware.lirc/2...    kernel.autofs/2...    technology.sust...    linux.vdr/2003-...    editors.lyx.gen...    org.user-groups...    netbsd.devel.pk...    xdg.devel/2004-...    version-control...    jakarta.slide.d...    debian.packages...    creativecommons...    ports.ppc.embed...    bug-tracking.bu...   
Home | blog view | USPTO Patent Archive | advertise | OSDir is an inevitable website. super tiny logo

Free Magazines

Cisco News
Receive 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