Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revisionBoth sides next revision
publications:bibtex [2018/08/30 20:55] hnvpublications:bibtex [2021/02/12 20:36] – Add further publications hnv
Line 49: Line 49:
 % %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 +
 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 +% 2019
 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 +
 +@article{SinkViesSchoARXIV19,
 +  author    = {Artjoms Sinkarovs and
 +               Hans{-}Nikolai Vie{\ss}mann and
 +               Sven{-}Bodo Scholz},
 +  title     = {Array Languages Make Neural Networks Fast},
 +  journal   = {CoRR},
 +  volume    = {abs/1912.05234},
 +  year      = {2019},
 +  url       = {http://arxiv.org/abs/1912.05234},
 +  archivePrefix = {arXiv},
 +  eprint    = {1912.05234},
 +  timestamp = {Thu, 02 Jan 2020 18:08:18 +0100},
 +  biburl    = {https://dblp.org/rec/journals/corr/abs-1912-05234.bib},
 +  bibsource = {dblp computer science bibliography, https://dblp.org}
 +}
  
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Line 54: Line 74:
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  
 +@inproceedings{ViesSinkSchoIFL18,
 +author = {Vie\ss{}mann, Hans-Nikolai and \v{S}inkarovs, Artjoms and Scholz, Sven-Bodo},
 +title = {Extended Memory Reuse: An Optimisation for Reducing Memory Allocations},
 +year = {2018},
 +isbn = {9781450371438},
 +publisher = {Association for Computing Machinery},
 +address = {New York, NY, USA},
 +url = {https://doi.org/10.1145/3310232.3310242},
 +doi = {10.1145/3310232.3310242},
 +abstract = {In this paper we present an optimisation for reference counting based garbage collection. The optimisation aims at reducing the total number of calls to the heap manager while preserving the key benefits of reference counting, i.e. the opportunities for in-place updates as well as memory deallocation without global garbage collection. The key idea is to carefully extend the lifetime of variables so that memory deallocations followed by memory allocations of the same size can be replaced by a direct memory reuse. Such memory reuse turns out particularly useful in the context of innermost loops of compute-intensive applications. It leads to a runtime behaviour that performs pointer swaps between buffers in the same way it would be implemented manually in languages that require explicit memory management, e.g. C.We have implemented the proposed optimisation in the context of the Single-Assignment C compiler tool chain. The paper provides an algorithmic description of our optimisation and an evaluation of its effectiveness over a collection of benchmarks including a subset of the Rodinia benchmarks and the NAS Parallel Benchmarks. We show that for several benchmarks with allocations within loops our optimisation reduces the amount of allocations by a few orders of magnitude. We also observe no negative impact on the overall memory footprint nor on the overall runtime. Instead, for some sequential executions we find mild improvement, and on GPU devices we observe speedups of up to a factor of 4x.},
 +booktitle = {Proceedings of the 30th Symposium on Implementation and Application of Functional Languages},
 +pages = {107–118},
 +numpages = {12},
 +keywords = {reference counting, memory management, compiler optimisation},
 +location = {Lowell, MA, USA},
 +series = {IFL 2018}
 +}
 +
 +@inproceedings{SinkBernViesSchoARRAY18,
 +  author    = {Artjoms Sinkarovs and
 +               Robert Bernecky and
 +               Hans{-}Nikolai Vie{\ss}mann and
 +               Sven{-}Bodo Scholz},
 +  title     = {A Rosetta Stone for array languages},
 +  booktitle = {Proceedings of the 5th {ACM} {SIGPLAN} International Workshop on Libraries,
 +               Languages, and Compilers for Array Programming, ARRAY (at PLDI) 2018, Philadelphia,
 +               PA, USA, June 19, 2018},
 +    abstract  = {This paper aims to foster cross-fertilisation between programming language and compiler research performed on different array programming language infrastructures. We study how to enable better comparability of concepts and techniques by looking into generic translations between array languages. Our approach is based on the idea of a basic core language Heh which only captures the absolute essentials of array languages: multi-dimensional arrays and shape-invariant operations on them. Subsequently, we investigate how to map these constructs into several existing languages: SaC, APL, Julia, Python, and C. This approach provides us with some first understanding on how the peculiarities of these languages affect their suitability for expressing the basic building-blocks of array languages. We show that the existing tool-chains by-and-large are very sensitive to the way code is specified. Furthermore, we expose several fundamental programming patterns where optimisations missing in one or the other tool chain inhibit fair comparisons and, with it, cross-fertilisation.},
 +  pages     = {1--10},
 +  year      = {2018},
 +  doi       = {10.1145/3219753.3219754},
 +  timestamp = {Tue, 10 Jul 2018 08:34:20 +0200},
 +}
  
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Line 305: Line 358:
   topics = {SAC},   topics = {SAC},
   doi = {10.1117/1.JEI.21.2.021116},   doi = {10.1117/1.JEI.21.2.021116},
 +  url = {wiesgrelhasl_jei12.pdf},
   category = {apps}   category = {apps}
 } }
Line 1541: Line 1595:
   url       = {sac-overview-norwich-94.pdf},   url       = {sac-overview-norwich-94.pdf},
 } }
-