12 ms·
Intel C/C++ compilers complete adoption of LLVM
- deleted 5y ago[deleted]
- occamrazor 5y agoFrom the article it is not clear how the Intel compiler differs from base clang/llvm, except for vague marketing bs (“expected” fp performance?!?)
- qayxc 5y agoProprietary optimisation secret sauce that's not up-streamed most likely. Basically they cannot go into detail because that would be publishing trade secrets or help the competition. I also suspect that they use the compiler for testing pre-production silicon and the like so those changes won't be publicly discussed either.
- killingtime74 5y agoAnyone actually use Intel compilers
- jraph 5y agoThey are used in High Performance Computing as far as I know. Not systematically though.
- shellac 5y agoYes, this is the only place I see alternative compilers used much. We have Intel and Nvidia compilers available to our users.
- hr0m 5y agoWe use Intel Compiler mainly on supercomputers with Intel CPUs. IT can produce faster code. However it is not great to work with it. It lacks features of the newer standard and it is really slow. Usually we develop with clang or GCC and then we go on the cluster.
- unionpivo 5y agoI am sure that plenty of existing HPC cluster will remain intel, the interesting question is how much of the new HPC computers will be AMD. or is there any HPC specific reason why Intel would still be preferred?
- qayxc 5y agoExisting install base most likely. It's not as if HPC clusters get replaced every other year. Even upgrades usually stay with the same platform and don't switch from Intel to AMD or ARM-based systems.
- bocklund 5y agoSeveral new HPCs are already using AMD [1] and that trend will probably continue if AMD continues to put out competitive products. [1] See the Top 500 list that, by my count, has 26 of the top 100 HPC systems using AMD EPYC CPUs as of their June 2021 listing https://www.top500.org/lists/top500/list/2021/06/ https://www.top500.org/lists/top500/list/2021/06/
- physicsguy 5y agoYeah, I used in my last job (commercial CFD code), and it was widely used by others in our sector. It's nice if you need to support Windows/Linux as well as brings for e.g. MPI, etc. and compiling scietnfic libs like FFTW on Windows is a PITA, so using MKL which comes bundled with it is very easy.
- slavik81 5y agoWhat makes compiling FFTW on Windows so troublesome? That's currently on my to-do list.
- physicsguy 5y agoWell, most Windows applications you have to actually deploy are compiled with MSVC, and historically most OSS libs don’t use cross platform build scripts, etc. FFTW these days I think has a CMakeLists.txt file, and Visual Studio well supports CMake now but it didn’t used to.
- W0lf 5y agoPretty much in computer vision / image processing related companies and software products. The performance related advantage on Intel x86 architectures in particular is not to be neglected.
- gpderetta 5y agoMy understanding (but I'm not an ICC user) is the majority of the performance improvement are from the vectorized math libraries (that technically you can use from GCC as well).
- physicsguy 5y agoIt uses a default lower accuracy floating point model than GCC, so initially people think it's faster til they realise their results are slightly different and have to mess around with the `fp-model` flag
- gpderetta 5y agoRight, of course, IIRC it does the equivalent of -ffast-math by default.
- cwizou 5y agoA few years back, Intel was striking marketing deals with large game developers that included them giving away free copies of their compiler and support. It's unclear how prevalent that was, though there were a few titles with an Intel splash logo that were part of this. This is often assumed to be the cause of the difference of performances between AMD and Intel CPUs in games btw, and while that can definitely come into it, it's not always correct. Sometimes the engines just don't know about the CPUs and treat them like the previous generation (like at Ryzen launch where some games ignored SMT on those), sometimes the devs only tested on one arch, or sometimes it's some extra library that makes incorrect assumptions. Interesting read on the topic with Cyberpunk : https://cookieplmonster.github.io/2020/12/13/cyberpunk-2077-and-amd-cpus/ https://cookieplmonster.github.io/2020/12/13/cyberpunk-2077-...
- bluGill 5y agoIntel tried to convince us, and I think I still have a todo down on the list to try their compilers out. They gave up their attempts quickly when they discovered we have very little code that would benefit from vectorization.
- userbinator 5y agoYes. Very good optimisation (to be expected), but without the insane exploitation of UB that the GCC/Clang crowd seem to think is necessary for optimisation. Instruction scheduling and selection probably makes the biggest difference.
- mbrodersen 5y agoA lot of game companies use the Intel compiler (anecdotally).
- BeetleB 5y agoLots of people in the HPC and scientific computing sphere. Some of their math capabilities is either much faster or more accurate (or both) than other compilers.
- xvilka 5y agoAbsolutely sensible move. Time for Microsoft to do the same with MSVC.
- xamolxix 5y agoI disagree. Competition is good. Don't want to end up with every C/C++ compiler being a clang skin in the same way as (almost) every browser is a chrome skin. And for what it's worth cl compiles faster for me than even clang-cl. I like having both available though.
- ch_123 5y agoMany of the proprietary C++ compilers (Intel included) are just repackaging of the EDG front end. The monoculture has existed for a long time in the C++ world due to the complexity of implementing the language to spec. Honestly, I think it will be great to have one less set of compiler-specific oddities to worry about.
- MauranKilom 5y agoMSVC does not use EDG for the frontend as far as I'm aware. IntelliSense does, though.
- bumblebritches5 5y agoNot anymore, they changed that in the last few years
- account42 5y agoFunnily, the only reason I ever used ICC was as a linter since it was the most easily available EDG-based commpiler for me and different frontends help find different bugs.
- volta83 5y ago> Don't want to end up with every C/C++ compiler being a clang skin in the same way as (almost) every browser is a chrome skin. Why not ? There is one open C++ spec, that's really hard to implement, so we have a dozen C++ compilers that are impossible to support properly because they each have their own set of different ten thousand bugs. The value of supporting all of this is really small in practice, and the cost for everybody involved is huge. Having a single, e.g., C++ parser with a single set of bugs is a much better value proposition for C++ programmers.
- TobySKT 5y agoNeed to develop a custom CRM solution? We provide end-to-end customer relationship management (CRM) software development services. In our ten years on the market, we’ve helped clients convert more leads, engage with customers, and grow their revenue through custom CRM solutions. Have any questions about our CRM development services, ask our team for more info. https://steelkiwi.com/expertise/crm-development-company/ https://steelkiwi.com/expertise/crm-development-company/
- OskarS 5y agoI'm not sure I love this. I mean, LLVM is awesome and everthing, but software monocultures are pretty bad. It's not like the situation is dire yet (given that there are also GCC and MSVC), but you can imagine a situation in a couple of years when Microsoft goes "yeah, we're also gonna go with LLVM now" and also GCC starting to fade away. It's a bit concerning. Also: if icc is going to go with LLVM as a backend, then what is the point of using icc at all? Why not just use clang?
- andi999 5y agoYes, I think though gcc will go first.
- nly 5y agoGCC will never completely die. MS though have been moving in the Clang/LLVM direction for years, so I would have zero surprise if VC++ was completely removed tomorrow. My feeling is, as soon as they can be sure they have achieved 100% binary compatibility, MS will jump. The optimizers in VC++ are light years behind, and companies like Apple are embarrassing them on the compatibility front with things like Rosetta 2 (which is a much harder problem to solve)
- andi999 5y agoMy understanding was the llvm was made because the code basis of gcc is too complicated. Since seems to be a killer move.
- vlovich123 5y agoThat was a long time ago and the actual primary reason was apparently Stallman missed an email [1], although I think the intentional technical hurdles to plugins was another of many reasons. When GNU moved all their software to GPLv3 and the business community decided they didn’t like that license and Apple brought LLVM as a serious contender. GCC hasn’t remained stagnant though. [1] https://lwn.net/Articles/632062/ https://lwn.net/Articles/632062/
- jabl 5y agoOne more proprietary compiler suite [1] bites the dust. Hopefully this will mean improvements will flow to the open source upstream, rather than just being a cost-cutting measure for the vendors with all improvements kept proprietary. [1] A year ago IBM announced they are switching their "XL" compilers over to LLVM: https://developer.ibm.com/components/ibm-power/blogs/c-and-fortran-adopt-llvm-open-source/ https://developer.ibm.com/components/ibm-power/blogs/c-and-f... . (I haven't followed up what has happened since that announcement.)
- edwintorok 5y agohttps://ispc.github.io/ https://ispc.github.io/ it is interesting that ispc is also LLVM based.
- flyinghamster 5y agoAMD's own optimizing compiler is also LLVM-based. So, we now can wind up with the situation of both compilers adding spiffy optimizations and then never upstreaming them. It's less of a problem if the two of them don't decide to add their own proprietary "extensions" to the language. That may be something to look out for going forward.
- ekiwi 5y ago> if the two of them don't decide to add their own proprietary "extensions" to the language. icc has always had its own dialect of C++, which in practice means that there is "C++" code that only compiles on icc but is rejected by clang++ and g++. With Intel switching to the clang frontend, I would hope that their interpretation of C++ will become more, not less, standard conform.
- garenp 5y agoICC like many commercial compilers used the EDG front-end, not their own.
- jasonhansel 5y agoThis is exactly why I've been concerned about LLVM's use of a non-copyleft license: unlike with GCC, vendors can create their own proprietary extensions and optimizations without contributing them back to the community. (In the past, people have dismissed such concerns, saying that it would be impractical for anyone to actually do such a thing. But this project by Intel shows that it isn't just possible--in fact, it's almost inevitable.)
- josefx 5y ago> In the past, people have dismissed such concerns The problem is GCC made these concerns completely irrelevant. You wanted refactoring support for C or C++? Either build it on clang or get screamed at by RMS for leaking GCC internals when text base search and replace was enough for him in the early 80s. The simple fact is that there is no GNU based alternative to clang/llvm.
- arthur2e5 5y agoThe “good” news on this front is that RMS has been allegedly removed from GCC’s steering committee as a side-effect of the flames of April. Emphasis on “alleged”, since some heavyweights say he was never there to begin with. https://lwn.net/Articles/853230 https://lwn.net/Articles/853230 Somewhere down the thread there are questions about AST, I think.
- atty 5y agoI think it is relevant to point out that Intel’s compiler team would almost certainly never have chosen LLVM in the first place, if it forced them to release whatever secret sauce is giving them the performance increases we see in those performance plots. So it’s not so much a “look at how much LLVM is missing out on by not using copyleft”, it’s more of a “LLVM has gotten some benefit from Intel adopting their tech and putting some of their work back into the open source project”. Sure, I’d love for Intel to upstream every optimization they make, but I don’t see that as necessary or even good business sense for either Intel or LLVM.
- ip26 5y agoWhy is this worse than totally proprietary & closed source icc?
- dhosek 5y agoIt's still a little strange to me the whole free compiler thing. I used to pay hundreds of dollars each for, first Turbo C/C++, then Borland C/C++ and Zortech C/C++. I think IBM's C/C++ for OS/2 was the first time the compiler came free with an OS that I had on my computer and I was literally shocked that it included—for free—the GUI for building GUI applications. I guess being old is what makes me perfectly fine with paying for tools like IntelliJ which are a relative bargain.
- trasz 5y agoEarly Unix systems came with bundled compiler toolchain. I think it was the SunOS which unbundled it first.
- pjmlp 5y agoYes, and made plenty of people rush to GCC's implementation effort, which was largely ignored until that moment.
- ok123456 5y agoIt's wasn't much of a prize. At school, the Sun C++ compiler, required for the OOP class, was responsible for a lot of people switching out of CS.
- dhosek 5y agoThis is part of why I specified “on my computer.” I used to use university/work systems and whether it was paid for separately or as part of the OS, I generally had a variety of compilers available to me. My personal favorite oddity was that IBM had two different Pascal compilers for VM/CMS. One was called Pascal/VS and the other VS/Pascal. One was slightly more capable than the other, but I don't remember which it was or what, precisely the difference was. It never came up in compiling TeX and its related software. I do remember the long process of installing PL/I on the UIC mainframe back in the 80s though.
- dhosek 5y agoI'd add that in the early 90s, Linux was very much a fringe OS. I had contemplated running FreeBSD (or was it BSDFree?), but as I only had one computer and getting a second seemed an unimaginable expense, I never did so (I don't think virtual machines on x86 were a viable thing yet either).
- CalChris 5y agoApple has been the longtime LLVM stalwart, starting from when they first brought out Chris Lattner from the University of Illinois. There are whole subsystems which they've driven such as GlobalISel. However with the M1, Apple has moved wholesale over to ARMv8. Consequently, their efforts are with the AArch64 backend (which they also wrote) and not with X86. Yes, this announcement has to do with the Intel toolchain above the IR layer but I think it signals that they'll be contributing more patches to the X86 backend as well. The X86 backend is upstream, and LLVM owns it. Indeed its named Code Owner works for SiFive. Intel won't be grabbing ownership of it. But I think they'll be contributing more to it. This is a good thing for LLVM.
- pjmlp 5y agoApple also kind of removed itself from clang contributions as their focus is on Objective-C and Swift, with most of their C++ use cases covered by ISO C++14. Which is one of the reasons why ISO C++20 support in clang is lagging, alongside Google also kind of reducing their involvement. Concepts support was mostly done by one dev.