Microsoft 64-bit Training
“The ArtinSoft crew of trainers and proctors did a fantastic job in educating and helping some of our most critical partners to understand the benefits of 64-bit and how to apply them to their applications.”
Volker Will
Microsoft
“It boils your mind! Very good brain stress load... [the labs] focused on many ancillary issues related to 64-bit porting, not just theory.”
Alex Vinnik
CyberTrader
Our Microsoft 64-bit Training has helped migrate or initiate the migration of over 200 applications for companies such as Boeing, Hyperion, Schlumberger, IBM, Motorola, Philips, Pervasive, Symantec, CyberTrader, Vision Technologies, and many others. Below is a detailed description of the course and the benefits that it provides.
Course Description
Our 64-bit Training Course is an intensive program that will help you get up to speed regarding 64-bit programming on Windows 64-bit. The course features a combination of theory and practical, hands-on exercises in Windows 64-bit, designed for today’s innovative programmer. During the training, you will carry out a series of labs that will help achieve a broad understanding of this new technology. In 3 short days, you will be exposed to the full breadth of necessary tasks required when upgrading programming languages to be 64-bit compliant.
What You’ll Learn in Class
- Differences between the diverse 64-bit architectures available
- What you need to build 64-bit binaries in Windows
- How to successfully configure existing and new tools to aid you in 64-bit development
- The challenges waiting ahead when working with C / C++ code in Windows 64-bit
- The new advantages of SQL Server 2005 64-bit
- How to upgrade managed code to 64-bit
- How to work around 32-bit dependencies when moving to 64-bit
- How the WoW64 works and the different ways you can manipulate it
Who Needs to Attend
Any programmer who is currently trying to find out the differences when programming for Windows 64-bit and wants to find out how to write efficient 64-bit code and how to port his existing code to the new platform.
Prerequisites
- Although not required, programming experience in C, C++, Managed Code is recommended
- Familiarity with an application’s life cycle
- General knowledge of COM, DCOM, COM+ is also recommended
Agenda
64-bit Training – Module Description
Sessions
Our sessions are designed to provide you with an adequate knowledge base to successfully carry out the hands-on-labs. These sessions are short and to the point; we want you to spend most of the time working on code instead of simply listening to presentations.
Introduction to Windows 64-bit
Our subject matter experts will begin with a 64-bit introductory explanation that will provide you with the latest information regarding the current status of most 64-bit applications. We will also talk about case studies and migration issues, and we will offer some valuable advice for the long term.
SQL Server 2005 64-bit
This session is designed to teach you about the new features available in the 64-bit version of SQL Server 2005. If you’re in doubt about whether to select Itanium or EM64T as your database engine, this session will help you with that decision. We will also discuss how SQL Server 2005 is integrated with the CLR and the advantages that this offers.
Hands-on Labs
During our training, you will spend 90% of the time in front of a computer working out issues in 64-bit. Our hands-on-labs will keep you busy with enough theory and exercises to help you understand most of the 64-bit issues and gotchas in no time.
1. Migrating C/C++ Applications to Windows-64
1.1. The Essential Build Environment: If you’ve never built a 64-bit program, this module will show you the basics of how to do so. We will teach you how to compile with the PSDK as well as with Visual Studio 2005.
1.2. Pointer Truncation: A lurking danger in 64-bit, pointer truncation can cause your application to crash in the blink of an eye. After this session, you will know how to spot these problems and how to effectively solve them.
1.3. Virtual Address Space: Sometimes, a 64-bit port does not mean that you will have to fix all pointer truncations. By using the VAS method, your code will be pointer-truncation immune.
1.4. Padding & Packing: Now that pointers are 64-bit, variables in memory are sometimes packed differently. In this section, we will show you the differences and explain how to use macros to avoid problems when making off-set assumptions with compound data types.
1.5. Link Time Code Generation & Profile Guided Optimization: In this module, you will learn how to effectively optimize code with these two different approaches. Enabling these optimization techniques will allow you to breathe new life to your application.
2. Managed Code in Windows 64-bit
2.1. Migrating 64-bit Managed Code: You will learn to build a 64-bit binary in managed code from scratch and deal with third party libraries that your managed application may be invoking.
2.2. Overview of x86, x64, IA64 and AnyCPU Assemblies: In this module, you will learn the differences from the different 64-bit binaries that can be created with Visual Studio 2005.
2.3. Upgrading a Full-Blown Managed Code Application: Once you have grasped the know-how to build a 64-bit managed code application, we will put you to the test and have you upgrade a full-blown 32-bit .NET application.
3. Preserving 32-bit Dependencies on Windows 64-bit
3.1. Dealing with a COM+ DLL: This module will help you get over your COM DLL dependencies.
3.2. Upgrading a DLL: We will show you yet another way to preserve your 32-bit dependencies by building a COM wrapper around a 32-bit DLL and invoke it from a 64-bit application.
3.3. Using a Surrogate Process as a Wrapper: Our last method to preserve dependencies will show you how to use DLLHost.exe as a wrapper for a COM DLL.
4. The WoW64 Execution Layer
4.1. File System Redirection: In this module, you will learn about the ways in which 32-bit and 64-bit applications will now access system folders in Windows 64-bit.
4.2. Registry Redirection: In this session, we will talk about the new registry changes that make it possible for a 32-bit and 64-bit application to keep their own settings.
4.3. Registry Reflection: We have structured several exercises to show you how to access cross-registry keys and learn how registry reflection enables COM LocalServers to co-exist.
4.4. The WoW64 Execution Layer: The WoW64 API: There are several APIs that can be used to manipulate the WoW64. We will show you the cases in which these might be used.
4.5. COM and WoW64: Can different bit architectures COM DLLs coexist with one another? This quick session will give you the answer and clear any doubts that you might have regarding this topic.
5. Optimizing 64-bit Applications
5.1. Introduction to the Mandelbrot Set: We will go through some of the optimization techniques that can be performed in 64-bit using a sample application called the Mandelbrot set. This section covers a review of the application that will be optimized.
5.2. Dependency Chains: Dependency chains can cause your code to perform slower than it should when running on an x64 system. We will look at how to identify dependency chains and ways to optimize them to speed up your code.
5.3. Optimization With Intrinsics Using SSE: In this section, we will be adding compiler intrinsics to explicitly use the SSE registers and instructions to perform the Mandelbrot calculations. This will speed up performance.
5.4. Using CodeAnalyst: In this exercise, we will review the performance of our Mandelblaze application using the Code Analyst tool from AMD and then make further changes to the code to improve performance.
5.5. Adding OpenMP: Multi-threaded code can take advantage of multiple CPUs or cores. Because dual-core processors are becoming common, all performance-critical applications urgently need to be updated to implement multi-threading. Using OpenMP with the Microsoft compiler, we will add multi-threaded capabilities to the Mandelbrot set application.
6. Intel Compilers: The Intel compiler has some advanced features that can help you take your application to next level. Whether you are building for 32-bit or 64-bit, we will show you how to make the best use of modern computer architecture by using advanced techniques such as Vectorization to optimize your application. We also discuss compiler switches (both Microsoft and Intel) to squeeze out the best performance without sacrificing time.
7. VTune: It is often unwise to optimize your code if you do not know which parts of your code need optimizing the most. Meet VTune, Intel’s fully-featured performance analysis software. In this session, we explain what VTune is and how to use it. You will follow a series of labs to help you get acquainted with the soft-ware so you can start using it when optimizing your applications. We will talk about advanced topics such as how to find alignment faults using Intel’s performance profiler.
8. Multi-Core: Given that CPU speed increase is not as drastic as it was in previous years, developers and chip makes have opted for alternate ways to optimize applications. These days, chip makers are releasing CPUs with multiple cores on each processor. In this lab, we show you how to take advantage of OpenMP to convert your serialized application into a full, multi-threaded one. Attendees have often seen a speed increase of up to 50% by writing as little as two lines of code to take advantage of OpenMP.