1. A method of accessing separate parallel memory spaces using a unified memory space address, the method comprising: extracting parallel memory space window position from a field in the unified memory space address; converting the unified memory space address to a local memory address for a thread when the parallel memory space window position corresponds to a local memory space, wherein unified memory space addresses within the local memory space window are accessible by the thread; converting the unified memory space address to a shared memory address for a thread array when the parallel memory space window position corresponds to a shared memory space, wherein unified memory space addresses within the shared memory space window are accessible by threads in the thread array; and converting the unified memory space address to a global memory address when the parallel memory space window position does not correspond to either the local memory space or the shared memory space, wherein unified memory space addresses within the global memory space window are accessible by all threads in all thread arrays.