Optimal Scheduling Algorithms for Parallel Gaussian Elimination