As far as I can tell, it is not possible to determine whether private memory is mapped to global or is true local memory, just not shared across the workgroup. I know it would be strange to have private memory mapped to global when local memory exists, but I see nothing that prevents this. Conversely, it is easy to imagine that private memory could exist where local doesn't, but again, I don't see how to determine this. Even the local/global specification is inadequate without providing relative access times. In many matrix algorithms, fast local memory makes it worthwhile to first copy a submatrix to shared local memory, then have the threads access that instead of global memory. But unless the local memory is faster by some appropriate ratio, this is a waste. I don't see how to query for this information.