Unlike software such as LAPACK, which is designed for sequential computers and shared-memory systems, the performance of the ScaLAPACK library is sensitive not only to the characteristics of the distributed-memory computer but also to the parameters of the data distribution. Choosing these distribution parameters is often perceived by the user as a difficult task. These degrees of freedom are, however, the fundamental factor that allows the ScaLAPACK software to be inherently and potentially highly efficient for a wide range of distributed-memory concurrent computers. In this article, we discuss the major factors that affect the performance of the ScaLAPACK driver routines. Also provided are guidelines to help users in their quest for high performance.