3

GPUs have become more and more general purpose over the last decade. There has been a fair amount of recent research that has successfully ported unstructured and pointer-based algorithms (Breadth-first search and Andersen's points-to analysis are good examples) to GPU environments as well. Soon enough we should see more and more graph algorithms used in adaptive mesh refinement and social networking executed in a GPU environment as well.

Another step in this trend would involve even more complicated code structures such as compilers or even Operating Systems. To my knowledge there hasn't been much work done in this area (yet). Conventional wisdom tells us that lots of Operating System code (at least, the way things currently stand) is not suitable for a parallel environment because it is inherently serial, pointer-based, etc; however, we would have wrongly used a similar argument for an algorithm like BFS years ago.

I'm more interested as to whether or not implementing an Operating System or compiler is currently possible given the tools we currently have as opposed to why or why not it hasn't been (or won't be) done. I'd like to think it could be done, but would take tremendous algorithmic changes. Hopefully this generates a good discussion.

An extra, somewhat related, thought: Would support for precise exceptions be a particularly difficult roadblock for the operating system case?

Adam27X
  • 889
  • 1
  • 7
  • 16
  • 1
    Can the people downvoting at least explain why they think this question is no good? – Adam27X Dec 06 '12 at 22:17
  • 1
    I think the people who are downvoting you are doing so because this is essentially a research question which is difficult to answer in Stack Overflow's format. It's an interesting question, nonetheless. I can think of at least a few current showstoppers to large and sophisticated applications such as OS kernels on GPUs. Issues such as no (or limited) support for system calls, I/O, interrupts, and continuations come to mind. – Jared Hoberock Dec 07 '12 at 00:34
  • This is basically off topic for Stack Overflow. And it has been asked before: http://stackoverflow.com/questions/28147/feasability-of-gpu-as-a-cpu – talonmies Dec 07 '12 at 07:39
  • If a bootloader counts for a tiny "operating system", then there is one - e.g., Raspberry Pi boots via its GPU first, and only then starts the ARM core. – SK-logic Dec 07 '12 at 11:23

1 Answers1

6

Operating system is not compute intensive, it is mainly IO based. So there is not much to gain by using GPU. Also, most of these IO operations, like disk control, keyboard input... are not possible at this point with GPU. Consider memory management, device-host communication is not even fast enough to implement a practical paging algorithm. Add this the need to move pages back and forth from CPU to GPU. It is more likely to move the user level tools such as the UI shell, and utilities, to the GPU side.

perreal
  • 94,503
  • 21
  • 155
  • 181