Zusammenfassung
Die Entwicklung von effizienten Algorithmen basiert auf der theoretischen Modellierung der Rechner, auf denen sie ausgeführt werden sollen. Noch heute werden frühe Rechnermodelle wie die Random Access Machine (RAM) verwendet, um die Güte von Algorithmen zu analysieren und untereinander zu vergleichen. Aber sich verändernde Umstände wie der rasante Anstieg von interessanten Instanzgrößen, technologischer Fortschritt sowie neue Kostenmaße stellen neue Anforderungen an die Bewertung von Algorithmen – und damit auch an ihre Enwicklung.
In den letzten Jahren wurden viele Fortschritte hinsichtlich dieser neuen Herausforderungen gemacht. Seit den neunziger Jahren des vergangenen Jahrhunderts werden auf Basis des I/O-Modells Algorithmen entwickelt, die die Speicherhierarchien und -technologien moderner Rechner ausnutzen. Auch neueste Speichertechnologien wie Flash-Speicher wurden schon in einem Modell beschrieben, das es Entwicklern ermöglicht, effiziente Algorithmen dafür zu entwickeln.
Der andauernde Trend zu Mehrkernprozessoren führt dazu, dass viele Ergebnisse der klassischen Parallelverarbeitung auf praktisch allen modernen Rechnern Anwendung finden. Algorithmen, die nach dem PEM-Modell entwickelt wurden können die grundlegenden Eigenschaften heutiger Prozessoren ausnutzen. Auch wenn es noch kein allgemein anerkanntes theoretisches Modell für Berechnungen auf Grafikprozessoren gibt, können Algorithmenentwickler hocheffiziente parallele Algorithmen für sie entwickeln, wenn sie sich der Eigenschaften der Hardware bewusst sind.
Wirtschaftliche Notwendigkeiten haben dazu geführt, dass sich ein zusätzliches Optimierungsziel für IT-Projekte etabliert hat – die Energieeffizienz. Auch das Algorithm Engineering kann seinen Teil dazu beitragen, zum Beispiel mit der Optimierung von Algorithmen für stromsparende Hardware.
References
Aggarwal A, Vitter JS (1988) The input/output complexity of sorting and related problems. Commun ACM 31(9):1116–1127
Albers S (2010) Energy-efficient algorithms. Commun ACM 53(5):86–96
Arge L, Goodrich MT, Nelson M, Sitchinava N (2008) Fundamental parallel algorithms for private-cache chip multiprocessors. In: 20th SPAA, Munich, Germany, 14–16 June 2008. ACM, pp 197–206, 2008
Arge L, Procopiuc O, Vitter JS (2002) Implementing I/O-efficient data structures using TPIE. In: Proc. 10th European Symposium on Algorithms (ESA), LNCS, vol 2461, Springer, pp 88–100. Library Download under: http://www.madalgo.au.dk/tpie/, last access 30.1.2013
Beckmann A, Meyer U, Sanders P, and Singler J (2011) Energy-efficient sorting using solid state disks. Sustain Comput Inform Syst 1(2):151–163
Bouganim L, Jónsson B, Bonnet P (2009) uFLIP: understanding flash IO patterns. In: Proc. 4th Conference on Innovative Data Systems Research, Asilomar, CA, USA, 4–7 January 2009
Chen S, Gibbons PB, Nath S (2011) Rethinking database algorithms for phase change memory. In: Proc. 5th Conf. on Innovative Data Systems Research (CIDR), Asilomar, CA, USA, 9–12 January 2011
Dementiev R, Kettner L, Sanders P (2008) STXXL: standard template library for XXL data sets. Softw Pract Exp 38(6):589–637. Library available under http://stxxl.sourceforge.net, last access 30.1.2013
Frigo M, Leiserson CE, Prokop H, Ramachandran S (1999) Cache-oblivious algorithms. In: 40th FOCS. IEEE, New York City, NY, 17–19 October 1999, pp 285–297
Hintemann R, Fichter K (2012) Energieverbrauch und Energiekosten von Servern und Rechenzentren in Deutschland – Aktuelle Trends und Einsparpotenziale bis 2015. Borderstep Institut für Innovation und Nachhaltigkeit, Berlin
Irani S, Pruhs K (2005) Algorithmic problems in power management. SIGACT News 36:63–76
Kumar P (2003) Cache oblivious algorithms. In: Algorithms for Memory Hierarchies, LNCS, vol 2625. Springer, pp 193–212, 2003.
Lewis H, Papadimitriou C (1997) Elements of the Theory of Computation, 2nd edn. Prentice-Hall
Mallón D, Taboada G, Teijeiro C, Touriño J, Fraguela B, Gómez A, Doallo R, Mouriño J, Ropo M, Westerholm J, Dongarra J (2009) Performance evaluation of MPI, UPC and OpenMP on multicore architectures. In: Recent Advances in Parallel Virtual Machine and Message Passing Interface, LNCS, vol 5759. Springer, pp 174–184, 2009
NVIDIA Corporation (2012) CUDA C Programming Guide 4.2. NVIDIA
Richardt C, Orr D, Davies I, Criminisi A, Dodgson NA (2012) Real-time spatiotemporal stereo matching using the dual-cross-bilateral grid. In: Proceedings of the European Conference on Computer Vision (ECCV), LNCS, vol 6313. Springer, pp 510–523, 2010
Vitter JS (2008) Algorithms and Data Structures for External Memory. Foundations and Trends in Theoretical Computer Science. now Publishers, Hanover, MA
Zhao Y, Chen X, Sham C-W, Tam W, Lau F (2011) Efficient decoding of QC-LDPC codes using GPUs. In: Algorithms and Architectures for Parallel Processing, LNCS, vol 7016. Springer, pp 294–305
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
About this article
Cite this article
Meyer, U., Weichert, V. Algorithm Engineering für moderne Hardware. Informatik Spektrum 36, 153–161 (2013). https://doi.org/10.1007/s00287-013-0681-4
Published:
Issue Date:
DOI: https://doi.org/10.1007/s00287-013-0681-4