GoingNative 7: VC11 Auto-Vectorizer, C++ NOW, Lang.NEXT

EDN Admin

Well-known member
Joined
Aug 7, 2010
Messages
12,794
Location
In the Machine
In this installment of GoingNative, its all about the latest C++ compiler technology from Microsoft. Most of the time is spent discussing VC11s Auto-Vectorizer compiler facility along with a few short forays into other compiler improvements (like Auto-Parallelizer). You meet the lead developer for VC11s backend compiler and the architect of Auto-Vectorizer, Jim Radigan (who spends all the time at the whiteboard). You also meet backend compiler PM Jim Hogg , a C9 veteran and one of the original folks behind the Phoenix Compiler Project. In order to keep the conversation palatable to a large number of folks, we dont get into the math behind auto-vectorization. However, if this is something that really interests you, then we can get Jim to do a lecture on the internals (will take more than one session, of course—a lot of stuff goes on behind the scenes when you take a loop of arbitrary complexity and determine if its vectorizable and then vectorize it with maximum efficiency...). Now, on to AutoVec. The VC11 compiler includes a feature called Auto-Vectorization, or AutoVec for short. AutoVec tries to make loops in your code run faster by using the SSE, or vector, registers present in all current processors. The feature is on by-default. So, like other optimizations that the compiler performs, you dont need to know anything more to benefit. However, this session explains more background on what is going on, and digs a little into the kinds of sophisticated analyses that AutoVec performs, and the loop patterns that it successfully speeds up. Heres a trivial example of a loop that gets automatically vectorized in VC11 with significant performance gains:
<pre class="brush: cpp
for( i=0; i<100000; i++)
{
a = b + c;
}
[/code] The auto-vectorizer transforms the above tight loop into machine instructions that run the loop 4x faster on SIMD-capable (SSE/SSE2) processors. As Jim and Jim discuss, this is because each loop iteration simultaneously performs 4 computations using the modern CPUs vector registers. This is a great automatic optimization feature in VC11. Tune in and meet a couple of the key folks behind VCs Auto-Vec! Table of Contents : http://channel9.msdn.com/Shows/C9-GoingNative/GoingNative-7-VC11-Auto-Vectorizer-C-NOW-LangNEXT#time=00m00s [00:00] Diego and Charles construct the show ( http://cppnow.org/" target="_blank C++NOW , Some news, Auto-Vectorizer in VC11 compiler)
http://channel9.msdn.com/Shows/C9-GoingNative/GoingNative-7-VC11-Auto-Vectorizer-C-NOW-LangNEXT#time=04m45s [04:45] Charles interviews VC backend compiler lead developer Jim Radigan and backend compiler PM Jim Hogg
http://channel9.msdn.com/Shows/C9-GoingNative/GoingNative-7-VC11-Auto-Vectorizer-C-NOW-LangNEXT#time=52m03s [52:03] Diego and Charles destruct the show (longer than usual, but worth the delay - http://channel9.msdn.com/Events/Lang-NEXT/Lang-NEXT-2012" target="_blank Lang.NEXT , http://cppandbeyond.com/" target="_blank C&B 2012 ) <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Feeds/RSS&WT.dl=0&WT.entryid=Entry:RSSView:9f3a6bcfdd1b45b09da8a01b011e3b9c

View the full article
 
Back
Top