Support for Quad and Six core processors & hyperthreading

Feedback on past, current, and future development.
User avatar
psi29a
Posts: 5362
Joined: 29 Sep 2011, 10:13
Location: Belgium
Gitlab profile: https://gitlab.com/psi29a/
Contact:

Re: Support for Quad and Six core processors & hyperthreadin

Post by psi29a »

The more you try to optimize in that way, the more you are taking control away from the OS which isn't a very good direction to go in unless you plan on taking over the consequences as well.
User avatar
Jyby
Posts: 408
Joined: 10 Dec 2013, 04:16

Re: Support for Quad and Six core processors & hyperthreadin

Post by Jyby »

We might be able to reduce the resource load if we can refactor flyweight pattern in.

http://en.wikipedia.org/wiki/Flyweight_pattern
User avatar
Tes96
Posts: 232
Joined: 29 Feb 2012, 03:45
Location: Off-grid

Re: Support for Quad and Six core processors & hyperthreadin

Post by Tes96 »

My main concern for Morrowind is that with distant land and large landmass mods, a single processor has to render thousands, possibly millions, of objects all at once, which puts a lot of stress on a single processor, even powerful ones. I was hoping there would be a way to disperse the workload amongst other cores or with RAM... hardware that isn't being used. It's disappointing when you have a six-core processor and 16GBs of RAM but the game you play only uses up to 100% of one core.

How many cores does OpenMW use? Is it single-threaded like Gamebryo?
Counterpillow said in this post that "multi-threading drawcalls can't really be done and workarounds/hacks are usually not worth it since most drivers work in a very single-threaded manner.."
Is this implying that Ogre3D would have to be picked apart and redone to be more "current" and up-to-date to utilize modern technology?
User avatar
WeirdSexy
Posts: 611
Joined: 15 Sep 2011, 18:50
Location: USA

Re: Support for Quad and Six core processors & hyperthreadin

Post by WeirdSexy »

tes96, I am no expert in rendering, so I won't answer your question in a technical manner.

Do not assume that all pieces of software can be written as to scale to an arbitrary number of processing cores.
Some tasks are non-partitionable.
Sometimes the details involved with trying to put a particular part of a piece of software in multiple threads and synchronize them makes it worthless and could even hurt performance.

I think much of the time when you get down to a more a 'single' (very loose use of the word here) task like 'rendering', or especially 'rendering the land', it becomes impossible or worthless (even harmful) to try breaking it into multiple threads. However you might be able to do something like run rendering in one thread, AI in another, Sound in another, etc.

At this point, I believe OpenMW runs audio in a separate thread. According to the issue tracker, terrain loading is threaded in the next release.
Is this implying that Ogre3D would have to be picked apart and redone to be more "current" and up-to-date to utilize modern technology?
Again, don't assume that because a given piece of software doesn't use 100% of all available resources that it isn't current, modern, and up-to-date. OGRE3D is multi-threaded as far as I know, but I really have no idea how modern it is.
Chris
Posts: 1626
Joined: 04 Sep 2011, 08:33

Re: Support for Quad and Six core processors & hyperthreadin

Post by Chris »

Tes96 wrote:My main concern for Morrowind is that with distant land and large landmass mods, a single processor has to render thousands, possibly millions, of objects all at once, which puts a lot of stress on a single processor
The GPU handles rendering, not the CPU. The app just tells GL/D3D what to render, and GL/D3D drivers will queue up the work onto a worker thread to talk to the GPU with. This is also why "multi-threading draw calls" doesn't really do anything, because in the end it's all going to be queued up and handled by the driver as it sees fit.
How many cores does OpenMW use? Is it single-threaded like Gamebryo?
It's not a measure of 'being multi-threaded', it's a matter of being able to efficiently schedule hefty tasks, like physics and AI, whether it's on one core or ten.
Counterpillow said in this post that "multi-threading drawcalls can't really be done and workarounds/hacks are usually not worth it since most drivers work in a very single-threaded manner.."
Is this implying that Ogre3D would have to be picked apart and redone to be more "current" and up-to-date to utilize modern technology?
Yes, but it's not about threading. It's about reducing driver overhead, reducing the amount of synchronization that causes large stalls. For that, Ogre needs to be fixed to work smarter (order objects to draw based on similar material properties, in turn to avoiding changing state unnecessarily while sending render commands, and avoid reading back state from the driver) and to take advantage of newer driver and hardware capabilities when they're available.
User avatar
Tes96
Posts: 232
Joined: 29 Feb 2012, 03:45
Location: Off-grid

Re: Support for Quad and Six core processors & hyperthreadin

Post by Tes96 »

Chris wrote:
Tes96 wrote:My main concern for Morrowind is that with distant land and large landmass mods, a single processor has to render thousands, possibly millions, of objects all at once, which puts a lot of stress on a single processor
The GPU handles rendering, not the CPU. The app just tells GL/D3D what to render, and GL/D3D drivers will queue up the work onto a worker thread to talk to the GPU with. This is also why "multi-threading draw calls" doesn't really do anything, because in the end it's all going to be queued up and handled by the driver as it sees fit.
I was always informed that Morrowind is CPU intensive while Oblivion is GPU intensive. I haven't seen any testing using top-notch graphics cards like the GeForce GTX 880. I did, however, talk to a person with a decent rig and average graphics who reported that when he levitated straight up to where he could see all the landmass of Tamriel-Rebuilt, Vvardenfell and Solstheim in the same field-of-view, his frame rate was 0.5, or 1 frame every 2 seconds.
Now, if he had had triple SLI with latest hardware, his frame rate would have been much higher? Were you talking about Ogre3D & OpenMW or the original Gamebryo engine?
Chris wrote:
Counterpillow said in this post that "multi-threading drawcalls can't really be done and workarounds/hacks are usually not worth it since most drivers work in a very single-threaded manner.."
Is this implying that Ogre3D would have to be picked apart and redone to be more "current" and up-to-date to utilize modern technology?
Yes, but it's not about threading. It's about reducing driver overhead, reducing the amount of synchronization that causes large stalls. For that, Ogre needs to be fixed to work smarter (order objects to draw based on similar material properties, in turn to avoiding changing state unnecessarily while sending render commands, and avoid reading back state from the driver) and to take advantage of newer driver and hardware capabilities when they're available.
Is Ogre3D consistently being updated, whether they're small or large updates?
Chris
Posts: 1626
Joined: 04 Sep 2011, 08:33

Re: Support for Quad and Six core processors & hyperthreadin

Post by Chris »

Tes96 wrote:I was always informed that Morrowind is CPU intensive while Oblivion is GPU intensive.
Because Morrowind's engine isn't that good, and because of its age it doesn't take advantage of hardware capabilities or design principles that have become standard over the last decade. It doesn't utilize what newer CPUs and GPUs can do, so it has to do extra work on the CPU without even the benefit of SSE and the like for speeding up calculations. It's also not a very smart engine in general... every global or object script gets updated in full every frame, and physics and AI is updated for everything that moves every frame.

With Oblivion, they started to fix these problems. Scripts would be scheduled to run at specified intervals, so their execution could be better spaced out and not hit every frame. It requires use of SIMD CPU extensions, and makes heavy use of vertex and pixel shaders.
Is Ogre3D consistently being updated, whether they're small or large updates?
Yes, although not much work gets done on the GL renderer. It really needs someone intimately familiar with OpenGL to overhaul it.
User avatar
Tes96
Posts: 232
Joined: 29 Feb 2012, 03:45
Location: Off-grid

Re: Support for Quad and Six core processors & hyperthreadin

Post by Tes96 »

Chris wrote:
Tes96 wrote:I was always informed that Morrowind is CPU intensive while Oblivion is GPU intensive.
Because Morrowind's engine isn't that good, and because of its age it doesn't take advantage of hardware capabilities or design principles that have become standard over the last decade. It doesn't utilize what newer CPUs and GPUs can do, so it has to do extra work on the CPU without even the benefit of SSE and the like for speeding up calculations. It's also not a very smart engine in general... every global or object script gets updated in full every frame, and physics and AI is updated for everything that moves every frame.

With Oblivion, they started to fix these problems. Scripts would be scheduled to run at specified intervals, so their execution could be better spaced out and not hit every frame. It requires use of SIMD CPU extensions, and makes heavy use of vertex and pixel shaders.
Is Ogre3D consistently being updated, whether they're small or large updates?
Yes, although not much work gets done on the GL renderer. It really needs someone intimately familiar with OpenGL to overhaul it.
Will OpenMW really be that much different from Gamebryo? Seems like not even Ogre can take advantage of modern hardware. Is Ogre the top notch free open source engine available to people?
SquireNed
Posts: 403
Joined: 21 Dec 2013, 22:18

Re: Support for Quad and Six core processors & hyperthreadin

Post by SquireNed »

Tes96 wrote:
Chris wrote:
Tes96 wrote:I was always informed that Morrowind is CPU intensive while Oblivion is GPU intensive.
Because Morrowind's engine isn't that good, and because of its age it doesn't take advantage of hardware capabilities or design principles that have become standard over the last decade. It doesn't utilize what newer CPUs and GPUs can do, so it has to do extra work on the CPU without even the benefit of SSE and the like for speeding up calculations. It's also not a very smart engine in general... every global or object script gets updated in full every frame, and physics and AI is updated for everything that moves every frame.

With Oblivion, they started to fix these problems. Scripts would be scheduled to run at specified intervals, so their execution could be better spaced out and not hit every frame. It requires use of SIMD CPU extensions, and makes heavy use of vertex and pixel shaders.
Is Ogre3D consistently being updated, whether they're small or large updates?
Yes, although not much work gets done on the GL renderer. It really needs someone intimately familiar with OpenGL to overhaul it.
Will OpenMW really be that much different from Gamebryo? Seems like not even Ogre can take advantage of modern hardware. Is Ogre the top notch free open source engine available to people?
One thing to consider is that the graphics of Ogre are not necessarily the best reason for going with it. It's really common as far as 3d engines go, so you have the advantage of having a large potential developer pool.
User avatar
Tes96
Posts: 232
Joined: 29 Feb 2012, 03:45
Location: Off-grid

Re: Support for Quad and Six core processors & hyperthreadin

Post by Tes96 »

SquireNed wrote:
Tes96 wrote:
Chris wrote:
Tes96 wrote:I was always informed that Morrowind is CPU intensive while Oblivion is GPU intensive.
Because Morrowind's engine isn't that good, and because of its age it doesn't take advantage of hardware capabilities or design principles that have become standard over the last decade. It doesn't utilize what newer CPUs and GPUs can do, so it has to do extra work on the CPU without even the benefit of SSE and the like for speeding up calculations. It's also not a very smart engine in general... every global or object script gets updated in full every frame, and physics and AI is updated for everything that moves every frame.

With Oblivion, they started to fix these problems. Scripts would be scheduled to run at specified intervals, so their execution could be better spaced out and not hit every frame. It requires use of SIMD CPU extensions, and makes heavy use of vertex and pixel shaders.
Is Ogre3D consistently being updated, whether they're small or large updates?
Yes, although not much work gets done on the GL renderer. It really needs someone intimately familiar with OpenGL to overhaul it.
Will OpenMW really be that much different from Gamebryo? Seems like not even Ogre can take advantage of modern hardware. Is Ogre the top notch free open source engine available to people?
One thing to consider is that the graphics of Ogre are not necessarily the best reason for going with it. It's really common as far as 3d engines go, so you have the advantage of having a large potential developer pool.
So Ogre has a broad range of developers since it is common. But how limiting is it as far as graphics goes?
The videos I've watched are pretty good but I'm not sure if they're showing the full potential of Ogre. Videos like this and Walker 3DII look great. Is this type of graphics what we could expect to see with Morrowind in the next several years? Although by then, Ogre3D will have improved, too.
Post Reply