An Efficient Tasks Scheduling Algorithm for Distributed Memory Machines with Communication Delays