Evaluation of Neural and Genetic Algorithms for Synthesizing Parallel Storage Schemes

  • Authors:
  • Mayez Al-Mouhamed;Hussam Abu-Haimed

  • Affiliations:
  • Computer Engineering Department, College of Computer Science and Engineering, King Fahd University, Dhahran 31261, Saudi Arabia. mayez@ccse.kfupm.edu.sa;Department of Electrical Engineering, Stanford University, Stanford, California. husam@leland.stanford.edu

  • Venue:
  • International Journal of Parallel Programming
  • Year:
  • 2001

Quantified Score

Hi-index 0.00

Visualization

Abstract

Exploiting compile time knowledge to improve memory bandwidth can produce noticeable improvements at runtime.(1, 2) Allocating the data structure(1) to separate memories whenever the data may be accessed in parallel allows improvements in memory access time of 13 to 40%. We are concerned with synthesizing compiler storage schemes for minimizing array access conflicts in parallel memories for a set of compiler predicted data access patterns. The access patterns can be easily found for many synchronous dataflow computations like multimedia compression/decompression algorithms, DSP, vision, robotics, etc. A storage scheme is a mapping from array addresses into storages. Finding a conflict-free storage scheme for a set of data patterns is NP-complete. This problem is reduceable to weighted graph coloring. Optimizing the storage scheme is investigated by using constructive heuristics, neural methods, and genetic algorithms. The details of implementation of these different approaches are presented. Using realistic data patterns, simulation shows that memory utilization of 80% or higher can be achieved in the case of 20 data patterns over up to 256 parallel memories, i.e., a scalable parallel memory. The neural approach was relatively very fast in producing reasonably good solutions even in the case of large problem sizes. Convergence of proposed neural algorithm seems to be only slightly dependent on problem size. Genetic algorithms are recommended for advanced compiler optimization especially for large problem sizes; and applications which are compiled once and run many times over different data sets. The solutions presented are also useful for other optimization problems.