An Automated Approach for Estimating the Memory Footprint of Non-linear Data Objects

  • Sebastian DreBler
  • Thomas Steinke
Part of the Lecture Notes in Computer Science book series (LNCS, volume 8374)


Current programming models for heterogeneous devices with disjoint physical memory spaces require explicit allocation of device memory and explicit data transfers. While it is quite easy to manually implement these operations for linear data objects like arrays, this task becomes more difficult for non-linear objects, e.g. linked lists or multiple inherited classes. The difficulties arise due to dynamic memory requirements at run-time and the dependencies between data structures. In this paper we present a novel method to build a graph-based static data type description which is used to create code for injectable functions that automatically determine the memory footprint of data objects at run-time. Our approach is extensible to implement automatically generated optimized data transfers across physical memory spaces.


Kernel Function Data Object Automate Approach Memory Allocation Memory Footprint 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Andersen, L.O.: Program analysis and specialization for the C programming language. PhD thesis, University of Cophenhagen (1994)Google Scholar
  2. 2.
    ENHANCE Consortium. Enhance - enabling heterogeneous hardware acceleration using novel programming and scheduling models (January 2012)Google Scholar
  3. 3.
    Dhurjati, D., Kowshik, S., Adve, V.: SAFECode: enforcing alias analysis for weakly typed languages. ACM SIGPLAN Notices 41, 144–157 (2006)CrossRefGoogle Scholar
  4. 4.
    Dreßler, S., Steinke, T.: A Novel Hybrid Approach to Automatically Determine Kernel Interface Data Volumes. Technical report, ZIB (2012)Google Scholar
  5. 5.
    Han, T.D., Abdelrahman, T.S.: hiCUDA: High-level GPGPU programming. IEEE Transactions on Parallel and Distributed Systems 22(1), 78–90 (2011)CrossRefGoogle Scholar
  6. 6.
    Heroux, M.A., Doerfler, D.W., Crozier, P.S., Willenbring, J.M., Edwards, H.C., Williams, A., Rajan, M., Keiter, E.R., Thornquist, H.K., Numrich, R.W.: Improving performance via mini-applications. Sandia National Laboratories, Tech. Rep. (2009)Google Scholar
  7. 7.
    Jablin, T.B., Prabhu, P., Jablin, J.A., Johnson, N.P., Beard, S.R., August, D.I.: Automatic cpu-gpu communication management and optimization. ACM SIGPLAN Notices 46, 142–151 (2011)CrossRefGoogle Scholar
  8. 8.
    Lattner, C., et al.: The LLVM compiler infrastructure (2010)Google Scholar
  9. 9.
    Lee, S., Eigenmann, R.: OpenMPC: Extended OpenMP programming and tuning for GPUs. In: Proceedings of the 2010 ACM/IEEE International Conference for High Performance Computing, Networking, Storage and Analysis, pp. 1–11. IEEE Computer Society (2010)Google Scholar
  10. 10.
    Uchiyama, H., Tsumura, T., Matsuo, H.: An Automatic Host and Device Memory Allocation Method for OpenMPC (2012)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2014

Authors and Affiliations

  • Sebastian DreBler
    • 1
  • Thomas Steinke
    • 1
  1. 1.Zuse Institute BerlinBerlin

Personalised recommendations