Multithreading Library Preference

Started by
8 comments, last by Vladimir Polin 7 years, 8 months ago

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

Advertisement

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.

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)

Another reason folks end up rolling their own is that the available libraries are not always available on all the desired target platforms. Additionally in house threading is specialized for games which can get very specific gains. Having written a number of threading solutions for shipped titles, these were the reasons we didn't start with some existing solution.

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).

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


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).

"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

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.

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

This topic is closed to new replies.

Advertisement