Vik


AMD Dives Deep On Asynchronous Shading

AMD Dives Deep On Asynchronous Shading

Earlier this month at GDC, AMD introduced their VR technology toolkit, LiquidVR. LiquidVR offers game developers a collection of useful tools and technologies for adding high performance VR to games, including features to make better utilization of multiple GPUs, features to reduce display chain latency, and finally features to reduce rendering latency. Key among the latter features set is support for asynchronous shaders, which is the ability to execute certain shader operations concurrently with other rendering operations, rather than in a traditional serial fashion.

It’s this last item that ended up kicking up a surprisingly deep conversation between myself, AMD’s “Chief Gaming Scientist” Richard Huddy, and other members of AMD’s GDC staff. AMD was keen to show off the performance potential of async shaders, but in the process we reached the realization that to this point AMD hasn’t talked very much about their async execution abilities within the GCN architecture, particularly within a graphics context as opposed to a compute context. While the idea of async shaders is pretty simple – executing shaders concurrently (and yet not in sync with) other operations – it’s a bit less obvious just what the real-world benefits are why this matters. After all, aren’t GPUs already executing a massive number of threads?

With that in mind AMD agreed it was something that needed further consideration, and after a couple of weeks they got back to us (and the rest of the tech press) with further details of their async shader implementation. What AMD came back to us with isn’t necessarily more detail on the hardware itself, but it was a better understanding of how AMD’s execution resources are used in a graphics context, why recent API developments matter, and ultimately why asynchronous shading/computing is only now being tapped in PC games.

Why Asynchronous Shading Wasn’t Accessible Before

AMD has offered multiple Asynchronous Compute Engines (ACEs) since the very first GCN part in 2011, the Tahiti-powered Radeon HD 7970. However prior to now the technical focus on the ACEs was for pure compute workloads, which true to their name allow GCN GPUs to execute compute tasks from multiple queues. It wasn’t until very recently that the ACEs became important for graphical (or rather mixed graphics + compute) workloads.

Why? Well the short answer is that in another stake in the heart of DirectX 11, DirectX 11 wasn’t well suited for asynchronous shading. The same heavily abstracted, driver & OS controlled rendering path that gave DX11 its relatively high CPU overhead and poor multi-core command buffer submission also enforced very stringent processing requirements. DX11 was a serial API through and through, both for command buffer execution and as it turned out shader execution.

As one might expect when we’re poking holes into DirectX 11, the asynchronous shader issues of the API are being addressed in Mantle, DirectX 12, and other low-level APIs. Along with making it much easier to submit work from multiple threads over multiple cores, all of these APIs are also making significant changes in how work is executed. With the ability to accept work from multiple threads, work can now be more readily executed in parallel and asynchronously, enabling asynchronous shading for the first time.

There is also one exception to the DX11 rule that we’ll get to in depth a bit later, but in short that exception is custom middleware like LiquidVR. Even in a DX11 context LiquidVR can leverage some (but not all) of the async shading functionality of GCN GPUs to do things like warping asynchronously, as it technically sits between DX11 and the GPU. This in turn is why async shading is so important to AMD’s VR plans, as all of their GCN GPUs are capable of this and it can be exposed in the current DX11 ecosystem.

Executing Async: Hardware & Software

Of course to pull this off you need hardware that can support executing work from multiple queues, and this is something that AMD invested in early. GCN 1.0 and GCN 1.1 Bonaire included 1 graphics command processor and 2 ACEs, while GCN 1.1 Hawaii and GCN 1.2 Tonga (so far) include 1 graphics command processor and 8 ACEs. Meanwhile the GCN-powered Xbox One and Playstation 4 take their own twists, each packing different configurations of graphics command processors and ACEs.

From a feature perspective it’s important to note that the ACEs and graphics command processors are different from each other in a small but important way. Only the graphics command processors have access to the full GPU – not just the shaders, but the fixed function units like the geometry units and ROPs – while the ACEs only get shader access. Ostensibly the ACEs are for compute tasks and the command processor is for graphics tasks, however with compute shaders blurring the line between graphics and compute, the ACEs can be used to execute compute shaders as well now that software exists to make use of it.

On a side note, part of the reason for AMD’s presentation is to explain their architectural advantages over NVIDIA, so we checked with NVIDIA on queues. Fermi/Kepler/Maxwell 1 can only use a single graphics queue or their complement of compute queues, but not both at once – early implementations of HyperQ cannot be used in conjunction with graphics. Meanwhile Maxwell 2 has 32 queues, composed of 1 graphics queue and 31 compute queues (or 32 compute queues total in pure compute mode). So pre-Maxwell 2 GPUs have to either execute in serial or pre-empt to move tasks ahead of each other, which would indeed give AMD an advantage..

GPU Queue Engine Support
  Graphics/Mixed Mode Pure Compute Mode
AMD GCN 1.2 (285) 1 Graphics + 8 Compute 8 Compute
AMD GCN 1.1 (290 Series) 1 Graphics + 8 Compute 8 Compute
AMD GCN 1.1 (260 Series) 1 Graphics + 2 Compute 2 Compute
AMD GCN 1.0 (7000/200 Series) 1 Graphics + 2 Compute 2 Compute
NVIDIA Maxwell 2 (900 Series) 1 Graphics + 31 Compute 32 Compute
NVIDIA Maxwell 1 (750 Series) 1 Graphics 32 Compute
NVIDIA Kepler GK110 (780/Titan) 1 Graphics 32 Compute
NVIDIA Kepler GK10x (600/700 Series) 1 Graphics 1 Compute

Moving on, coupled with a DMA copy engine (common to all GCN designs), GCN can potentially execute work from several queues at once. In an ideal case for graphics workloads this would mean that the graphics queue is working on jobs that require its full hardware access capabilities, while the copy queue handles data management, and finally one-to-several compute queues are fed compute shaders. What each of those task precisely is depends on the game developer, but examples of graphics and compute tasks include shadowing and MSAA on the former, and ambient occlusion, second-order physics, and color grading on the latter.

As a consequence of having multiple queues to feed the GPU, it is possible for the GPU to work on multiple tasks at once. Doing this seems counter-intuitive at first – GPUs already work on multiple threads, and graphics rendering is itself embarrassingly parallel, allowing it to be easily broken down into multiple threads in the first place. However at a lower level GPUs only achieve their famous high throughput performance in exchange for high latency; lots of work can get done, but relatively speaking any one thread may take a while to reach completion. For this reason the efficient scheduling of threads within a GPU requires an emphasis on latency hiding, to organize threads such that different threads are interleaved to hide the impact of the GPU’s latency.

Latency hiding in turn can become easier with multiple work queues. The additional queues give you additional pools of threads to pick from, and if the GPU is presented with a situation where it absolutely can’t hide latency from the graphics queue and must stall, the compute queues could be used to fill that execution bubble. Similarly, if there flat-out aren’t enough threads from the graphics queue to fill out the GPU, then this presents another opportunistic scenario to execute threads from a compute task to keep the GPU better occupied. Compared to a purely serial system this also helps to mitigate some of the overhead that comes from context switching.

Ultimately the presence of the ACEs and the layout of GCN allows these tasks to be done in an asynchronous manner, ties into the concept of async shaders and what differentiates this from synchronous parallel execution. So long as the task can be done asynchronously, then GCN’s scheduler can grab threads as necessary from the additional queues and load them up to improve performance. Meanwhile, although the number of ACEs can impact how well async shading is able to improve performance by better filling the GPU, AMD readily admits that 8 ACEs is likely overkill for graphics purposes; even a fewer number of queues (e.g. 1+2 in earlier GCN hardware) is useful for this task, and the biggest advantage is simply in having multiple queues in the first place.

The Performance Impact of Asynchronous Shaders

Execution theory aside, what is the actual performance impact of asynchronous shaders? This is a bit harder of a question to answer at this time, though mostly because there’s virtually nothing on the PC capable of using async shaders due to the aforementioned API limitations. Thief, via its Mantle renderer, is the only PC game currently using async shaders, while on the PS4 and its homogenous platform there are a few more titles making using of the tech.

AMD for their part does have an internal demo showcasing the benefits of async shaders, utilizing a post-process blurring effect with and without async shaders, and the performance differences can be quite high. However it’s a synthetic demo, and like all synthetic demos the performance gains represent something of a best-case scenario for the technology. So AMD’s 46% performance improvement, though quite large, is not something we’d expect to see in any game.

That said, VR (and by extension, LiquidVR) presents an interesting and more straightforward case for the technology, which is why both NVIDIA and AMD have been pursuing it. Asynchronous execution of time warping and other post-processing effects will on average reduce latency (filling those rendering bubbles), with time warping itself reducing perceived latency by altering the image at the last possible second, while the async execution reduces the total amount of time a frame is in the GPU being rendered. The actual latency impact will again not be anywhere near the 46% performance improvement in AMD’s sample, but in the case of VR every millisecond counts.

Of course to really measure this we will need games that can use async shaders and VR hardware – both of which are in short supply right now – but the potential benefits are clear. And if AMD has their way, both VR and regular developers will be taking much greater advantage of the capabilities of asynchronous shading.

Windows 10 Build 10049: Meet Project Spartan

Windows 10 Build 10049: Meet Project Spartan

Microsoft has released a new build to the fast ring for Windows Insiders today. When build 10041 dropped on the 18th of March, we made note that updates would not be coming at a much quicker pace. Little did we know that we would get a new build only …

Google Updates Gmail for Android With A Unified Inbox

Google Updates Gmail for Android With A Unified Inbox

Today Google’s Gmail team is shipping an update to Gmail for Android, which has now become the standard mail application for Android Lollipop users. The update brings a great feature that a few other mail applications have offered for some time, which is the ability to display emails from multiple accounts in a single unified inbox. Google has simply named this feature “All Inboxes”, and it’s accessible via the sliding drawer on the left side of the application on smartphones, and the left pane on tablets. As someone who has to use multiple email accounts on a daily basis, this is a feature that I’ve hoped Gmail would adopt for quite some time, and it’s great to finally have it rolling out.

In addition to the new unified inbox, Google is also enabling support for displaying threaded conversations on non-Gmail accounts. This means that users who have long email threads on their email accounts from other providers will be able to view them in a single thread, which was previously limited to Gmail accounts. The omission of this feature just seemed like an oversight when third party account support was integrated into Gmail, and it’s good to see Google ensuring parity between the features for Gmail accounts and other providers now that the application acts as the standard Android mail app.

In addition to the two major features above, this update to Gmail also brings a few smaller features like better auto-complete when searching, larger attachment previews, 1-tap saving to Google Drive, and improved animation responsiveness. The update is currently rolling out now, although it may take some time for devices to receive it as Google always performs staged releases for application and system updates.

ASUS Launches The Transformer Book Chi

ASUS Launches The Transformer Book Chi

Though the Chi series was first announced at Computex way back in June 2014, it has been a long time getting to market. ASUS is now accepting pre-orders for two models of the Chi. The T100 Chi will be the replacement for the well-received Transformer Book T100, and the T300 Chi is the flagship model. Both will be fanless designs, and include the now traditional Transformer Book keyboard dock.

Starting with the T100 Chi, we get a nice update to a good design. The T100 Chi is a tablet convertible , so all of the components are in the 10.1 inch display. Speaking of the display, ASUS has went with a 16:10 ratio, with a 1920×1200 resolution. It is nice to see a few devices bucking the 16:9 trend, especially with tablets. It also features a laminated IPS display, which removes the air gaps between the different display layers. This is not a new feature of course, but one that has normally been reserved for more premium devices. And the premium feel does not end there, with the T100 Chi being made completely out of aluminum. The T100 is powered by the Intel Atom Z3775 quad-core processor, and has 2 GB of memory. Storage is eMMC in 32 and 64 GB tiers. The T100 Chi has a MSRP of $399, which is very much keeping in line with the previous T100, and comes with the keyboard dock.

ASUS Transformer Book Chi Series
  T100 Chi T300 Chi
Processor Intel Atom Z3775 (quad-core 1.46-2.39GHz, Intel HD GPU) Intel Core M-5Y10/5Y71 (2C/4T 0.8-2.0 GHz/1.2-2.9GHz, Intel HD 5300 GPU)
Display 10.1″ 1920×1200 IPS Multitouch 12.5″ 1920×1080/2560×1440 IPS
Memory 2 GB LPDDR3 4/8GB
Storage 32/64GB eMMC plus Micro SDXC 128GB SSD plus Micro SDXC
Networking 802.11n dual-band + BT 4.0 802.11n dual-band + BT 4.0
I/O Micro USB 3.0, Micro HDMI, Headset Micro USB 3.0, Micro HDMI, Headset
Battery 31 Wh 31 Wh
Dimensions 10.1 x 6.9 x 0.3″ (256.5 x 175.3 x 7.1mm) 12.5 x 7.5 x 0.3″ (317.5 x 190.5 x 7.62mm)
Weight 1.3 lbs (590g), 2.4lbs (1.1kg) with keyboard 1.6 lbs (726g), 3.2 lbs (1.45kg) with keyboard
MSRP $399 32GB $449 64GB $699 FHD, $899 WQHD

The T300 Chi is 12.5 inch tablet, with the same laminated display as the T100, but we are back to the 16:9 ratio. Two resolutions are offered, with a 1920×1080 model being the mainstream version, or you can opt for a WQHD 2560×1440 version as well. The 1080p model comes with the Intel Core M-5Y10 CPU, 4 GB of memory, and a 128 GB SSD with micro SDXC expansion. The higher resolution T300 Chi will come with the Intel Core M-5Y71, 8 GB of memory, and a 128 GB SSD with micro SDXC expansion. The tablet alone is just 1.6 lbs, and combined with the included keyboard dock, the weight doubles to 3.2 lbs.

Both models feature support for the ASUS Transformer Book Chi Active Stylus Pen, which has 256 pressure levels supported and could therefore be based on N-Trig technology is a Synaptics unit (Confirmed with ASUS).

The keyboard docks have always been the key to the Transformer Book series, and the Chi models feature a unique magnetic hinge to perform the connection. The new models also offer support for additional modes beside attached and detached, with flipped and tented now joining the capabilities. While they do not feature the kickstand of the Surface, if you do have somewhere to rest the tablet, the tent mode should offer some nice functionality.

The ASUS Transformer Book Chi T100 and T300 are available for pre-order starting today.

Source: ASUS

The Phanteks Enthoo Pro Case Review

The Enthoo Pro is most popular tower case of Phanteks, which the company claims to be “beautifully crafted, amazingly flexible, budget friendly and with maximized cooling potential”. One might imagine this tries to put too many eggs in one basket – we received a review unit and put it through our test suite.