Designing A Scalable Dynamic Load -Balancing Algorithm For Pipelined Single Program Multiple Data Applications On A Non-Dedicated Heterogeneous Network Of Workstations