Modify Algorithms so that they work for any number of processes,not just the powers of 2.
1. procedure GENERAL_ONE_TO_ALL_BC(d, my_id, source, X)2. begin3. my_virtual id := my_id XOR source; 4. mask := 2ᵈ - 1;5. for i := d - 1 downto 0 do /* Outer loop */6. mask := mask XOR 2ⁱ; /* Set bit i of mask to 0 */7. if (my_virtual_id AND mask) = 0 then8. if (my_virtual_id AND 2ⁱ) = 0 then9. virtual_dest := my_virtual_id XOR 2ⁱ;10. send X to (virtual_dest XOR source);/* Convert virtual_dest to the label of the physical destination */11. else12. virtual_source := my_virtual_id XOR 2ⁱ;13. receive X from (virtual_source XOR source);/* Convert virtual_source to the label of the physical source */14. endelse;15. endfor;16. end GENERAL_ONE_TO_ALL_BC
Already registered? Login
Not Account? Sign up
Enter your email address to reset your password
Back to Login? Click here