• Advertisement
Sign in to follow this  

Multithreading Library Preference

This topic is 623 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hey Guys,

 

This thing come to my mind for a long time, when I interned in an AAA studio a year ago, I found they are using their inhouse multi-thread library for multithreading. Recently talking to another engine dev in another AAA studio, he also mentioned they use their inhouse library for multithreading. So I am wondering what make those AAA studio stay away from using existing multi-thread library like TBB, microsoft PPL and OpenMP(for simpler cases)? What's the pros and cons of using them? In my opinion, using a exist mature multithreading library can save them lots of develop and debug time, and especially if they want some advanced features like dependency graph. etc

 

Thanks

 

Share this post


Link to post
Share on other sites
Advertisement

Thanks Adam, so it's not the performance overhead keeps game studios away from using them? (Like STL the reason most studio doesn't use it is because stl's bad debug performance and overhead)

Share this post


Link to post
Share on other sites

Thanks Adam, so it's not the performance overhead keeps game studios away from using them? (Like STL the reason most studio doesn't use it is because stl's bad debug performance and overhead)

Yes performance is also a reason. When you depend on a platform-specific library, it's waiting for problems. e.g. while a platform's performance may be decent, turns out it can suck on a different one because the compiler vendor rushed their release to support the latest C++ feature set.

 

I'm talking about the ones provided by a standard library or compiler. This doesn't apply to TBB, but like Adam_42 said, TBB is not free and adds yet another dependency on what most AAA developers will consider trivial (threading is really hard, but wrapping sync primitives is easy, and the key is keeping things simple. TBB adds more complex functionality that may not be needed or could be specialized for a game).

Edited by Matias Goldberg

Share this post


Link to post
Share on other sites

Here's a few possibilities:

- The libraries weren't available when the game engine was created. For example PPL first appeared with Visual Studio 2010.

- The libraries may not support all the platforms that the game engine does.

- They may not support the features required for the game (OpenMP certainly falls short there).

- Cost. As far as I can tell, TBB isn't free for commercial use.

Hello all,

 

Re: cost: for TBB there are several options availalbe in addition to commercial license:

1. Community license (https://software.intel.com/sites/campaigns/nest/): Community Licensing is provided as a Named-User License per our standard end user licensing agreement, without Intel® Premier support, and with no fees, no royalties, and no restrictions on company or project sizes. 

2. Open source version (http://www.threadingbuildingblocks.org/): TBB celebrates 10th anniversary of the first release and switching open source license from GPL 2.0 to Apache 2.0 in coming release. Details are available here https://goparallel.sourceforge.net/intels-threading-building-blocks-turn-10-new-advances-follow/

 

Re "TBB adds more complex functionality": In addition to complex low-level tasking algorithms there are a bunch of high-level algorithms and parallel algorithms design patterns that are available in the TBB's developers' guide online.

 

If you have any TBB related questions feel free to ask

--Vladimir Polin, Intel TBB developer

Share this post


Link to post
Share on other sites
1. Community license (https://software.intel.com/sites/campaigns/nest/): Community Licensing is provided as a Named-User License per our standard end user licensing agreement, without Intel® Premier support, and with no fees, no royalties, and no restrictions on company or project sizes.

So that does that mean? And where can I download a version with that license(i'm able to find only the GPL version).

Edited by imoogiBG

Share this post


Link to post
Share on other sites

"without Intel® Premier support" means that a support is available via forums only. Hopefully the rest text is self-explanatory, I am not a lawyer and can't comment it.

 

There are "Community>" buttons on that page. Once you registered on that site you'll get serial number and download instructions. The serial number is the same for all 4 performance libraries  (TBB, IPP, MKL and DAAL). 

 

--Vladimir

Share this post


Link to post
Share on other sites
The community licence details are locked behind a sign-in page, and the open source version is GPLv2. That makes it unattractive to a typical pro studio, who (in my experience) will only bother signing up for a middleware licence if it gives them a massive boost over what they can roll in-house. Threading is not typically such an area.

Share this post


Link to post
Share on other sites

and the open source version is GPLv2. 

Hello as I wrote before the move to Apache license has been announced and is going to be in coming release. Just try GPL version to find out whether it works for you and stay tuned:)

 

--Vladimir

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement