Follow Slashdot blog updates by subscribing to our blog RSS feed

 



Forgot your password?
typodupeerror
Intel

Intel Releases Threading Library Under GPL 2 158

Posted by CmdrTaco
from the of-interest-to-some-of-you dept.
littlefoo writes "Intel Software Dispatch have announced the availability of the Threading Building Blocks (TBB) template library under the GPL v2 with the run-time exception — so this previously commercial only package is now open for all the use, whether for open-source projects or commercial offerings (although they are explicitly encouraging open source use). The interface is more task-based then thread-based, but with a somewhat different view of things than, e.g. OpenMP. From the Intel release: 'Intel® Threading Building Blocks (TBB) offers a rich and complete approach to expressing parallelism in a C++ program. It is a library that helps you leverage multi-core processor performance without having to be a threading expert. Threading Building Blocks is not just a threads-replacement library. It represents a higher-level, task-based parallelism that abstracts platform details and threading mechanism for performance and scalability.'"
This discussion has been archived. No new comments can be posted.

Intel Releases Threading Library Under GPL 2

Comments Filter:
  • Great news! (Score:2, Interesting)

    by jgarra23 (1109651) on Wednesday July 25, 2007 @09:23AM (#19982969)
    Hopefully their compiler will follow suit. This sounds like a great move for Intel especially since the lion's share of income is from processors & semi-conductors this will encourage more people to use their tools.
  • by diehard2 (1132885) on Wednesday July 25, 2007 @10:15AM (#19983661)
    I've got a program that does benefit enormously from using multiple cores. I looked into the TBB first, and I have to say my head hurt for an hour after looking at their examples. It would have required a serious rewrite of my core numerical routines, and not in a pretty way. I've found the OpenMP pragmas to be the easiest way to maintain the structure of existing code while leveraging the multiple cores. Now, there are very few examples of OpenMP that do anything useful on the web, but after a couple of hours of reading, I was able to very easily integrate it with maybe an extra couple of lines of code and some very minor reworking of the existing code.
  • by ohell (821700) on Wednesday July 25, 2007 @10:45AM (#19984131)

    I read on their FAQ that TBB requires 512MB to run, though they recommend 1GB. This appears to be very high, especially when compared to Boost.Threads etc. I can't think of a reason why they need to allocate this much - and it would probably be a problem for consumer applications.

    Also from the FAQ, the so-called concurrent containers still need to be locked before access. So no change from normal STL containers there.

    But I will download it just for the memory allocator they supply, since it can be plugged into STL, and claims to hand out cache-aligned memory. It can apparently be built independently of the rest of TBB.

  • Re:GPL 2 only (Score:5, Interesting)

    by networkBoy (774728) on Wednesday July 25, 2007 @10:54AM (#19984289) Homepage Journal
    Which is perfectly fine. I have a friend at Intel and based on what I've heard of the corporate culture, open ended licenses are a no-go. That doesn't mean they won't later release under GPL v3, just that they want their lawyers to have a chance to review any license they release under and don't want to be beholden to the unknown. Frankly I think that's a good thing. In theory GPLv4 could say: this can be used in closed source proprietary DRM schemes. and if they had the "or later" clause they would have to allow it.
    -nB
  • Re:GPL 2 (Score:3, Interesting)

    by sumdumass (711423) on Wednesday July 25, 2007 @11:12AM (#19984555) Journal

    Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version"


    Actually it says (and "any later version").The part of the program that says this is licensed under the GPL would have to say the "OR" version. The portion you and many others who don't know the GPL well enough to discern the intent pick the part outside the GPL entitled how to apply this for reference. It isn't part of the GPL and it isn't anything other then how to apply the GPL to a new program. And to that point, it is only a guidline on applying it because you can specifically remove parts of the license, more specifically (and later version). The GPL is what you need to look at and be concerned with.

    I'm starting to see this from a lot of novice GPL users and I'm wondering if it isn't the intent of the "how to apply section". It would appear they the wording difference is there to intentionally mislead people so little snots like this AC can jump up and grab your code on a technicality. I'm saddened to see that this is what the GPLv3 is becoming about, getting things on a technicality. Anyway, I would hope this is representative of a few mental midgets and not the entirety of the FOSS community.

    Anyways, you couldn't pull this into GPLv3 because you would have to have the right to give everyone else the ability to use any patents that the GPLv3 mandates. You will find that pulling stuff over without this ability will lend yourself into severe legal distress if the owners decide to go back on it. Sure, your defense might be the latewr version clause, but they will says the same spirit and then note giving away their patent rights isn't in the spirit of the GPLv2. My suggestion is to tread lightly around issues like this and make sure you are in the clear on them. Else wise you may be poisoning anyone who uses the code after your changing of the license as well as finding yourself in a large bit of legal troubles. Buy placing the code under the GPLv3, according to the patent sections, you are the one authorizing the use of the patents, not the person who placed it under the GPLv2.
  • Re:This and XEN (Score:3, Interesting)

    by TheRaven64 (641858) on Wednesday July 25, 2007 @12:40PM (#19985837) Journal
    If you have a sensible architecture, then every instruction that modifies some bit of global scope will raise an exception if you try to execute it outside of privileged mode. This is not the case on x86, where there are 17 instructions that silently fail if run outside of ring 0 (the highest privilege level on x86). When you are writing a virtual machine monitor, or hypervisor, you need to emulate all of the privileged instructions so that a guest operating system can run without interfering with other guests.

    Due to this limitation, virtual machines on x86 used one of two work-arounds:

    • Binary re-writing, where the instruction stream is scanned for privileged instructions, and these are replaced by jumps to the emulated versions (and a lot of other tricks to get around side-effects of doing this). This is what VMWare does.
    • Paravirtualisation, where you replace all of the occurrences of privileged instructions with something like a system call (a hypercall), which performs the operation on behalf of the guest. This is what Xen does.
    Paravirtualisation is fast, and less error-prone than binary rewriting (which has a huge number of irritating corner cases you have to cover), but it has the disadvantage that it requires fairly considerable modification to the running guest, on a source-code level. You could, in theory, write a scanner that would read a binary and replace all privileged operations with jumps to a library that performed hypercalls, but no one has done this. This means, you can't run an operating system on something like Xen without access to the source code.

    This changed somewhat recently. Both Intel and AMD added extra modes to their latest chips which can be used to trap all privileged instructions, allowing pure trap-and-emulated virtualisation. By using this, Xen can run unmodified guests, although they are slower than paravirtualised ones. Since this feature is highly dependent on hardware support, it will only work on chips with the correct hardware assistance mode.

    None of this has anything to do with a threading library, however. I don't know quite where you got that idea from.

  • by Anonymous Coward on Wednesday July 25, 2007 @12:43PM (#19985865)
    C# has something called the CCR - Concurrency and Coordination Runtime.
    As the developers themselves are well aware of, gluing "true" concurrency onto procedural languages such as C/C++/C#/Java will always be "ugly".
    There is actually a microsoft labs-developed "fork" of C# called COmega which tries to integrate concurrent programming more tightly into the language.

    Just to point out:
    1) C# is actually further along in some ways to realizing true and easy-to-use concurrent programming (also ref C# 3.5).
    2) Modern C++ could hardly be considered clean or simple -- It's a huge and complicated language, ever changing and with arguably the most dense syntax this side of perl. Not that there's anything wrong with that, but C++ is fast approaching a lisp-like state of unapproachability imho.
  • PS3? (Score:4, Interesting)

    by LinuxGeek (6139) * <djand,nc&gmail,com> on Wednesday July 25, 2007 @12:58PM (#19986077)
    I checked the site and forum, but no search results on PS3. Having just bought a shiny new 60gig PS3, this release makes me wonder just how easy it could be to take fairly good advantage of all the cores.

    Hmmm, it may be one of my first projects; six cores running @ 3.2GHz and an easy method of putting them to use. It would be interesting to parallelize pi calculation and see how long it would take to get one million digits.
  • Re:GPL 2 (Score:3, Interesting)

    by Aladrin (926209) on Wednesday July 25, 2007 @04:51PM (#19988975)
    While it might be possible to use the code to create a more efficient multi-processor aware compiler, that wouldn't mean much to the compiled programs.

    You are correct that Intel's code would be used by the final program. (I hesitate to say 'become part of' because it's still a seperate library, just used by the program. When you wear glasses, they don't become part of you, no matter how necessary they are to your continued existance.)

When you don't know what you are doing, do it neatly.

Working...