Communication Optimization on GPU: A Case Study of Sequence Alignment Algorithms