This might have been asked before, but I've gotten to think about the tight memory restriction again, and then I realized that assuming 32KB to be available to your program is probably a bit too optimistic.
So, how much memory is actually available to your program? This includes code and data. Phrased differently, how much space per core is needed for things not directly part of the program you compile yourself, such as interrupt handling, inter-core communication buffers(for a lack of the correct term), etc?