Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Why obi doesn't work in Gpu ?
#1
Sorprendido 
Hello, im owner from Ineffable Game Studios. And im wondering this question: Why obi doesn't work in Gpu ? why working in cpu ? it's a good think or bad think ? In the Internet, according to research, Cpu vs Gpu compares to Gpu is better than Cpu.
Everyting's abaout details.
Reply
#2
(22-03-2018, 04:01 PM)IGStudios Wrote: Hello, im owner from Ineffable Game Studios. And im wondering this question: Why obi doesn't work in Gpu ? why working in cpu ? it's a good think or bad think ? In the Internet, according to research, Cpu vs Gpu compares to Gpu is better than Cpu.

There's lots of reasons not to use the GPU, imho.

Some things just cannot be accomplished in GPU. For instance, full two-way coupling with rigidbodies. If Obi was GPU based, you could not sustain the weight of a rigidbody box on top of a piece of cloth, for instance. Cloth would react to rigidbodies, but not the other way around. Not doable without really hindering performance since (as of now, at least in Unity) rigidbody simulation happens in the CPU and you'd need to transfer a lot of data back and forth between CPU and GPU to support coupling, defeating the purpose of using the GPU.

Another very important point that favors CPU is that using the GPU has a huge entry cost. This is something most people just don't realize, and a common pitfall when users get their hands onto GPU-based simulators. They think everything will run faster in the GPU when reality is only huge amounts of work that can be parallelized do. GPUs fail miserably when the amount of work to be done is relatively low.

We did try to use the GPU in the past, however. Simulating say, 2000-5000 particles was much slower in the GPU. Unless your use case involves tens of thousands (> 20k - 100k) of particles, the CPU will always get the job done faster, simply because it takes more time to feed the problem to the GPU than it takes for it to calculate the answer.

Lastly, there's portability and ease of maintenance. Writing and maintaining portable GPU code is much harder (though a bit easier today than a few years ago) and restricts the range of devices your code can run on.

Also, Obi is extremely well optimized. It fully exploits multithreading and makes heavy use of SIMD, this makes it blazingly fast in multicore CPUs. Current trend is to increase core count and decrease each core's speed, so Obi will benefit from this. In the future, we might add a GPU mode with some restrictions, if we can afford to maintain it without compromising the quality of the entire thing.
Reply
#3
(22-03-2018, 06:00 PM)josemendez Wrote: There's lots of reasons not to use the GPU, imho.

Some things just cannot be accomplished in GPU. For instance, full two-way coupling with rigidbodies. If Obi was GPU based, you could not sustain the weight of a rigidbody box on top of a piece of cloth, for instance. Cloth would react to rigidbodies, but not the other way around. Not doable without really hindering performance since (as of now, at least in Unity) rigidbody simulation happens in the CPU and you'd need to transfer a lot of data back and forth between CPU and GPU to support coupling, defeating the purpose of using the GPU.

Another very important point that favors CPU is that using the GPU has a huge entry cost. This is something most people just don't realize, and a common pitfall when users get their hands onto GPU-based simulators. They think everything will run faster in the GPU when reality is only huge amounts of work that can be parallelized do. GPUs fail miserably when the amount of work to be done is relatively low.

We did try to use the GPU in the past, however. Simulating say, 2000-5000 particles was much slower in the GPU. Unless your use case involves tens of thousands (> 20k - 100k) of particles, the CPU will always get the job done faster, simply because it takes more time to feed the problem to the GPU than it takes for it to calculate the answer.

Lastly, there's portability and ease of maintenance. Writing and maintaining portable GPU code is much harder (though a bit easier today than a few years ago) and restricts the range of devices your code can run on.

Also, Obi is extremely well optimized. It fully exploits multithreading and makes heavy use of SIMD, this makes it blazingly fast in multicore CPUs. Current trend is to increase core count and decrease each core's speed, so Obi will benefit from this. In the future, we might add a GPU mode with some restrictions, if we can afford to maintain it without compromising the quality of the entire thing.
Ooh, Thank you so much i understand now. Thank you for everything.
Everyting's abaout details.
Reply