Libraries play a most important role in our HPspmd programming model. In a sense, the HPspmd language extensions are simply a framework to make calls to libraries that operate on distributed arrays. Thus, an essential component of our HPspmd programming model is to define a series of bindings of SPMD libraries and environments in HPspmd languages. Various issues must be mentioned in interfacing to multiple libraries. For instance, low-level communication or scheduling mechanisms used by the different libraries might be incompatible. As a practical matter, these incompatibilities must be mentioned, but the main thrust of own research has been at the level of designing compatible interfaces, rather than solving interference problems in specific implementations. There are libraries such as ScaLAPACK  and PetSc  which are similar to standard numerical libraries. For example, they support implementations of standard matrix algorithms, but are executed on elements in regularly distributed arrays. We suppose that designing HPspmd interfaces for the libraries will be relatively straightforward. ScaLAPACK, for instance, supports linear algebra library routines for distributed-memory computers. These library routines work on distributed arrays (and matrices, especially). Thus, it should not be difficult to use ScaLAPACK library routines from HPspmd frameworks. There are also libraries primarily supporting general parallel programming with regular distributed arrays. They concentrate on high-level communication primitives rather than specific numerical algorithms. We reviewed detailed examples in the section 2.4 of the previous chapter. Finally, we mention libraries supporting irregular problems. Regular problems are important in parallel applications. But, they are only a subset of the parallel applications. There are a lot of important and critical problems involving data structures which are too irregular to illustrate using HPF-style distributed arrays. This category includes PARTI  and DAGH . We believe that irregular problems will still take advantage of regular data-parallel language extensions. At some level, irregular problems usually somehow depend on representations including regular arrays. But, the lower-level SPMD programming, using specialized class libraries, probably plays a more important role here.