Multithreading question

Multithreading question

Postby Teddipetzi » Fri Mar 06, 2020 1:21 am

In case it hasn't been noticed, after failing to impress on Doomworld, IceColdDuke continued his ranting on duke4.net here: https://forums.duke4.net/topic/10988-gr ... e__st__180

What that thread is sorely missing is some technical information about what is planned for multithreading features and how they differ from GZDoom. It is plainly obvious even to a layman like me that he seems to be completely missing the point and operates under false assumptions - it's time to correct him with facts.

So, can someone provide me with the facts?
Teddipetzi
 
Joined: 17 Aug 2019
Operating System: Windows 10/8.1/8/201x 64-bit
Graphics Processor: nVidia with Vulkan support

Re: Multithreading question

Postby dpJudas » Fri Mar 06, 2020 2:20 am

It has been noticed, but there's no reason to engage in a debate with a guy which main objective seems to be telling everyone how cool he is.

All you need to know is that he's completely wrong on the subject of input delay. GZDoom and Raze has zero frames of input lag, the multithreading work happens within a frame. His "solutions" are also completely unrealistic as he's basically saying he would rewrite the entire engine to make it work in a completely different fashion. Funny how it is with these armchair developers how they suggest 100+ hour work solutions without a trace of indication they'd do it themselves.

Please just ignore the guy. At best he's just being ignorant with a huge ego. At worst he's intentionally trolling.
dpJudas
 
 
 
Joined: 28 May 2016

Re: Multithreading question

Postby Graf Zahl » Fri Mar 06, 2020 2:39 am

Surely we noticed what he's doing but TBH, I felt it was pointless discussing the issue, he's so far off the rails that virtually everybody realizes it immediately even without knowing the subject matter.

It is clear he has his very narrow vision of how features can be used - apparently his only idea of using multithreading is to have the main thread to collect all the data and put it aside, so that a second thread can process it in parallel to the next frame - and adding a third thread would inevitably require waiting ANOTHER frame to get the data to the hardware. Or he's just trolling, it's hard to say.

Yes, I agree, that'd be a truly awful way of doing things, but that's not what GZDoom does - it runs the workers in parallel to their own feeder threads and only goes on to the actual rendering stage when both the feeder and worker threads have all finished their tasks.

A code snippet, with the timing code removed for clarity and some comments added:

Code: Select allExpand view
   if (multithread)
   {
      jobQueue.ReleaseAll(); // reset the job queue
      auto future = renderPool.push([&](int id) { // start the worker thread
         WorkerThread();
      });
      RenderBSPNode(node); // traverse the BSP - this adds jobs to the queue as they appear

      jobQueue.AddJob(RenderJob::TerminateJob, nullptr, nullptr); // tell the worker thread that we are done and it may terminate once it reaches this job.
      future.wait(); // wait for the worker to actually quit.
   }
       // Go on to the next stage where the render lists are being converted to render buffers or OpenGL calls.


The second worker thread I was speculating about would fit right in there, running part of the work currently being done by the main thread after exiting this block in parallel to the BSP traversal, again explicitly synchronized at the end.
User avatar
Graf Zahl
Lead GZDoom+Raze Developer
Lead GZDoom+Raze Developer
 
Joined: 19 Jul 2003
Location: Germany

Re: Multithreading question

Postby Teddipetzi » Fri Mar 06, 2020 3:39 am

Thanks. Having things laid out clearly is definitely better than listening to these types who claim to know everything but never bother to educate themselves.
Teddipetzi
 
Joined: 17 Aug 2019
Operating System: Windows 10/8.1/8/201x 64-bit
Graphics Processor: nVidia with Vulkan support

Re: Multithreading question

Postby Redneckerz » Fri Mar 06, 2020 5:05 am

Teddipetzi wrote:In case it hasn't been noticed, after failing to impress on Doomworld, IceColdDuke continued his ranting on duke4.net here: https://forums.duke4.net/topic/10988-gr ... e__st__180

Ill preface this by stating that aside from the characterICD, the programmerICD is quite a gifted coder, especially when it comes to iteration. If there is an idea that he sets his mind to, more often than not a playable build (heh) comes in the matter of days or even hours.

However, my position regarding ICD is this, and its quite disappointing to see his tone so changed. After all, this is how it started, and ill just post the top sentence.

The change of tone from reassuring of his own work initially at DW to just flat out dismissal is offputting to say the least. Regardless of my personal opinion, i do not believe you should address people that way - Let alone continue commenting off-site at a place where Graf isn''t around.

Its obvious that Graf and Ice are two wholly different characters and have different approaches to programming - And that's not an issue. What is an issue is misplaced Programmer's Arrogance, which i have noted to Ice previously.

The thing is, Ice simply does not ''understand/read'' such criticism as such. Instead of attempting to understand why people are critical, it simply gets ignored.

I do not think Ice is an armchair dev, but i do think this reassured arrogance gets in the way. Aside that, if Raze is just a simple ''code refactor'' as was assumed, i'd love to see a better implementation from his end. Maybe integrate ZDoom, PrBoom and ChocoDoom as modules within EDuke32. Could be fun. :3:
User avatar
Redneckerz
To it's ports i may have seen
Spotlight Team
 
Joined: 25 Nov 2019
Discord: Redneckerz#8399
Operating System: Windows Vista/7/2008 64-bit
Graphics Processor: nVidia (Legacy GZDoom)

Re: Multithreading question

Postby dpJudas » Fri Mar 06, 2020 6:51 am

Redneckerz wrote:I do not think Ice is an armchair dev, but i do think this reassured arrogance gets in the way. Aside that, if Raze is just a simple ''code refactor'' as was assumed, i'd love to see a better implementation from his end. Maybe integrate ZDoom, PrBoom and ChocoDoom as modules within EDuke32. Could be fun. :3:

An armchair developer is a person on the internet that posts how other people should do their coding without committing to doing any of it. In the same way that an armchair quarterback sits at home and yells at the TV how he would have won the superbowl.

In both cases you can be a professional and STILL make armchair comments. It doesn't matter if he is a good developer or not (I really don't have an opinion on it). The point is that anyone can state how they would have done a better job. Given that he never finished any of his build engine work, he's yet to prove any of his ideas actually are realistic to implement for that engine. Posting an incomplete broken build is not enough.

Edit: Just to clarify - what he did with his own alteration of Build was quite cool. I'm in favor of all developers that like to toy with code and make it to do amazing things. What I'm against is when people then go post telling other people that they suck. And that's what he has been doing with Raze and that's why I called him what I did.
dpJudas
 
 
 
Joined: 28 May 2016

Re: Multithreading question

Postby Redneckerz » Fri Mar 06, 2020 8:46 am

dpJudas wrote:An armchair developer is a person on the internet that posts how other people should do their coding without committing to doing any of it. In the same way that an armchair quarterback sits at home and yells at the TV how he would have won the superbowl.

I mean well, for Raze he didn't do jack (so that's where the analogy is correct) but Ice has done several Duke4 related projects, often unusual and quite interesting, so he does know a thing or two about it.

Nevertheless i consider Ice a glorified Ideas Guy - I have yet to find a recent project that is actually finished. More often than not, when there is an initial implementation, he loses motivation and then just leaves it as is.

The result is a toolbox of great ideas that all have limited use. Like paper scissors. :lol:

dpJudas wrote:Edit: Just to clarify - what he did with his own alteration of Build was quite cool. I'm in favor of all developers that like to toy with code and make it to do amazing things. What I'm against is when people then go post telling other people that they suck. And that's what he has been doing with Raze and that's why I called him what I did.

Yeah, i get that. I don''t like that full front ''You are wrong and here's why'' dismissal, going as far as basically dismissing a future for Raze in its fullest, simply because Graf decided after a few post to kick the bucket and spend his time elsewhere.

But really, the only thing i legit find offensive is that he is doing this on another forum where Graf isn't on. As if you only reveal your true self when you are at a place that's more natural for you. Dunno, seems cowardly.

That's about all that should be said of it i feel - Ice is free to improve on Graf's work or do a fork, or reverse the concept but for EDuke32. At the end of the day, results matter - And fact is that Graf and compatriots delivered a proper alpha/beta build and is heavily willing to improve on it. I have yet to read of any Ice project that adhers to both of these variables.

Edit: I do not have a duke4 account.
User avatar
Redneckerz
To it's ports i may have seen
Spotlight Team
 
Joined: 25 Nov 2019
Discord: Redneckerz#8399
Operating System: Windows Vista/7/2008 64-bit
Graphics Processor: nVidia (Legacy GZDoom)

Re: Multithreading question

Postby Rachael » Fri Mar 06, 2020 8:51 am

dpJudas wrote:What I'm against is when people then go post telling other people that they suck.

If I had a penny every time this happened, I'd be able to buy a football stadium and still have cash leftover.
User avatar
Rachael
Webmaster
 
Joined: 13 Jan 2004
Discord: Rachael#3767
Twitch ID: madamerachelle
Github ID: madame-rachelle
Operating System: Windows 10/8.1/8/201x 64-bit
OS Test Version: No (Using Stable Public Version)
Graphics Processor: nVidia with Vulkan support


Return to General

Who is online

Users browsing this forum: Gez and 1 guest