Strategies for Parallel Execution of Cellular Automata in Distributed Memory Architectures