Parallel Solution of Triangular Systems on Distributed-Memory Multiprocessors