Matrox Imaging Library (MIL) 9.0
Total Page:16
File Type:pdf, Size:1020Kb
------------------------------------------------------------------------------- Matrox Imaging Library (MIL) 9.0. MIL 9.0 Update 35 (GPU Processing) Release Notes (July 2011) (c) Copyright Matrox Electronic Systems Ltd., 1992-2011 ------------------------------------------------------------------------------- Main table of contents Section 1 : Differences between MIL 9.0 Update 35 and MIL 9.0 Update 30 Section 2 : Differences between MIL 9.0 Update 30 and MIL 9.0 Update 14 Section 3 : Differences between MIL 9.0 Update 14 and MIL 9.0 Update 3 Section 4 : Differences between MIL 9.0 Update 3 and MIL 9.0 Section 5 : MIL 9.0 GPU (Graphics Processing Unit) accelerations ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Section 1: Differences between MIL 9.0 Update 35 and MIL 9.0 Update 30 Table of Contents for Section 1 1. Overview 2. GPU acceleration restrictions 3. New GPU functionalities and improvements 3.1. GPU accelerated image processing operations 3.1.1. MimHistogram 4. GPU specific examples 4.1. MilInteropWithCUDA (Updated) 4.2. MilInteropWithDX (Updated) 4.3. MilInteropWithOpenCL (New) 5. Is my application running on the GPU? 5.1. Deactivate MIL Host processing compensation 5.2. Windows SysInternals Process Explorer v15.0 (c) tool 6. Do MIL GPU results and precision change between updates? 6.1. MIL GPU algortihms 6.2. Graphics card firmware 7. Fixed bugs 7.1. All modules (DX9, DX10, DX11) 8. GPU boards 8.1. List of tested GPUs 8.2. GPU board limitations ------------------------------------------------------------------------------- 1. Overview - New DirectX 11 and DirectCompute support (shader models 5.0) - Minimal requirement: Microsoft Windows Vista with SP2 (or later), Windows 7 Note: Make sure that Windows Update 971512 (Windows Graphics, Imaging, and XPS Library) is installed to use DirectX 11 and Direct Compute in Windows Vista with SP2. (See http://support.microsoft.com/kb/971512) - General performance improvements and bug fixes (DirectX 9 and 10) - Interoperability support with OpenCL (through DX10/OpenCL interoperability) - See MilInteropWithOpenCL specific example 2. GPU acceleration restrictions - Before MIL 9.0 Udpate 35, a monitor had to be connected to a graphics card to benefit from GPU acceleration. Installing MIL 9.0 Update 35 allows GPU acceleration on a graphics card with or without its outputs connected to a monitor. Requirements: - DX10 or DX11 - Windows Vista with SP2 or later, Windows 7 - WDDM 1.1 compatible graphics card driver Note: Make sure that Windows Update 971512 (Windows Graphics, Imaging, and XPS Library) is installed to have WDDM 1.1 driver model support in Windows Vista with SP2. (See http://support.microsoft.com/kb/971512) - DirectX versions supported by MIL GPU in your system are those supported by all detected graphics adapters. If, for example, your system is equipped with: - 1 Intel HD 2000 (Intel Core-i7 2600 integrated GPU) - 1 AMD Radeon HD 6970 (discrete graphics adapter) - 1 NVIDIA GeForce GTX 480 (discrete graphics adapter) DirectX 9 and 10 will be supported by MIL GPU. To get DirectX 11 support, you would have to disable the Intel integrated GPU (through a BIOS option in this example). - M_MAPPABLE buffer attribute is no longer supported. This flag was allowed for Host memory GPU buffers (M_HOST_MEMORY) but it will now generate a MIL error. 3. New GPU functionalities and improvements 3.1. GPU accelerated image processing operations 3.1.1. MimHistogram (DX11) - Supports M_MONO8, M_MONO16, floating-point and packed-binary source buffers. - Special very fast optimization for 8-bit histograms. 4. GPU specific examples Visual Studio solutions including all projects for GPU specific examples were removed for compatibility purposes. Go to each specific example folder to open individual solutions and projects. 4.1. MilInteropWithCUDA - Updated from original version in MIL 9.0 update 14 to support Windows 7 through NVIDIA CUDA toolkit 4.0 - Support for Visual Studio 2003 has been removed (NVIDIA CUDA toolkit 4.0 restriction) - Support for Visual Studio 2008 has been added This example demonstrates how it is possible to apply custom CUDA kernels on MIL buffers when needed, and how MIL handles everything else from buffer allocations to onscreen display. The second part of the example shows the same processing entirely done with MIL. Requirements: - An NVIDIA CUDA-compatible GPU - Install latest GPU driver - Install latest Microsoft DirectX SDK - Install NVIDIA CUDA Toolkit 4.0 4.2. MilInteropWithDX - Updated from orignal example MilInteropWithDX9 included in MIL 9.0 update 14. This example demonstrates how it is possible to apply custom DirectX 9 and 10, or DirectCompute shaders on MIL buffers when needed, and how MIL handles everything else from buffer allocations to onscreen display. The second part of the example shows the same processing entirely done with MIL. Requirements: - Install latest GPU driver - Install latest Microsoft DirectX SDK Note: Microsoft Visual Studio 2005 (or later) and a DirectX 10 compatible GPU are needed to run the DirectX 10 interoperability functionality. Note: Microsoft Visual Studio 2008 (or later) and a DirectX 11 compatible GPU are needed to run the DirectCompute interoperability functionality. 4.3. MilInteropWithOpenCL This new example demonstrates how it is possible to apply custom OpenCL kernels on MIL buffers when needed, and how MIL handles everything else from buffer allocations to onscreen display. The second part of the example shows the same processing entirely done with MIL. Requirements: - Windows Vista and later - An OpenCL-compatible GPU (OpenCL 1.1) - Install latest GPU driver - Install latest Microsoft DirectX SDK - Install NVIDIA CUDA Toolkit 4.0 (for NVIDIA GPUs) or - Install AMD APP SDK 2.5 (for AMD GPUs) 5. Is my application running on the GPU? MIL currently does not provide an explicit way to know if a function was executed on the GPU or on the Host CPU. This information must be obtained through two implicit means: the first one is achieved with MIL, while the second one requires a third-party tool. 5.1. Deactivate MIL Host processing compensation Add this call in your application to disable Host compensation: MappControl(M_PROCESSING, M_COMPENSATION_DISABLE); This will cause all following processing calls that cannot be performed by the GPU to generate a MIL error. Refer to MappControl documentation for more information on Host processing compensation. 5.2. Windows SysInternals Process Explorer v15.0 (c) tool (http://technet.microsoft.com/en-us/sysinternals/bb896653) Beginning with version 15.0, the Process Explorer (c) tool includes a GPU usage meter similar to the Windows Task Manager performance meters. This tool can be used to determine if the GPU usage increases when a specific MIL application or function is running. According to the tool documentation, the GPU usage meter is supported on Windows Vista and later only. Go to the Windows SysInternals website for download and documentation. 6. Do MIL GPU results and precision change between updates? 6.1. MIL GPU algortihms When GPU support for a function is added in a MIL GPU update, it is possible that its results and precision will be different from its MIL Host counterpart. It is hardly possible to guarantee identical results with different hardware (CPU, GPU, FPGA, ...). However, once GPU support for a function is added in a MIL GPU update, the results and precision of this function should not change in following updates (unless stated otherwise through specific optimizations or bug fixes). 6.2. Graphics card firmware Some GPU functionalities are based on a firmware installed with your graphics card driver. While this firmware does not necessarily change with each driver version, some MIL GPU results could change between two graphics card driver versions. 7. Fixed bugs 7.1. All modules (DX9, DX10) - Fix: Now returning an explicit error when trying to allocate a remote GPU system and DMIL server is configured as a Windows Service. - Fix: MbufTransfer(M_CLEAR) could fail if destination buffer was already locked on a system different from GPU. - Fix: Internal DLLs are now unloaded when freeing the last allocated GPU system (MsysFree). - Fix: MimResize was compensated on Host if one of M_FAST or M_REGULAR flags was added to InterpolationMode parameter. - Fix: MimLutMap results were incorrect with a 16-bit monochrome source, and color LUT and destination. 8. GPU boards 8.1. List of tested GPUs See section 7.2 for known specific GPU issues and limitations. - OS: XP 32 - OS: XP 64 - OS: VISTA 32 - OS: VISTA 64 - OS: Windows 7 32 - OS: Windows 7 64 + ATI Radeon HD 4850 (latest tested driver: 11.5) + ATI Radeon HD 4870 (latest tested driver: 11.5) + ATI Radeon HD 5870 (latest tested driver: 11.5) + AMD Radeon HD 6970 (latest tested driver: 11.5) + AMD FirePro V7800 + AMD FirePro V8800 + NVIDIA GeForce 8500 GT (latest tested driver: 196.21) + NVIDIA GeForce 8600 GTS (latest tested driver: 196.21) + NVIDIA GeForce 8800 GT (latest tested driver: 196.21) + NVIDIA GeForce 8800 GTX (latest tested driver: 196.21) + NVIDIA GeForce GTX 280 (latest tested driver: 196.21) + NVIDIA GeForce GTX 285 (latest tested driver: 196.21) + NVIDIA GeForce GTS 450 (latest tested driver: 270.61) + NVIDIA GeForce GTX 480 (latest tested driver: 270.61) + NVIDIA Quadro 4000 + NVIDIA Quadro 6000 8.2. GPU board limitations - NVIDIA driver family 197.xx has shown instability issues in DirectX 10 (which is the default acceleration mode in Windows Vista and Windows 7). Revert to driver 196.21 if your MIL GPU application does not behave as expected. This issue does not affect DirectX 9 GPU acceleration. - Floating-point exceptions can occur in NVIDIA drivers for older cards (GeForce 8000 series), in DirectX 10.0 version of some functions on 64-bit Vista. Note that these occurrences are only possible if floating-point exceptions, which are usually disabled by default, are enabled in your application. - Your graphics card driver might not start if the BIOS option mapping PCI resources over 4 GB (64-bit IO mapping) is enabled.