Conway's Game Of Life Problem Parallel (OpenMP)
There is a simple solution.  Instead of storing a hashmap of all positions, store the set of only the positions that are currently alive.  Live cells are included in the set; dead cells are not.  When you want to know whether a particular cell is alive or not, look up that position in the set; if it is found, then the cell is alive, otherwise the cell is dead.  You can store the set as a hashtable.

You said that you expect only about O(size^2) cells to be alive.  My proposal reduces the space complexity to O(size^2), instead of O(size^3).  Also, the running time to check whether a particular cell is alive will be O(1).  The running time to enumerate all live cells will be O(size^2).

It follows that the running time to compute the next state of the world will be O(size^2).  Since each cell has only 4 neighbors, you only need to enumerate O(5 * size^2) = O(size^2) many cells (all of the live cells and their neighbors) to see which will be alive in the next iteration.  To tell whether a cell will be alive in the next iteration can be done by examining its state and the state of its 4 neighbors, which can be done in O(1) time.

This approach should also generalize nicely to a parallel/distributed implementation.

This all assumes that the number of live cells is limited to O(size^2) for all iterations.  That might be a dubious assumption in practice: the number of live cells can quickly grow to O(size^3), for some initial configurations (in particular, it might take only O(lg size) iterations to go from O(size^2) to O(size^3) live cells).