Show simple item record

dc.contributor.authorChristianson, B.
dc.contributor.authorDixon, L.
dc.contributor.authorBrown, S.
dc.date.accessioned2010-03-16T11:54:17Z
dc.date.available2010-03-16T11:54:17Z
dc.date.issued1996
dc.identifier.citationChristianson , B , Dixon , L & Brown , S 1996 , Sharing storage using dirty vectors . in In: Computational Differentiation: Techniques, Applications and Tools, Procs of the 2nd SIAM Workshop on Computational Differentiation, Santa Fe, New Mexico, 1996. . Society for Industrial and Applied Mathematics (SIAM Press) , pp. 107-115 .
dc.identifier.isbn0898713854
dc.identifier.otherPURE: 102752
dc.identifier.otherPURE UUID: ce83fc3e-a19f-468d-ab0b-1e46400fbfb1
dc.identifier.otherdspace: 2299/4340
dc.identifier.urihttp://hdl.handle.net/2299/4340
dc.description.abstractConsider a computation F with n inputs (independent variables) and m outputs (dependent variables) and suppose that we wish to evaluate the Jacobian of F. Automatic differentiation commonly performs this evaluation by associating vector storage either with the program variables (in the case of forward-mode automatic differentiation) or with the adjoint variables (in the case of reverse). Each vector component contains a partial derivative with respect to an independent variable, or a partial derivative of a dependent variable, respectively. The vectors may be full vectors, or they may be dynamically managed sparse data structures. In either case, many of these vectors will be scalar multiples of one another. For example, any intermediate variable produced by a unary operation in the forward mode will have a derivative vector that is a multiple of the derivative for the argument. Any computational graph node that is read just once during its lifetime will have an adjoint vector that is a multiple of the adjoint of the node that reads it. It is frequently wasteful to perform component multiplications explicitly. A scalar multiple of another vector can be replaced by a single multiplicative "scale factor" together with a pointer to the other vector. Automated use of this "dirty vector" technique can save considerable memory management overhead and dramatically reduce the number of floating-point operations required. In particular, dirty vectors often allow shared threads of computation to be reverse-accumulated cheaply. The mechanism permits a number of generalizations, some of which give efficient techniques for preaccumulation.en
dc.language.isoeng
dc.publisherSociety for Industrial and Applied Mathematics (SIAM Press)
dc.relation.ispartofIn: Computational Differentiation: Techniques, Applications and Tools, Procs of the 2nd SIAM Workshop on Computational Differentiation, Santa Fe, New Mexico, 1996.
dc.titleSharing storage using dirty vectorsen
dc.contributor.institutionSchool of Computer Science
dc.contributor.institutionCentre for Computer Science and Informatics Research
rioxxterms.typeOther
herts.preservation.rarelyaccessedtrue


Files in this item

Thumbnail

This item appears in the following Collection(s)

Show simple item record