Hello,
Getting 4-5 FPS in software rendering (CPU) for that number of cells is quite good in my opinion. I think 12 cores can’t compare to the thousands of cores of a modern graphics card available for hardware rendering. Such is the difference in performance that no one uses software rendering today for serious applications.
Now, if you do have a reason to use software rendering, you have to impose very restrictive limits on the complexity of the scenes you need to render. Either this or buy way more CPUs from your cloud provider and implement cluster-level parallelization in your program (OpenMP, MPI, etc.). Though, it would be a lot cheaper, a lot easier and a lot more efficient to just use GPUs like everyone does.
regards,
Paulo