Intel’s contributions in Microsoft Edge: SIMD and other performance enhancements
blogs.windows.com
blogs.windows.com
Any of these interesting achievements are made somewhat ho-hum by the fact that there's no way to see what happened.
http://venturebeat.com/2015/05/01/chrome-passes-25-market-sh...
9 out of 10 desktop have run Windows for 2 decades.
Only according to Net Applications.
http://en.wikipedia.org/wiki/Usage_share_of_web_browsers#Sum...
Chrome is the #1 everywhere else.
StatCounter's stats are very similar to Wikimedia's though. Net Applications is the outlier.
I've only seen IE in the #1 position in the stats of corporate extranet applications.
For all the regular websites it's generally Chrome and IE is either in 2nd or 3rd place. Firefox is kinda popular here, you see.
"Unreliable" is a pretty odd word choice, by the way. Global stats are always different from your own stats. By catering to a particular demographic you're inevitably introducing a massive bias.
Naturally, the only thing that matters are your own stats for a particular website. If it's 95% IE8 then that's how things are. IE8 has to work perfectly. There is no way around it.
As for why they aren't using Blink/WebKit - I'm guessing they have huge amount of work based on IE and related tech and also integrating LGPL code in to Windows is probably a big no-no.
Why are SIMD instructions fixed-number-of-lanes? It seems to me that something like a semi-generic MAP_START(start, number, stride) <bunch of instructions> MAP_END (where it's explicitly executing the instructions in an undefined order between lanes) would be easier to deal with, and easier to upgrade down the line too.
And in part because there's more to "short SIMD" programming than just charging through large arrays. Sometimes you need to swizzle elements around, for example, and this is easier if you can think about multiple lanes at a time.
And as for your second, don't think of it as a standard map. I should have elaborated. Think of it more of a for loop with an index variable and temporary variable per-iteration. You can access (read and write) other things outside of that index too - the only restriction being that the iterations of the loop will execute in an arbitrary order, including simultaneously.
The JS SIMD effort is aimed at finer-grained, hand-written but highly reliable and predictable SIMD as compared to the large-scale, convenient but kinda magic of RiverTrail.
SIMD is non-controversial: it's just like another ALU instruction but maps the inputs to the outputs differently. Doing something more exotic, like VLIW, is an uphill battle. However, as seen with GPUs, that can be fruitful.
SIMD is different—it is all about the interactions between lanes of data.
As a bit of a tautology: the vector unit in x86 parts is SIMD, because it was designed for SIMD workloads.
That said, the original vector processors from the '70s and '80s were kind of like what you describe. Not coincidentally, they died off with the RISC movement.
It's a good enough idea that people keep trying to make it work. But it's never been really successful, either.
1) It's not fixed as the processors actually get wider vectors instruction sets: SSE is 128 bits, but AVX is 256 bits.
And increasing the size of fixed-width operations from time to time does not help existing code.
Dart has become just another language that transpiles to JavaScript, abandoned even by Googlers.
And more: https://www.dartlang.org/community/who-uses-dart.html
What is the business value to use Dart instead of any other language that transpiles into JavaScript?
> What is the business value to use Dart instead of any other language that transpiles into JavaScript?
It's the question of preferences. Dart gives great tooling (IDE, debugging, testing) and more advantaged language, but universe of Dart is much smaller, so there are pros and cons, as always. There is no one ideal size of shoes.
I expect that every browser implicitly uses SIMD by way of the compiler identifying and inserting the correct instructions (MMX, AVX2...), what exactly is Intel's contribution in this, did they manually vectorized some tight loop?
> Intel has been contributing to Chakra, the JavaScript engine for Microsoft Edge
> Some examples of Intel’s direct contributions to Chakra’s JIT compiler include better instruction selection and scheduling.
> [they] also helped us identify opportunities of missed redundant instruction elimination, and inline overhead reduction.
> Intel engineers are collaborating with us closely to implement Single Instruction Multiple Data (SIMD) [1], a future ECMAScript proposal, in Chakra
> Intel recently contributed an optimization to improve navigation (load) time for pages containing several inline elements, optimizations to reduce DOM parse times for text-area elements, and participated in investigations and root cause analysis to improve page load/response times
[1]: https://github.com/johnmccutchan/ecmascript_simd [2]: https://github.com/tc39/ecma262
https://developer.mozilla.org/en-US/docs/Web/JavaScript/SIMD...
var a = SIMD.float32x4(1, 2, 3, 4);
var b = SIMD.float32x4(5, 6, 7, 8);
var c = SIMD.float32x4.add(a,b);
The benefit of such instructions is that they are fully typed and can easily map directly to the machine instructions. And of course, you don't have to write such code unless you actually program something that calculates a lot.It is a Google/Mozilla/Intel collaboration, started 2013:
https://www.youtube.com/watch?v=CbMXkbqQBcQ
The initial proposal was by John McCutchan, who works in the Google's Dart team but the paper
http://dl.acm.org/citation.cfm?id=2568066
is already signed by people from Google, Intel and Mozilla and Intel obviously actively works with the browser vendors.
"This paper introduces an explicit SIMD programming model for Dart and JavaScript, we show that it can be compiled to efficient x86/SSE or ARM/Neon code by both Dart and JavaScript virtual machines achieving a 300%-600% speed increase across a variety of benchmarks. The result of this work is that more sophisticated and performant applications can be built to run in web browsers. The ideas introduced in this paper can also be used in other dynamically typed scripting languages to provide a similarly performant interface to SIMD co-processors."
What I don't know is if Intel keeps some patents or some sources. That could explain that Intel must be involved. But maybe they simply like to be involved.