The document discusses optimizing DirectCompute for graphics processing units (GPUs). It introduces DirectCompute as an API for general purpose GPU programming and explains how it maps better than traditional graphics APIs to the architecture of GPUs like AMD's GCN. Key optimization techniques covered include choosing a thread group size that is a multiple of 64 threads to fully utilize the SIMD hardware, and using thread group shared memory to improve data access speeds compared to off-chip memory. Bank conflicts in shared memory access are also discussed as something to avoid for best performance.
HC-4021, Efficient scheduling of OpenMP and OpenCL™ workloads on Accelerated ...AMD Developer Central
Presentation HC-4021, Efficient scheduling of OpenMP and OpenCL™ workloads on Accelerated Processing Units, by Robert Engel at the AMD Developer Summit (APU13) Nov. 11-13, 2013.
Keynote (Mike Muller) - Is There Anything New in Heterogeneous Computing - by...AMD Developer Central
Keynote presentation, Is There Anything New in Heterogeneous Computing, by Mike Muller, Chief Technology Officer, ARM, at the AMD Developer Summit (APU13), Nov. 11-13, 2013.
HC-4021, Efficient scheduling of OpenMP and OpenCL™ workloads on Accelerated ...AMD Developer Central
Presentation HC-4021, Efficient scheduling of OpenMP and OpenCL™ workloads on Accelerated Processing Units, by Robert Engel at the AMD Developer Summit (APU13) Nov. 11-13, 2013.
Keynote (Mike Muller) - Is There Anything New in Heterogeneous Computing - by...AMD Developer Central
Keynote presentation, Is There Anything New in Heterogeneous Computing, by Mike Muller, Chief Technology Officer, ARM, at the AMD Developer Summit (APU13), Nov. 11-13, 2013.
CC-4000, Characterizing APU Performance in HadoopCL on Heterogeneous Distribu...AMD Developer Central
Presentation CC-4000, Characterizing APU Performance in HadoopCL on Heterogeneous Distributed Platforms, by Max Grossman at the AMD Developer Summit (APU13) November 11-13, 2013.
An Introduction to OpenCL™ Programming with AMD GPUs - AMD & Acceleware WebinarAMD Developer Central
This deck presents highlights from the Introduction to OpenCL™ Programming Webinar presented by Acceleware & AMD on Sept. 17, 2014. Watch a replay of this popular webinar on the AMD Dev Central YouTube channel here: https://www.youtube.com/user/AMDDevCentral or here for the direct link: http://bit.ly/1r3DgfF
Rendering Battlefield 4 with Mantle by Johan Andersson - AMD at GDC14AMD Developer Central
Johan Andersson will show how the Frostbite 3 game engine is using the low-level graphics API Mantle to deliver significantly improved performance in Battlefield 4 on PC and future games from Electronic Arts in this presentation from the 2014 Game Developers Conference in San Francisco March 17-21. Also view this and other presentations on our developer website at http://developer.amd.com/resources/documentation-articles/conference-presentations/
This presentation accompanies the webinar replay located here: http://bit.ly/1zmvlkL
AMD Media SDK Software Architect Mikhail Mironov shows you how to leverage an AMD platform for multimedia processing using the new Media Software Development Kit. He discusses how to use a new set of C++ interfaces for easy access to AMD hardware blocks, and shows you how to leverage the Media SDK in the development of video conferencing, wireless display, remote desktop, video editing, transcoding, and more.
MM-4092, Optimizing FFMPEG and Handbrake Using OpenCL and Other AMD HW Capabi...AMD Developer Central
Presentation MM-4092, Optimizing FFMPEG and Handbrake Using OpenCL and Other AMD HW Capabilities, by Srikanth Gollapudi at the AMD Developer Summit (APU13) November 11-13, 2013.
AMD’s math libraries can support a range of programmers from hobbyists to ninja programmers. Kent Knox from AMD’s library team introduces you to OpenCL libraries for linear algebra, FFT, and BLAS, and shows you how to leverage the speed of OpenCL through the use of these libraries.
Review the material presented in the AMD Math libraries webinar in this deck.
For more:
Visit the AMD Developer Forums:http://devgurus.amd.com/welcome
Watch the replay: www.youtube.com/user/AMDDevCentral
Follow us on Twitter: https://twitter.com/AMDDevCentral
HC-4019, "Exploiting Coarse-grained Parallelism in B+ Tree Searches on an APU...AMD Developer Central
Presentation, HC-4019, "Exploiting Coarse-grained Parallelism in B+ Tree Searches on an APU," by Mayank Daga and Mark Nutter at the AMD Developer Summit (APU13) Nov. 11-13.
This session presents a detailed programmer oriented overview of our SPU based shading system implemented in DICE's Frostbite 2 engine and how it enables more visually rich environments in BATTLEFIELD 3 and better performance over traditional GPU-only based renderers. We explain in detail how our SPU Tile-based deferred shading system is implemented, and how it supports rich material variety, High Dynamic Range Lighting, and large amounts of light sources of different types through an extensive set of culling, occlusion and optimization techniques.
CC-4000, Characterizing APU Performance in HadoopCL on Heterogeneous Distribu...AMD Developer Central
Presentation CC-4000, Characterizing APU Performance in HadoopCL on Heterogeneous Distributed Platforms, by Max Grossman at the AMD Developer Summit (APU13) November 11-13, 2013.
An Introduction to OpenCL™ Programming with AMD GPUs - AMD & Acceleware WebinarAMD Developer Central
This deck presents highlights from the Introduction to OpenCL™ Programming Webinar presented by Acceleware & AMD on Sept. 17, 2014. Watch a replay of this popular webinar on the AMD Dev Central YouTube channel here: https://www.youtube.com/user/AMDDevCentral or here for the direct link: http://bit.ly/1r3DgfF
Rendering Battlefield 4 with Mantle by Johan Andersson - AMD at GDC14AMD Developer Central
Johan Andersson will show how the Frostbite 3 game engine is using the low-level graphics API Mantle to deliver significantly improved performance in Battlefield 4 on PC and future games from Electronic Arts in this presentation from the 2014 Game Developers Conference in San Francisco March 17-21. Also view this and other presentations on our developer website at http://developer.amd.com/resources/documentation-articles/conference-presentations/
This presentation accompanies the webinar replay located here: http://bit.ly/1zmvlkL
AMD Media SDK Software Architect Mikhail Mironov shows you how to leverage an AMD platform for multimedia processing using the new Media Software Development Kit. He discusses how to use a new set of C++ interfaces for easy access to AMD hardware blocks, and shows you how to leverage the Media SDK in the development of video conferencing, wireless display, remote desktop, video editing, transcoding, and more.
MM-4092, Optimizing FFMPEG and Handbrake Using OpenCL and Other AMD HW Capabi...AMD Developer Central
Presentation MM-4092, Optimizing FFMPEG and Handbrake Using OpenCL and Other AMD HW Capabilities, by Srikanth Gollapudi at the AMD Developer Summit (APU13) November 11-13, 2013.
AMD’s math libraries can support a range of programmers from hobbyists to ninja programmers. Kent Knox from AMD’s library team introduces you to OpenCL libraries for linear algebra, FFT, and BLAS, and shows you how to leverage the speed of OpenCL through the use of these libraries.
Review the material presented in the AMD Math libraries webinar in this deck.
For more:
Visit the AMD Developer Forums:http://devgurus.amd.com/welcome
Watch the replay: www.youtube.com/user/AMDDevCentral
Follow us on Twitter: https://twitter.com/AMDDevCentral
HC-4019, "Exploiting Coarse-grained Parallelism in B+ Tree Searches on an APU...AMD Developer Central
Presentation, HC-4019, "Exploiting Coarse-grained Parallelism in B+ Tree Searches on an APU," by Mayank Daga and Mark Nutter at the AMD Developer Summit (APU13) Nov. 11-13.
This session presents a detailed programmer oriented overview of our SPU based shading system implemented in DICE's Frostbite 2 engine and how it enables more visually rich environments in BATTLEFIELD 3 and better performance over traditional GPU-only based renderers. We explain in detail how our SPU Tile-based deferred shading system is implemented, and how it supports rich material variety, High Dynamic Range Lighting, and large amounts of light sources of different types through an extensive set of culling, occlusion and optimization techniques.
Study: The Future of VR, AR and Self-Driving CarsLinkedIn
We asked LinkedIn members worldwide about their levels of interest in the latest wave of technology: whether they’re using wearables, and whether they intend to buy self-driving cars and VR headsets as they become available. We asked them too about their attitudes to technology and to the growing role of Artificial Intelligence (AI) in the devices that they use. The answers were fascinating – and in many cases, surprising.
This SlideShare explores the full results of this study, including detailed market-by-market breakdowns of intention levels for each technology – and how attitudes change with age, location and seniority level. If you’re marketing a tech brand – or planning to use VR and wearables to reach a professional audience – then these are insights you won’t want to miss.
UX, ethnography and possibilities: for Libraries, Museums and ArchivesNed Potter
These slides are adapted from a talk I gave at the Welsh Government's Marketing Awards for the LAM sector, in 2017.
It offers a primer on UX - User Experience - and how ethnography and design might be used in the library, archive and museum worlds to better understand our users. All good marketing starts with audience insight.
The presentation covers the following:
1) An introduction to UX
2) Ethnography, with definitions and examples of 7 ethnographic techniques
3) User-centred design and Design Thinking
4) Examples of UX-led changes made at institutions in the UK and Scandinavia
5) Next Steps - if you'd like to try out UX at your own organisation
The technologies and people we are designing experiences for are constantly changing, in most cases they are changing at a rate that is difficult keep up with. When we think about how our teams are structured and the design processes we use in light of this challenge, a new design problem (or problem space) emerges, one that requires us to focus inward. How do we structure our teams and processes to be resilient? What would happen if we looked at our teams and design process as IA’s, Designers, Researchers? What strategies would we put in place to help them be successful? This talk will look at challenges we face leading, supporting, or simply being a part of design teams creating experiences for user groups with changing technological needs.
An immersive workshop at General Assembly, SF. I typically teach this workshop at General Assembly, San Francisco. To see a list of my upcoming classes, visit https://generalassemb.ly/instructors/seth-familian/4813
I also teach this workshop as a private lunch-and-learn or half-day immersive session for corporate clients. To learn more about pricing and availability, please contact me at http://familian1.com
3 Things Every Sales Team Needs to Be Thinking About in 2017Drift
Thinking about your sales team's goals for 2017? Drift's VP of Sales shares 3 things you can do to improve conversion rates and drive more revenue.
Read the full story on the Drift blog here: http://blog.drift.com/sales-team-tips
How to Become a Thought Leader in Your NicheLeslie Samuel
Are bloggers thought leaders? Here are some tips on how you can become one. Provide great value, put awesome content out there on a regular basis, and help others.
This article contains information about performance optimization of Unity3D games for android. Different solutions provided both for CPU and GPU. Also here you can find methodology which will help you to detect performance problems, analyze them and perform appropriate optimization.
A look at how new Direct3D advancements enhance efficiency and enable fully-threaded building of command buffers in this prentation from the 2014 Game Developers Conference in San Francisco March 17-21. Also view this and other presentations on our developer website at http://developer.amd.com/resources/documentation-articles/conference-presentations/
For the full video of this presentation, please visit: https://www.edge-ai-vision.com/2022/06/programming-vision-pipelines-on-amds-ai-engines-a-presentation-from-amd/
Kristof Denolf, Principal Engineer, and Bader Alam, Director of Software Engineering, both of AMD, present the “Programming Vision Pipelines on AMD’s AI Engines” tutorial at the May 2022 Embedded Vision Summit.
AMD’s latest generation of Adaptive Compute Acceleration Platforms (ACAP), Versal AI Core and Versal AI Edge, include an array of powerful AI Engines alongside other computation components, such as programmable logic and ARM cores. This array of AI Engines has high computational capability to address the workloads of diverse applications, including automotive solutions.
This presentation introduces the properties and capabilities of these AI Engines for image, video and vision processing. Denolf and Alam begin with a top-down look at how video data makes its way to the AI Engines. Then they delve into a detailed discussion of the compute properties of the VLIW vector architecture of the AI Engines and illustrate how it efficiently executes vision processing kernels. Next, they introduce the Vitis Vision Library and give an overview of its data movement and kernel processing capabilities. They conclude by showing how AMD’s Vitis tools support building a vision pipeline and analyzing its performance.
Enabling Artificial Intelligence - Alison B. LowndesWithTheBest
An overview and update of our hardware and software offering and support provided to the Machine & Deep Learning Community around the world.
Alison B. Lowndes, AI DevRel, EMEA
Vulkan and DirectX12 share many common concepts, but differ vastly from the APIs most game developers are used to. As a result, developing for DX12 or Vulkan requires a new approach to graphics programming and in many cases a redesign of the Game Engine. This lecture will teach the basic concepts common to Vulkan and DX12 and help developers overcome the main problems that often appear when switching to one of the new APIs. It will explain how those new concepts will help games utilize the hardware more efficiently and discuss best practices for game engine development.
For more, visit http://developer.amd.com/
This is the slide deck from the popular "Introduction to Node.js" webinar with AMD and DevelopIntelligence, presented by Joshua McNeese. Watch our AMD Developer Central YouTube channel for the replay at https://www.youtube.com/user/AMDDevCentral.
Learn more about DirectGMA in this blog post: bit.ly/AMDDirectGMA
AMD has introduced Direct Graphics Memory Access in order to:
‒ Makes a portion of the GPU memory accessible to other devices
‒ Allows devices on the bus to write directly into this area of GPU memory
‒ Allows GPUs to write directly into the memory of remote devices on the bus supporting DirectGMA
‒ Provides a driver interface to allow 3rd party hardware vendors to support data exchange with an AMD GPU using DirectGMA
‒ and more
View the accompanying blog post here: bit.ly/AMDDirectGMA
This Webinar explores a variety of new and updated features in Java 8, and discuss how these changes can positively impact your day-to-day programming.
Watch the video replay here: http://bit.ly/1vStxKN
Your Webinar presenter, Marnie Knue, is an instructor for Develop Intelligence and has taught Sun & Oracle certified Java classes, RedHat JBoss administration, Spring, and Hibernate. Marnie also has spoken at JavaOne.
The Small Batch (and other) solutions in Mantle API, by Guennadi Riguer, Mant...AMD Developer Central
This presentation discusses the Mantle API, what it is, why choose it, and abstraction level, small batch performance and platform efficiency.
Download the presentation from the AMD Developer website here: http://bit.ly/TrEUeC
Inside XBox One by Martin Fuller from the Sweden Game Developers Conference, June 2, 2014, Stockholm, Sweden. View other presentations here: http://bit.ly/TrEUeC
Computer Vision Powered by Heterogeneous System Architecture (HSA) by Dr. Ha...AMD Developer Central
Computer Vision Powered by Heterogeneous System Architecture (HSA) by Dr. Harris Gasparakis, AMD, at the Embedded Vision Alliance Summit, May 2014.
Harris Gasparakis, Ph.D., is AMD’s OpenCV manager. In addition to enhancing OpenCV with OpenCL acceleration, he is engaged in AMD’s Computer Vision strategic planning, ISVs, and AMD Ventures engagements, including technical leadership and oversight in the AMD Gesture product line. He holds a Ph.D. in theoretical high energy physics from YITP at SUNYSB. He is credited with enabling real-time volumetric visualization and analysis in Radiology Information Systems (Terarecon), including the first commercially available virtual colonoscopy system (Vital Images). He was responsible for cutting edge medical technology (Biosense Webster, Stereotaxis, Boston Scientific), incorporating image and signal processing with AI and robotic control.
Productive OpenCL Programming An Introduction to OpenCL Libraries with Array...AMD Developer Central
In this webinar presentation, ArrayFire COO Oded Green demonstrates best practices to help you quickly get started with OpenCL™ programming. Learn how to get the best performance from AMD hardware in various programming languages using ArrayFire. Oded discusses the latest advancements in the OpenCL™ ecosystem, including cutting edge OpenCL™ libraries such as clBLAS, clFFT, clMAGMA and ArrayFire. Examples are shown in real code for common application domains.
Watch the webinar here: http://bit.ly/1obT0M2
For more developer resources, visit:
http://arrayfire.com/
http://developer.amd.com/
Follow us on Twitter: https://twitter.com/AMDDevCentral
See info in the slides for more contact information and resource links!
RapidFire - the Easy Route to low Latency Cloud Gaming Solutions - AMD at GDC14AMD Developer Central
Learn more about how AMD’s RapidFire SDK simplifies the delivery of multi-game streaming from a single GPU while minimizing latency to ensure one of the best cloud gaming experiences in this presentation from the 2014 Game Developers Conference in San Francisco March 17-21. Also view this and other presentations on our developer website at http://developer.amd.com/resources/documentation-articles/conference-presentations/
Mantle and Nitrous - Combining Efficient Engine Design with a modern API - AM...AMD Developer Central
Oxide Games Partners Dan Baker and Tim Kipp will show you how to build a high throughput renderer using the Mantle API in this AMD technology presentation from the 2014 Game Developers Conference in San Francisco March 17-21. Also view this and other presentations on our developer website at http://developer.amd.com/resources/documentation-articles/conference-presentations/
This AMD technology presentation from the 2014 Game Developers Conference in San Francisco March 17-21 explains how Mantle features can enable developers to improve both CPU and GPU performance in their titles. Also view this and other presentations at http://developer.amd.com/resources/documentation-articles/conference-presentations/
Bill explains some of the ways that the Vertex Shader can be used to improve performance by taking a fast path through the Vertex Shader rather than generating vertices with other parts of the pipeline in this AMD technology presentation from the 2014 Game Developers Conference in San Francisco March 17-21. Check out more technical presentations at http://developer.amd.com/resources/documentation-articles/conference-presentations/
Keynote (Nandini Ramani) - The Role of Java in Heterogeneous Computing & How ...AMD Developer Central
Keynote presentation, The Role of Java in Heterogeneous Computing, and How You Can Help, by Nandini Ramani, VP, Java Platform, Oracle Corporation, at the AMD Developer Summit (APU13), Nov. 11-13, 2013.
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 3. In this session, we will cover desktop automation along with UI automation.
Topics covered:
UI automation Introduction,
UI automation Sample
Desktop automation flow
Pradeep Chinnala, Senior Consultant Automation Developer @WonderBotz and UiPath MVP
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Welocme to ViralQR, your best QR code generator.ViralQR
Welcome to ViralQR, your best QR code generator available on the market!
At ViralQR, we design static and dynamic QR codes. Our mission is to make business operations easier and customer engagement more powerful through the use of QR technology. Be it a small-scale business or a huge enterprise, our easy-to-use platform provides multiple choices that can be tailored according to your company's branding and marketing strategies.
Our Vision
We are here to make the process of creating QR codes easy and smooth, thus enhancing customer interaction and making business more fluid. We very strongly believe in the ability of QR codes to change the world for businesses in their interaction with customers and are set on making that technology accessible and usable far and wide.
Our Achievements
Ever since its inception, we have successfully served many clients by offering QR codes in their marketing, service delivery, and collection of feedback across various industries. Our platform has been recognized for its ease of use and amazing features, which helped a business to make QR codes.
Our Services
At ViralQR, here is a comprehensive suite of services that caters to your very needs:
Static QR Codes: Create free static QR codes. These QR codes are able to store significant information such as URLs, vCards, plain text, emails and SMS, Wi-Fi credentials, and Bitcoin addresses.
Dynamic QR codes: These also have all the advanced features but are subscription-based. They can directly link to PDF files, images, micro-landing pages, social accounts, review forms, business pages, and applications. In addition, they can be branded with CTAs, frames, patterns, colors, and logos to enhance your branding.
Pricing and Packages
Additionally, there is a 14-day free offer to ViralQR, which is an exceptional opportunity for new users to take a feel of this platform. One can easily subscribe from there and experience the full dynamic of using QR codes. The subscription plans are not only meant for business; they are priced very flexibly so that literally every business could afford to benefit from our service.
Why choose us?
ViralQR will provide services for marketing, advertising, catering, retail, and the like. The QR codes can be posted on fliers, packaging, merchandise, and banners, as well as to substitute for cash and cards in a restaurant or coffee shop. With QR codes integrated into your business, improve customer engagement and streamline operations.
Comprehensive Analytics
Subscribers of ViralQR receive detailed analytics and tracking tools in light of having a view of the core values of QR code performance. Our analytics dashboard shows aggregate views and unique views, as well as detailed information about each impression, including time, device, browser, and estimated location by city and country.
So, thank you for choosing ViralQR; we have an offer of nothing but the best in terms of QR code services to meet business diversity!
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...DanBrown980551
Do you want to learn how to model and simulate an electrical network from scratch in under an hour?
Then welcome to this PowSyBl workshop, hosted by Rte, the French Transmission System Operator (TSO)!
During the webinar, you will discover the PowSyBl ecosystem as well as handle and study an electrical network through an interactive Python notebook.
PowSyBl is an open source project hosted by LF Energy, which offers a comprehensive set of features for electrical grid modelling and simulation. Among other advanced features, PowSyBl provides:
- A fully editable and extendable library for grid component modelling;
- Visualization tools to display your network;
- Grid simulation tools, such as power flows, security analyses (with or without remedial actions) and sensitivity analyses;
The framework is mostly written in Java, with a Python binding so that Python developers can access PowSyBl functionalities as well.
What you will learn during the webinar:
- For beginners: discover PowSyBl's functionalities through a quick general presentation and the notebook, without needing any expert coding skills;
- For advanced developers: master the skills to efficiently apply PowSyBl functionalities to your real-world scenarios.
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™UiPathCommunity
In questo evento online gratuito, organizzato dalla Community Italiana di UiPath, potrai esplorare le nuove funzionalità di Autopilot, il tool che integra l'Intelligenza Artificiale nei processi di sviluppo e utilizzo delle Automazioni.
📕 Vedremo insieme alcuni esempi dell'utilizzo di Autopilot in diversi tool della Suite UiPath:
Autopilot per Studio Web
Autopilot per Studio
Autopilot per Apps
Clipboard AI
GenAI applicata alla Document Understanding
👨🏫👨💻 Speakers:
Stefano Negro, UiPath MVPx3, RPA Tech Lead @ BSP Consultant
Flavio Martinelli, UiPath MVP 2023, Technical Account Manager @UiPath
Andrei Tasca, RPA Solutions Team Lead @NTT Data
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfPeter Spielvogel
Building better applications for business users with SAP Fiori.
• What is SAP Fiori and why it matters to you
• How a better user experience drives measurable business benefits
• How to get started with SAP Fiori today
• How SAP Fiori elements accelerates application development
• How SAP Build Code includes SAP Fiori tools and other generative artificial intelligence capabilities
• How SAP Fiori paves the way for using AI in SAP apps
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
PHP Frameworks: I want to break free (IPC Berlin 2024)Ralf Eggert
In this presentation, we examine the challenges and limitations of relying too heavily on PHP frameworks in web development. We discuss the history of PHP and its frameworks to understand how this dependence has evolved. The focus will be on providing concrete tips and strategies to reduce reliance on these frameworks, based on real-world examples and practical considerations. The goal is to equip developers with the skills and knowledge to create more flexible and future-proof web applications. We'll explore the importance of maintaining autonomy in a rapidly changing tech landscape and how to make informed decisions in PHP development.
This talk is aimed at encouraging a more independent approach to using PHP frameworks, moving towards a more flexible and future-proof approach to PHP development.
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Ramesh Iyer
In today's fast-changing business world, Companies that adapt and embrace new ideas often need help to keep up with the competition. However, fostering a culture of innovation takes much work. It takes vision, leadership and willingness to take risks in the right proportion. Sachin Dev Duggal, co-founder of Builder.ai, has perfected the art of this balance, creating a company culture where creativity and growth are nurtured at each stage.
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
4. GPU COMPUTE
WHY WE NEED COMPUTE IN GAMES
Games can be CPU limited on some configurations
‒ Many traditional CPU tasks can be offloaded to the GPU
Some rendering algorithms are faster when implemented using Compute
‒ Post-processing techniques
Some tasks are a natural fit for Compute
‒ Non-graphics Data Parallel programming
‒ Physics
4 | DirectCompute in Gaming| NOVEMBER 15 2013 | AMD DEVELOPER SUMMIT
5. DX11 GRAPHICS PIPELINE
WHY WE NEED DirectCompute
Input Assembly
Textures
Too many unnecessary stages for compute
Vertex Shader
Old DX9 “GPGPU” programming
‒ Render full screen quad
‒ Use Pixel Shader for compute
Buffers
Hull Shader
Render Targets
Tessellator
Domain Shader
Geometry Shader
Constants
Stream
Out
UAVs
Rasterizer
Pixel Shader
Output Merger
5 | DirectCompute in Gaming| NOVEMBER 15 2013 | AMD DEVELOPER SUMMIT
…
Depth Test
Depthstencil
6. DirectCompute PIPELINE
ONLY WHAT’S NECESSARY
API designed for compute programming
‒ Interoperability with DirectX
Pipeline is much simpler
‒ No need to render triangles
‒ Bind input and output then call Dispatch()
SRVs
Compute Shader
UAVs
6 | DirectCompute in Gaming| NOVEMBER 15 2013 | AMD DEVELOPER SUMMIT
7. DirectCompute FEATURES
MORE REASONS TO USE DirectCompute
Structured Buffers
‒ Maps better to general purpose data structures
Append/Consume
‒ Fast for non order dependent i/o
Atomics, Barriers
‒ Synchronization for finer grain thread control
Thread Group Shared Memory
‒ Fast on-chip local memory shared between threads in a group
‒ Great for intermediate results
7 | DirectCompute in Gaming| NOVEMBER 15 2013 | AMD DEVELOPER SUMMIT
8. DISPATCH
THREAD GROUP ORGANIZATION
Threads are organized into Thread Groups
Each thread is executing an instance of the compute shader code
ID3D11DeviceContext::Dispatch( Dx, Dy, Dz )
‒ Example: Dispatch(4,3,2) => 24 thread groups
0,0,0
1,0,0
2,0,0
3,0,0
0,0,1
1,0,1
2,0,1
3,0,1
2,1,0
0,1,0
1,1,0
3,1,0
0,1,1
1,1,1
2,1,1
3,1,1
0,2,0
1,2,0
2,2,0
3,2,0
0,2,1
1,2,1
2,2,1
3,2,1
8 | DirectCompute in Gaming| NOVEMBER 15 2013 | AMD DEVELOPER SUMMIT
9. THREAD GROUP
ORGANIZATION OF THREADS WITHIN A THREAD GROUP
Threads in a group are organized in an array
‒ For full screen rendering you can think of a thread group as a tile on the screen, and the thread as a pixel
The compute shader HLSL code declares the thread layout
‒ [numthreads(Tx, Ty, Tz)]
‒ Example: [numthreads(8, 4, 2)] => 64 threads per thread group
SystemValues provide information about the current thread
‒ SV_GroupID = thread group address, SV_GroupThreadID = thread address relative to thread group
0,0,0 1,0,0 2,0,0 3,0,0 4,0,0 5,0,0 6,0,0 7,0,0
0,0,1 1,0,1 2,0,1 3,0,1 4,0,1 5,0,1 6,0,1 7,0,1
0,1,0 1,1,0 2,1,0 3,1,0 4,1,0 5,1,0 6,1,0 7,1,0
0,1,1 1,1,1 2,1,1 3,1,1 4,1,1 5,1,1 6,1,1 7,1,1
0,2,0 1,2,0 2,2,0 3,2,0 4,2,0 5,2,0 6,2,0 7,2,0
0,2,1 1,2,1 2,2,1 3,2,1 4,2,1 5,2,1 6,2,1 7,2,1
0,3,0 1,3,0 2,3,0 3,3,0 4,3,0 5,3,0 6,3,0 7,3,0
0,3,1 1,3,1 2,3,1 3,3,1 4,3,1 5,3,1 6,3,1 7,3,1
9 | DirectCompute in Gaming| NOVEMBER 15 2013 | AMD DEVELOPER SUMMIT
10. DirectCompute SETUP
C CODE TO SETUP COMPUTE SHADER EXECUTION
Create the resources
pd3dDevice->CreateBuffer(&Desc, NULL, &pCBCSPerFrame);
pd3dDevice->CreateBuffer(&bufferDesc, NULL, &pRWBuffer));
10 | DirectCompute in Gaming| NOVEMBER 15 2013 | AMD DEVELOPER SUMMIT
11. DirectCompute SETUP
C CODE TO SETUP COMPUTE SHADER EXECUTION
Create the resources
Create the views
pd3dDevice->CreateUnorderedAccessView(pRWBuffer, &UAVDesc, &pUAV));
11 | DirectCompute in Gaming| NOVEMBER 15 2013 | AMD DEVELOPER SUMMIT
12. DirectCompute SETUP
C CODE TO SETUP COMPUTE SHADER EXECUTION
Create the resources
Create the views
Compile the compute shader
CompileShaderFromFile( L“myComputeShader.hlsl", "CSMain", "cs_5_0", &pBlob )
pd3dDevice->CreateComputeShader( pBlob, . . . , pComputeShader );
12 | DirectCompute in Gaming| NOVEMBER 15 2013 | AMD DEVELOPER SUMMIT
13. DirectCompute SETUP
C CODE TO SETUP COMPUTE SHADER EXECUTION
Create the resources
Create the views
Compile the compute shader
Bind the resources
pd3dContext->CSSetConstantBuffers(0, 1, &m_pCBCSPerFrame);
ID3D11ShaderResourceView* ppSRV[1] = {pUAV};
pd3dContext->CSSetShaderResources( 0, 1, ppSRV);
13 | DirectCompute in Gaming| NOVEMBER 15 2013 | AMD DEVELOPER SUMMIT
14. DirectCompute SETUP
C CODE TO SETUP COMPUTE SHADER EXECUTION
Create the resources
Create the views
Compile the compute shader
Bind the resources
Set the shader
pd3dContext->CSSetShader(pComputeShader , NULL, 0 )
14 | DirectCompute in Gaming| NOVEMBER 15 2013 | AMD DEVELOPER SUMMIT
15. DirectCompute SETUP
C CODE TO SETUP COMPUTE SHADER EXECUTION
Create the resources
Create the views
Compile the compute shader
Bind the resources
Set the shader
Go!
pd3dContext->Dispatch(numOfGroupsX, numOfGroupsY, 1);
15 | DirectCompute in Gaming| NOVEMBER 15 2013 | AMD DEVELOPER SUMMIT
16. COMPUTE SHADER CODE
IMPORTANT ADDITIONS TO HLSL FOR COMPUTE
numthreads
‒ Defines the number of threads in a thread group
‒ Put this right before the definition of the compute shader
groupshared float4 sharedPos[THREAD_GROUP_SIZE];
[numthreads(THREAD_GROUP_SIZE, 1, 1)]
void MyComputeShader(uint GIndex : SV_GroupIndex)
{
…
sharedPos[GIndex] = gThreadData[myIndex];
GroupMemoryBarrierWithGroupSync();
InterlockedExchange(myUAV[loc], newVal, oldVal);
}
16 | DirectCompute in Gaming| NOVEMBER 15 2013 | AMD DEVELOPER SUMMIT
17. COMPUTE SHADER CODE
IMPORTANT ADDITIONS TO HLSL FOR COMPUTE (CONTINUED)
Thread Group Shared Memory
‒ Variables that are stored in memory that is shared between threads in a group (up to 32K bytes per group)
‒ Use the groupshared modifier in front of the variable declaration
groupshared float4 sharedPos[THREAD_GROUP_SIZE];
[numthreads(THREAD_GROUP_SIZE, 1, 1)]
void MyComputeShader(uint GIndex : SV_GroupIndex)
{
…
sharedPos[GIndex] = gThreadData[myIndex];
GroupMemoryBarrierWithGroupSync();
InterlockedExchange(myUAV[loc], newVal, oldVal);
}
17 | DirectCompute in Gaming| NOVEMBER 15 2013 | AMD DEVELOPER SUMMIT
18. COMPUTE SHADER CODE
IMPORTANT ADDITIONS TO HLSL FOR COMPUTE (CONTINUED)
System Values that can be used in a Compute Shader
‒ SV_GroupID , SV_GroupThreadID , SV_DispatchThreadID , SV_GroupIndex
‒ The system values tell the compute shader what group and what thread it’s currently working on.
groupshared float4 sharedPos[THREAD_GROUP_SIZE];
[numthreads(THREAD_GROUP_SIZE, 1, 1)]
void MyComputeShader(uint GIndex : SV_GroupIndex)
{
…
groupSharedMemVar[GIndex] = gThreadData[myIndex];
GroupMemoryBarrierWithGroupSync();
InterlockedExchange(myUAV[loc], newVal, oldVal);
}
18 | DirectCompute in Gaming| NOVEMBER 15 2013 | AMD DEVELOPER SUMMIT
19. COMPUTE SHADER CODE
IMPORTANT ADDITIONS TO HLSL FOR COMPUTE (CONTINUED)
Synchronization
‒ Barriers
‒ GroupMemoryBarrier(), GroupMemoryBarrierWithGroupSync()
‒ Blocks execution until threads are synchronized
groupshared float4 sharedPos[THREAD_GROUP_SIZE];
[numthreads(THREAD_GROUP_SIZE, 1, 1)]
void MyComputeShader(uint GIndex : SV_GroupIndex)
{
…
sharedPos[GIndex] = gThreadData[myIndex];
GroupMemoryBarrierWithGroupSync();
InterlockedExchange(myUAV[loc], newVal, oldVal);
}
19 | DirectCompute in Gaming| NOVEMBER 15 2013 | AMD DEVELOPER SUMMIT
20. COMPUTE SHADER CODE
IMPORTANT ADDITIONS TO HLSL FOR COMPUTE (CONTINUED)
Synchronization
‒ Atomics
‒ “Interlock” versions of Add, Min, Max, Or, And, Xor, CompareStore, and Exchange
‒ Guarantee exclusive access to shared memory
groupshared float4 sharedPos[THREAD_GROUP_SIZE];
[numthreads(THREAD_GROUP_SIZE, 1, 1)]
void MyComputeShader(uint GIndex : SV_GroupIndex)
{
…
sharedPos[GIndex] = gThreadData[myIndex];
GroupMemoryBarrierWithGroupSync();
InterlockedExchange(myUAV[loc], newVal, oldVal);
}
20 | DirectCompute in Gaming| NOVEMBER 15 2013 | AMD DEVELOPER SUMMIT
22. GCN REFRESHER
COMPUTE UNIT
Basic GPU building block
‒ R9 290x has 44 Compute Units
(4) 16-wide SIMDs that can execute
instructions from multiple threads
Branch &
Message Unit
Scheduler
Vector Units
(4x SIMD-16)
Scalar Unit
Texture Filter
Units (4)
Texture Fetch
Load / Store
Units (16)
‒ Each SIMD has 64KB of vector general purpose
register (VGPR) memory
16 Texture Fetch (load/store) Units
‒ 16KB L1 cache
One Scalar Unit
Vector Registers
(4x 64KB)
Local Data Share
(64KB)
Scalar Registers
(8KB)
‒ 8KB of Scalar GPR memory
Local Data Share
‒ 64K shared memory
22 | DirectCompute in Gaming| NOVEMBER 15 2013 | AMD DEVELOPER SUMMIT
GCN Compute Unit
L1 Cache
(16KB)
23. WAVEFRONTS
HOW THREADS EXECUTE ON COMPUTE UNITS
A wavefront consists of 4 batches of threads
‒ Execution is time-sliced to hide latency
Since there are 16 ALUs per SIMD, the size of a
wavefront is 4 x 16 = 64 threads
Time (clocks)
Batch 1
Batch 3
Batch 4
Stall
Each SIMD can keep track of 10 wavefronts
‒ 40 wavefronts per CU = 2560 threads
‒ For the R9 290x, that’s a total of 44 x 2560 =
112,640 threads in flight!
Batch 2
Stall
Stall
Runnable
Stall
Runnable
Done!
Runnable
Done!
Runnable
Done!
Done!
23 | DirectCompute in Gaming| NOVEMBER 15 2013 | AMD DEVELOPER SUMMIT
24. GCN AND DirectCompute
HOW DirectCompute Maps to the GPU
DirectCompute thread groups correspond to groups of threads running on a Compute Unit
‒ Choose a thread group size that works well with the hardare
Thread Group Shared Memory is stored in the Compute Unit’s Local Data Share (LDS)
‒ 4 SIMDs (64 ALUs) are all sharing the same LDS
‒ Barriers and atomics synchronize access to this storage
24 | DirectCompute in Gaming| NOVEMBER 15 2013 | AMD DEVELOPER SUMMIT
25. OPTIMIZE FOR THE HARDWARE
IMPORTANT THINGS TO CONSIDER WHEN DESIGNING A COMPUTE SHADER
Thread Group Size
‒ Since there are 64 threads per wavefront, make the thread group size multiples of 64
‒ If [numthreads(x,y,z)] then (x * y * z) should be a multiple of 64
‒ If the thread group size is not a multiple of 64, the SIMDs will still run 64 threads per wavefront
‒ Whether they’re all used or not!
‒ Start with 64 threads per group and then see if higher multiples improve performance.
LDS memory access is faster than off-chip memory
‒ Use thread group shared memory for storing intermediate results instead of writing out to the UAV
‒ Thread group shared memory can also be used to eliminate unnecessary fetches
‒ For example, discrete convolutions sample many of the same locations when the kernel moves to an
adjacent pixel
‒ TGSM is limited to 32K – pack the data to save space
25 | DirectCompute in Gaming| NOVEMBER 15 2013 | AMD DEVELOPER SUMMIT
26. OPTIMIZE FOR THE HARDWARE
THREAD GROUP SHARED MEMORY ACCESS
Avoid Bank Conflicts
‒ Thread Group Shared Memory is stored in LDS which is organized in 32 banks
‒ If one thread accesses a location and another thread accesses location + (n x 32), a bank conflict will occur
‒ The hardware can resolve this, but at the cost of performance
BANK
0
1
2
3
4
…
31
0
1
2
3
ADDRESS
0
1
2
3
4
…
31
32
33
34
35
26 | DirectCompute in Gaming| NOVEMBER 15 2013 | AMD DEVELOPER SUMMIT
27. OPTIMIZE FOR THE HARDWARE
GPR USAGE
Local variables are stored in general purpose registers (GPRs)
‒ There’s a limit of 64K bytes of storage for vector registers per SIMD
‒ The register memory has to be shared between wavefronts, so too many GPRS can reduce the number of
wavefronts
‒ Maximizing parallelism is critical to compute shader performance (and shader performance in general)
‒ The more wavefronts that can run, the more parallelism you can get
‒ Using fewer local variables can help, but look at the DirectX assembly code to get a better idea of how many
registers are being used.
GCN VGPR Count <=24 28 32 36 40 48 64 84 <= 128 > 128
Max
Waves/SIMD
10 9
27 | DirectCompute in Gaming| NOVEMBER 15 2013 | AMD DEVELOPER SUMMIT
8
7
6
5
4
3
2
1
30. SEPARABLE FILTER
TWO PASS DISCRETE CONVOLUTIONS
Many useful filters are separable
‒ Typical example is Gaussian filter for a high quality image blur – used often in post-processing
Separable Algorithm
‒ Run the first pass in the horizontal direction and store the results in an intermediate buffer
‒ Run the second pass on the intermediate buffer in the vertical direction
Source
RT
Intermediate
RT
Horizontal Pass
30 | DirectCompute in Gaming| NOVEMBER 15 2013 | AMD DEVELOPER SUMMIT
Destination RT
Vertical Pass
31. SEPARABLE FILTER
COMPUTE SHADER OPTIMIZATION
Use Thread Group Shared Memory to cache previously sampled values
Naïve approach is to load a row of texels into TGSM at once, then calculate each pixel value
128 threads load 128 texels
...........
Kernel Radius
128 – ( Kernel Radius * 2 ) threads compute results
Redundant compute threads
31 | DirectCompute in Gaming| NOVEMBER 15 2013 | AMD DEVELOPER SUMMIT
32. SEPARABLE FILTER
BETTER OPTIMIZATION
Make some of the threads load more texels
‒ We only want as many threads as there are pixels
‒ However we need more texels than pixles since the kernel extends beyond the pixels
‒ Just have some of the threads load more pixels
Process multiple lines per thread group
‒ Keeps the thread group size a multiple of 64
64 threads load 256 texels
...........
...........
Kernel Radius
64 threads compute 256 results
32 | DirectCompute in Gaming| NOVEMBER 15 2013 | AMD DEVELOPER SUMMIT
Kernel Radius * 4 threads
load 1 extra texel each
34. TILED LIGHTING
COMPUTE SHADER LIGHT CULLING
Break up the screen into tiles
Create a list of lights for each tile
1
3
Only render with lights touching the tile
[1]
34 | DirectCompute in Gaming| NOVEMBER 15 2013 | AMD DEVELOPER SUMMIT
2
[1,2,3]
[2,3]
35. TILED LIGHTING
TILED FRUSTUMS
Divide screen
into tiles
Fit asymmetric
frustum around
each tile
Tile0
Tile1
35 | DirectCompute in Gaming| NOVEMBER 15 2013 | AMD DEVELOPER SUMMIT
Tile2
Tile3
36. TILED LIGHTING
CREATE FRONT AND BACK PLANES
Use z buffer from depth pre-pass as input
Find min and max depth per tile
Use this frustum for intersection testing
36 | DirectCompute in Gaming| NOVEMBER 15 2013 | AMD DEVELOPER SUMMIT
37. TILED LIGHTING
CREATE PER TILE LIGHT LIST (PART 1)
Test each light against the frustum
Light0
•Position
•Radius
Light1
•Position
•Radius
Light2
•Position
•Radius
Light3
•Position
•Radius
Light4
•Position
•Radius
…
•Position
Light10 •Radius
37 | DirectCompute in Gaming| NOVEMBER 15 2013 | AMD DEVELOPER SUMMIT
38. TILED LIGHTING
CREATE PER TILE LIGHT LIST (PART 2)
For each light that intersects the
frustum
Light0
‒ Write the index of the light in the
per-tile list
Index0 •Count
Index1 •1
Index2 •4
Index3 •Empty
Index4 •Empty
…
38 | DirectCompute in Gaming| NOVEMBER 15 2013 | AMD DEVELOPER SUMMIT
1
4
•Position
•Radius
Light1
•Position
•Radius
Light2
•Position
•Radius
Light3
•Position
•Radius
Light4
•Position
•Radius
…
•Position
Light10 •Radius
39. TILED LIGHTING
COMPUTE SHADER
Implemented using a single compute shader
A thread group is executed per tile
‒ e.g. [numthreads(16,16,1)] for 16x16 tile size
Build frustum
Calculate Z extent
‒ Each thread calculates Z extent in parallel
256 lights are culled in parallel (for 16x16 tile size)
Indices of intersecting lights are written to thread group shared memory (TGSM)
‒ groupshared uint ldsLightIdx[MAX_NUM_LIGHTS_PER_TILE];
Then export to global light index list
‒ RWBuffer<uint> g_PerTileLightIndexBufferOut : register( u0 );
39 | DirectCompute in Gaming| NOVEMBER 15 2013 | AMD DEVELOPER SUMMIT
41. TressFX PHYSICS
PHYSICALLY BASED HAIR SIMULATION
Responds to natural gravity
Global constraints to maintain various hair styles
Collision detection with head and body
Supports wind and other forces
Artist-friendly
‒ Programmatic control over attributes
‒ Can tweak for different results
The entire simulation is done on Compute Shaders
41 | DirectCompute in Gaming| NOVEMBER 15 2013 | AMD DEVELOPER SUMMIT
43. TressFX PHYSICS
DATA FLOW
CPU
GPU
Integration and
Global Shapes
CS
Raw Vertex Data
(CPU Memory)
Hair Vertex Data
UAV
Vertex data is only
loaded once during
life of the program.
43 | DirectCompute in Gaming| NOVEMBER 15 2013 | AMD DEVELOPER SUMMIT
Local Shapes
Constraint
CS
Length
Constraints and
Wind
CS
Collision and
Tangents
CS
Hair Render
Vertex Shader
Vertex data
stays on the GPU!
44. TressFX PHYSICS
BENEFITS OF USING DirectCompute TO SIMULATE HAIR
Interoperability with Direct3D
‒ UAVs can be shared with rendering so data can stay on the GPU
Massively Parallel
‒ Thousands of hair vertices that can be animated in parallel
‒ Each thread in the thread group represents a vertex (or strand)
Calculations done on data stored locally on chip
‒ Vertex data is loaded into Thread Group Shared Memory before calculations begin
//-----------------------------// Copy data into shared memory
//-----------------------------if (localVertexIndex < numVerticesInTheStrand )
{
currentPos = sharedPos[indexForSharedMem] = g_HairVertexPositions[globalVertexIndex];
initialPos = g_InitialHairPositions[globalVertexIndex];
initialPos.xyz = mul(float4( initialPos.xyz, 1), g_ModelTransformForHead).xyz;
}
GroupMemoryBarrierWithGroupSync();
44 | DirectCompute in Gaming| NOVEMBER 15 2013 | AMD DEVELOPER SUMMIT
45. DirectCompute in Games
OTHER USES
HDAO+
‒ New version of our High Definition Ambient Occlusion
‒ Uses TGSM for storing samples
Bokeh Depth of Field
‒ Used in the Frostbite 3 engine for rendering Bokeh
shapes where “hotspots” are located.
Global Illumination
‒ Geomerics
Scene Management
Voxels
‒ Sparse Voxel Trees
‒ Octrees, Quadtrees
Particle Systems
45 | DirectCompute in Gaming| NOVEMBER 15 2013 | AMD DEVELOPER SUMMIT
46. Summary of DirectCompute in Games
WHEN TO USE Direct Compute
Parallelism
‒ Some algorithms can be highly parallelized
Repetitive Fetches
‒ Caching values in TGSM can be a big win
Results used in the graphics pipeline
‒ DirectCompute can reduce transfers between GPU and CPU
Existing algorithms already optimized for DirectCompute
‒ Separable Filters
‒ Tiled Lighting
‒ Hair Physics
‒ HDAO+
‒ We have samples you can use!
http://developer.amd.com/tools-and-sdks/graphics-development/amd-radeon-sdk/
46 | DirectCompute in Gaming| NOVEMBER 15 2013 | AMD DEVELOPER SUMMIT
47. QUESTIONS?
Ask now, or send questions to:
bill.bilodeau@amd.com
47 | DirectCompute in Gaming| NOVEMBER 15 2013 | AMD DEVELOPER SUMMIT