{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,4,23]],"date-time":"2026-04-23T06:25:37Z","timestamp":1776925537392,"version":"3.51.2"},"reference-count":21,"publisher":"Association for Computing Machinery (ACM)","issue":"2","license":[{"start":{"date-parts":[[2015,6,24]],"date-time":"2015-06-24T00:00:00Z","timestamp":1435104000000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"funder":[{"name":"European Research Council Advanced","award":["267175"],"award-info":[{"award-number":["267175"]}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Archit. Code Optim."],"published-print":{"date-parts":[[2015,7,8]]},"abstract":"<jats:p>Memoization is the technique of saving the results of executions so that future executions can be omitted when the input set repeats. Memoization has been proposed in previous literature at the instruction, basic block, and function levels using hardware, as well as pure software--level approaches including changes to programming language.<\/jats:p>\n          <jats:p>In this article, we focus on software memoization for procedural languages such as C and Fortran at the granularity of a function. We propose a simple linker-based technique for enabling software memoization of any dynamically linked pure function by function interception and illustrate our framework using a set of computationally expensive pure functions\u2014the transcendental functions. Transcendental functions are those that cannot be expressed in terms of a finite sequence of algebraic operations (trigonometric functions, exponential functions, etc.) and hence are computationally expensive.<\/jats:p>\n          <jats:p>Our technique does not need the availability of source code and thus can even be applied to commercial applications, as well as applications with legacy codes. As far as users are concerned, enabling memoization is as simple as setting an environment variable. Our framework does not make any specific assumptions about the underlying architecture or compiler toolchains and can work with a variety of current architectures. We present experimental results for a x86-64 platform using both gcc and icc compiler toolchains, and an ARM Cortex-A9 platform using gcc. Our experiments include a mix of real-world programs and standard benchmark suites: SPEC and Splash2x. On standard benchmark applications that extensively call the transcendental functions, we report memoization benefits of up to 50% on Intel Ivy Bridge and up to 10% on ARM Cortex-A9.<\/jats:p>\n          <jats:p>\n            Memoization was able to regain a performance loss of 76% in bwaves due to a known performance bug in the GNU implementation of the\n            <jats:italic>pow<\/jats:italic>\n            function. The same benchmark on ARM Cortex-A9 benefited by more than 200%.\n          <\/jats:p>","DOI":"10.1145\/2751559","type":"journal-article","created":{"date-parts":[[2015,6,25]],"date-time":"2015-06-25T14:36:19Z","timestamp":1435242979000},"update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":23,"title":["Intercepting Functions for Memoization"],"prefix":"10.1145","volume":"12","author":[{"given":"Arjun","family":"Suresh","sequence":"first","affiliation":[{"name":"INRIA\/IRISA, Rennes, France"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Bharath Narasimha","family":"Swamy","sequence":"additional","affiliation":[{"name":"INRIA\/IRISA, Rennes, France"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Erven","family":"Rohou","sequence":"additional","affiliation":[{"name":"INRIA\/IRISA, Rennes, France"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Andr\u00e9","family":"Seznec","sequence":"additional","affiliation":[{"name":"INRIA\/IRISA, Rennes, France"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2015,6,24]]},"reference":[{"key":"e_1_2_2_1_1","doi-asserted-by":"publisher","DOI":"10.1109\/TC.2005.119"},{"key":"e_1_2_2_2_1","doi-asserted-by":"publisher","DOI":"10.5555\/647074.713908"},{"key":"e_1_2_2_3_1","volume-title":"n.d. This Is a Program to Solve Nonlinear 2-D PDE Using One-Step Linearization. Retrieved","author":"Barsky Sandra","year":"2015","unstructured":"Sandra Barsky . n.d. This Is a Program to Solve Nonlinear 2-D PDE Using One-Step Linearization. Retrieved May 4, 2015 , from http:\/\/www.mgnet.org\/mgnet\/Codes\/barsky\/nl.c. Sandra Barsky. n.d. This Is a Program to Solve Nonlinear 2-D PDE Using One-Step Linearization. Retrieved May 4, 2015, from http:\/\/www.mgnet.org\/mgnet\/Codes\/barsky\/nl.c."},{"key":"e_1_2_2_4_1","doi-asserted-by":"publisher","DOI":"10.1145\/1454115.1454128"},{"key":"e_1_2_2_5_1","doi-asserted-by":"publisher","DOI":"10.5555\/776261.776290"},{"key":"e_1_2_2_6_1","doi-asserted-by":"publisher","DOI":"10.1007\/s11356-013-2245-1"},{"key":"e_1_2_2_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/291069.291056"},{"key":"e_1_2_2_8_1","volume-title":"Proceedings of the 32nd Annual International Symposium on Microarchitecture (MICRO-32)","author":"Daniel","unstructured":"Daniel A. Connors and Wen-Mei W. Hwu. 1999. Compiler-directed dynamic computation reuse: Rationale and initial results . In Proceedings of the 32nd Annual International Symposium on Microarchitecture (MICRO-32) . 158--169. Daniel A. Connors and Wen-Mei W. Hwu. 1999. Compiler-directed dynamic computation reuse: Rationale and initial results. In Proceedings of the 32nd Annual International Symposium on Microarchitecture (MICRO-32). 158--169."},{"key":"e_1_2_2_9_1","volume-title":"Proceedings of the 22nd International Conference on Parallel Architectures and Compilation Techniques. IEEE","author":"Da Costa Amarildo T.","year":"2000","unstructured":"Amarildo T. Da Costa , Felipe M. G. Fran\u00e7a , and Eliseu M. C. Filho . 2000. The dynamic trace memorization reuse technique . In Proceedings of the 22nd International Conference on Parallel Architectures and Compilation Techniques. IEEE , Los Alamitos, CA, 92--92. http:\/\/www.computer.org\/csdl\/proceedings\/pact\/ 2000 \/0622\/00\/06220092.pdf. Amarildo T. Da Costa, Felipe M. G. Fran\u00e7a, and Eliseu M. C. Filho. 2000. The dynamic trace memorization reuse technique. In Proceedings of the 22nd International Conference on Parallel Architectures and Compilation Techniques. IEEE, Los Alamitos, CA, 92--92. http:\/\/www.computer.org\/csdl\/proceedings\/pact\/2000\/0622\/00\/06220092.pdf."},{"key":"e_1_2_2_10_1","doi-asserted-by":"publisher","DOI":"10.1109\/MICRO.2012.48"},{"key":"e_1_2_2_11_1","doi-asserted-by":"publisher","DOI":"10.5555\/850940.852874"},{"key":"e_1_2_2_12_1","doi-asserted-by":"publisher","DOI":"10.1145\/1186736.1186737"},{"key":"e_1_2_2_13_1","volume-title":"Proceedings of the 5th International Symposium on High-Performance Computer Architecture. IEEE","author":"Huang Jian","unstructured":"Jian Huang and David J. Lilja . 1999. Exploiting basic block value locality with block reuse . In Proceedings of the 5th International Symposium on High-Performance Computer Architecture. IEEE , Los Alamitos, CA, 106--114. http:\/\/ieeexplore.ieee.org\/xpls\/abs_all.jsp?arnumber=744342. Jian Huang and David J. Lilja. 1999. Exploiting basic block value locality with block reuse. In Proceedings of the 5th International Symposium on High-Performance Computer Architecture. IEEE, Los Alamitos, CA, 106--114. http:\/\/ieeexplore.ieee.org\/xpls\/abs_all.jsp?arnumber=744342."},{"key":"e_1_2_2_14_1","volume-title":"n.d. Intel Turbo Boost Technology. Retrieved","author":"Intel Corporation","year":"2015","unstructured":"Intel Corporation . n.d. Intel Turbo Boost Technology. Retrieved May 4, 2015 , from http:\/\/www.intel.com\/content\/www\/us\/en\/architecture-and-technology\/turbo-boost\/turbo-boost-technology.html. Intel Corporation. n.d. Intel Turbo Boost Technology. Retrieved May 4, 2015, from http:\/\/www.intel.com\/content\/www\/us\/en\/architecture-and-technology\/turbo-boost\/turbo-boost-technology.html."},{"key":"e_1_2_2_15_1","doi-asserted-by":"publisher","DOI":"10.1145\/1065010.1065034"},{"key":"e_1_2_2_16_1","doi-asserted-by":"publisher","DOI":"10.1145\/286385.286386"},{"key":"e_1_2_2_17_1","doi-asserted-by":"publisher","DOI":"10.1145\/1250727.1250729"},{"key":"e_1_2_2_18_1","doi-asserted-by":"publisher","DOI":"10.1145\/62678.62721"},{"key":"e_1_2_2_20_1","volume-title":"Proceedings of the International Workshop on Dynamic Compilation Everywhere (DCE\u201914)","author":"Riou Emmanuel","year":"2014","unstructured":"Emmanuel Riou , Erven Rohou , Philippe Clauss , Nabil Hallou , and Alain Ketterlin . 2014 . PADRONE: A platform for online profiling, analysis, and optimization . In Proceedings of the International Workshop on Dynamic Compilation Everywhere (DCE\u201914) . http:\/\/hal.inria.fr\/hal-00917950. Emmanuel Riou, Erven Rohou, Philippe Clauss, Nabil Hallou, and Alain Ketterlin. 2014. PADRONE: A platform for online profiling, analysis, and optimization. In Proceedings of the International Workshop on Dynamic Compilation Everywhere (DCE\u201914). http:\/\/hal.inria.fr\/hal-00917950."},{"key":"e_1_2_2_21_1","doi-asserted-by":"publisher","DOI":"10.1145\/1852761.1852775"},{"key":"e_1_2_2_22_1","doi-asserted-by":"publisher","DOI":"10.1145\/1346281.1346300"}],"container-title":["ACM Transactions on Architecture and Code Optimization"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/2751559","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/2751559","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T05:43:07Z","timestamp":1750225387000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/2751559"}},"subtitle":["A Case Study Using Transcendental Functions"],"short-title":[],"issued":{"date-parts":[[2015,6,24]]},"references-count":21,"journal-issue":{"issue":"2","published-print":{"date-parts":[[2015,7,8]]}},"alternative-id":["10.1145\/2751559"],"URL":"https:\/\/doi.org\/10.1145\/2751559","relation":{},"ISSN":["1544-3566","1544-3973"],"issn-type":[{"value":"1544-3566","type":"print"},{"value":"1544-3973","type":"electronic"}],"subject":[],"published":{"date-parts":[[2015,6,24]]},"assertion":[{"value":"2014-08-01","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2015-03-01","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2015-06-24","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}