Originally posted by phoronix
View Post
Announcement
Collapse
No announcement yet.
LibreOffice On Windows Will Now Hard Require Clang For Performance Reasons
Collapse
X
-
Originally posted by bluescarni View PostThis has nothing to do with assembler syntax or autovectorization. Skia uses clang-specific language extensions to implement certain CPU codepaths, and the end result is that with clang you get the benefits of AVX, with GCC and MSVC you are stuck with SSE2.
I have downloaded upstream Skia sources and realized that few weeks ago the MSVC and GCC path was dropped completely and Skia now defaults to scalar implementation on those compilers.
Originally posted by bluescarni View PostSo this is basically Google's version of embrace, extend, extinguish.
My suspicion is that developers, ever facing time pressures, optimized for the compiler of primary interest. As noted in the blog, the clang-specific stuff isn't trivial to reconcile with the constructs supported by GCC, and that would still probably leave MSVC out in the cold. They might've even tried to write it in a portable way, but abandoned that approach upon encountering some problems.
It'd be fair to say that Google harbors a deleterious indifference towards non-Clang compilers. In this regard, I doubt they're any worse than Apple or MS.
- Likes 1
Comment
-
Originally posted by r08z View PostGoogle now trying to destroy competition on the compiler level.
Comment
-
Originally posted by coder View PostI think you need more evidence to support such accusations.
My suspicion is that developers, ever facing time pressures, optimized for the compiler of primary interest. As noted in the blog, the clang-specific stuff isn't trivial to reconcile with the constructs supported by GCC, and that would still probably leave MSVC out in the cold. They might've even tried to write it in a portable way, but abandoned that approach upon encountering some problems.
C++ wrappers for SIMD intrinsics and parallelized, optimized mathematical functions (SSE, AVX, AVX512, NEON, SVE)) - xtensor-stack/xsimd
Another good option is std::simd, which is on its way to be standardized in C++
For basic functionality, these kinds of wrappers are not difficult to write on one's own, if there's an issue relying on third-party code. These wrappers abstract away most of the unpleasantness of dealing with intrinsics and they support a variety of ISAs (including SSE, AVX, AVX2, AVX-512, Neon, Altivec, etc.) with a uniform syntax. My view and my experience is that there's no technical reason to choose a compiler-specific SIMD vector extension over an intrinsics wrapper based on standard C++.
Originally posted by coder View PostIt'd be fair to say that Google harbors a deleterious indifference towards non-Clang compilers. In this regard, I doubt they're any worse than Apple or MS.
At the height of its influence, MS was infamous for pushing a bastardized version of C++ through their highly nonstandard Visual C++ compiler, which made it extremely difficult to write code portable to other platforms. After they finally started losing market share and mind share among developers, it took them years to steer that boat around.
So now it seems like we risk ending up in a similar situation, only with Google/Apple in place of Microsoft. That seems hardly an improvement.
- Likes 3
Comment
-
-
Originally posted by bluescarni View PostBut that's precisely the danger of the compiler monoculture, isn't it?
Comment
-
Originally posted by brad0 View PostGCC has been the monoculture for so long. Now there is competition and it has allowed end users and developers to do things they were not able to with GCC both from a licensing perspective and a modularity / architectural perspective.
GCC has only been doing this for 30 years now. Clang caught up with GCC extensions to be able to build the Linux kernel. GCC can catch up here if they want to.
There's nothing special that Clang has "enabled developers to do" with respect to enabling SIMD acceleration in Skia, and if you ever spent a bit of time writing SIMD code you would know that. GCC has its own version of the vector extensions (which I would not advise anyone to use, because you can achieve portable SIMD acceleration without ever messing around with compiler-specific extensions, from GCC, Clang or whoever).
The discussion was about the dangers of a compiler monoculture, especially if backed by powerful corporate interests with opaque motivations.
For instance, this specific case could lead to a situation in which, on Linux distributions, binary packages of Skia and, by extension, its dependees would offer much lower performance than possible because they were compiled with GCC. Or perhaps you are using something like conda (or some other multiplatform package manager), and you get subpar performance on Windows because the standard C++ compiler used by package managers there is MSVC.
Do you think any of this is healthy or desirable for the open-source ecosystem?
- Likes 1
Comment
-
Originally posted by coder View PostNo, but it wasn't sufficiently qualified.
Of course layers can hurt, but it really depends on how they're designed and used.
<Bla bla bla, irrelevant drivel>
Comment
-
Originally posted by JustinTurdeau View Postlike something you'd find on r/iamverysmart.
I'll admit that I've never visited r/iamverysmart (is that a reddit thing?), but it sounds rather meta.
There are better things to do with big brains than having pissing matches about them. People who are too dumb to realize just how dumb or ignorant they are, aren't worth your time.
Comment
-
Originally posted by coder View PostCompetition? It's not like Google makes any money off of Clang. I'm sure having GCC out of the picture would make their lives simpler, but that's different than trying to destroy business-level competitors.
- Likes 2
Comment
Comment