Intel® Math Kernel Library for Windows OS ® User's Guide

Total Page:16

File Type:pdf, Size:1020Kb

Intel® Math Kernel Library for Windows OS ® User's Guide Intel® Math Kernel Library for Windows* Developer Guide Intel® MKL 2018 - Windows* Revision: 061 Legal Information Intel® Math Kernel Library for Windows* Developer Guide Contents Legal Information ................................................................................ 6 Getting Help and Support..................................................................... 7 Introducing the Intel® Math Kernel Library .......................................... 8 What's New ....................................................................................... 10 Notational Conventions...................................................................... 11 Related Information .......................................................................... 12 Chapter 1: Getting Started Checking Your Installation ........................................................................ 13 Setting Environment Variables................................................................... 13 Compiler Support .................................................................................... 14 Using Code Examples............................................................................... 15 Before You Begin Using the Intel(R) Math Kernel Library ............................... 15 Chapter 2: Structure of the Intel(R) Math Kernel Library Architecture Support................................................................................ 17 High-level Directory Structure ................................................................... 17 Layered Model Concept ............................................................................ 19 Chapter 3: Linking Your Application with the Intel(R) Math Kernel Library Linking Quick Start .................................................................................. 20 Using the /Qmkl Compiler Option ...................................................... 20 Automatically Linking a Project in the Visual Studio* Integrated Development Environment with Intel(R) MKL .................................. 21 Automatically Linking Your Microsoft Visual C/C++* Project with Intel® MKL.......................................................................... 21 Automatically Linking Your Intel® Visual Fortran Project with Intel® MKL.......................................................................... 21 Using the Single Dynamic Library ...................................................... 22 Selecting Libraries to Link with.......................................................... 22 Using the Link-line Advisor ............................................................... 23 Using the Command-line Link Tool..................................................... 23 Linking Examples .................................................................................... 23 Linking on IA-32 Architecture Systems............................................... 23 Linking on Intel(R) 64 Architecture Systems ....................................... 24 Linking in Detail ...................................................................................... 25 Dynamically Selecting the Interface and Threading Layer...................... 25 Linking with Interface Libraries ......................................................... 27 Using the cdecl and stdcall Interfaces ........................................ 27 Using the ILP64 Interface vs. LP64 Interface .............................. 28 Linking with Fortran 95 Interface Libraries.................................. 30 Linking with Threading Libraries ........................................................ 30 Linking with Computational Libraries.................................................. 31 Linking with Compiler Run-time Libraries............................................ 32 Linking with System Libraries............................................................ 33 Building Custom Dynamic-link Libraries ...................................................... 33 Using the Custom Dynamic-link Library Builder in the Command-line Mode ......................................................................................... 33 2 Contents Composing a List of Functions .......................................................... 35 Specifying Function Names............................................................... 35 Building a Custom Dynamic-link Library in the Visual Studio* Development System................................................................... 36 Distributing Your Custom Dynamic-link Library .................................... 37 Chapter 4: Managing Performance and Memory Improving Performance with Threading ...................................................... 38 OpenMP* Threaded Functions and Problems ....................................... 38 Functions Threaded with Intel® Threading Building Blocks ..................... 40 Avoiding Conflicts in the Execution Environment .................................. 41 Techniques to Set the Number of Threads........................................... 42 Setting the Number of Threads Using an OpenMP* Environment Variable ..................................................................................... 42 Changing the Number of OpenMP* Threads at Run Time....................... 43 Using Additional Threading Control .................................................... 45 Intel MKL-specific Environment Variables for OpenMP Threading Control .............................................................................. 45 MKL_DYNAMIC ....................................................................... 46 MKL_DOMAIN_NUM_THREADS.................................................. 47 MKL_NUM_STRIPES .................................................................... 48 Setting the Environment Variables for Threading Control .............. 49 Calling Intel MKL Functions from Multi-threaded Applications ................ 49 Using Intel® Hyper-Threading Technology ........................................... 51 Managing Multi-core Performance...................................................... 51 Improving Performance for Small Size Problems ......................................... 52 Using MKL_DIRECT_CALL in C Applications ......................................... 53 Using MKL_DIRECT_CALL in Fortran Applications ................................. 53 Limitations of the Direct Call ............................................................ 54 Other Tips and Techniques to Improve Performance ..................................... 54 Coding Techniques .......................................................................... 54 Improving Intel(R) MKL Performance on Specific Processors.................. 55 Operating on Denormals .................................................................. 55 Using Memory Functions........................................................................... 56 Memory Leaks in Intel MKL............................................................... 56 Redefining Memory Functions ........................................................... 56 Chapter 5: Language-specific Usage Options Using Language-Specific Interfaces with Intel(R) Math Kernel Library ............. 58 Interface Libraries and Modules......................................................... 58 Fortran 95 Interfaces to LAPACK and BLAS ......................................... 60 Compiler-dependent Functions and Fortran 90 Modules ........................ 60 Using the stdcall Calling Convention in C/C++..................................... 61 Compiling an Application that Calls the Intel(R) Math Kernel Library and Uses the CVF Calling Conventions............................................ 61 Mixed-language Programming with the Intel Math Kernel Library ................... 62 Calling LAPACK, BLAS, and CBLAS Routines from C/C++ Language Environments ............................................................................. 62 Using Complex Types in C/C++......................................................... 63 Calling BLAS Functions that Return the Complex Values in C/C++ Code.. 64 Chapter 6: Obtaining Numerically Reproducible Results Getting Started with Conditional Numerical Reproducibility ........................... 68 Specifying Code Branches......................................................................... 69 Reproducibility Conditions......................................................................... 70 3 Intel® Math Kernel Library for Windows* Developer Guide Setting the Environment Variable for Conditional Numerical Reproducibility ..... 71 Code Examples ....................................................................................... 71 Chapter 7: Coding Tips Example of Data Alignment....................................................................... 74 Using Predefined Preprocessor Symbols for Intel® MKL Version-Dependent Compilation ........................................................................................ 75 Chapter 8: Managing Output Using Intel MKL Verbose Mode .................................................................. 77 Version Information Line .................................................................. 77 Call Description Line ........................................................................ 78 Chapter 9: Working with the Intel® Math Kernel Library Cluster Software Message-Passing Interface Support............................................................ 80 Linking with Intel MKL Cluster Software.....................................................
Recommended publications
  • Using Intel® Math Kernel Library and Intel® Integrated Performance Primitives in the Microsoft* .NET* Framework
    Using Intel® MKL and Intel® IPP in Microsoft* .NET* Framework Using Intel® Math Kernel Library and Intel® Integrated Performance Primitives in the Microsoft* .NET* Framework Document Number: 323195-001US.pdf 1 Using Intel® MKL and Intel® IPP in Microsoft* .NET* Framework INFORMATION IN THIS DOCUMENT IS PROVIDED IN CONNECTION WITH INTEL® PRODUCTS. NO LICENSE, EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE, TO ANY INTELLECTUAL PROPERTY RIGHTS IS GRANTED BY THIS DOCUMENT. EXCEPT AS PROVIDED IN INTEL'S TERMS AND CONDITIONS OF SALE FOR SUCH PRODUCTS, INTEL ASSUMES NO LIABILITY WHATSOEVER, AND INTEL DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY, RELATING TO SALE AND/OR USE OF INTEL PRODUCTS INCLUDING LIABILITY OR WARRANTIES RELATING TO FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR INFRINGEMENT OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT. UNLESS OTHERWISE AGREED IN WRITING BY INTEL, THE INTEL PRODUCTS ARE NOT DESIGNED NOR INTENDED FOR ANY APPLICATION IN WHICH THE FAILURE OF THE INTEL PRODUCT COULD CREATE A SITUATION WHERE PERSONAL INJURY OR DEATH MAY OCCUR. Intel may make changes to specifications and product descriptions at any time, without notice. Designers must not rely on the absence or characteristics of any features or instructions marked "reserved" or "undefined." Intel reserves these for future definition and shall have no responsibility whatsoever for conflicts or incompatibilities arising from future changes to them. The information here is subject to change without notice. Do not finalize a design with this information. The products described in this document may contain design defects or errors known as errata which may cause the product to deviate from published specifications.
    [Show full text]
  • Red Hat Enterprise Linux 8 Security Hardening
    Red Hat Enterprise Linux 8 Security hardening Securing Red Hat Enterprise Linux 8 Last Updated: 2021-09-06 Red Hat Enterprise Linux 8 Security hardening Securing Red Hat Enterprise Linux 8 Legal Notice Copyright © 2021 Red Hat, Inc. The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/ . In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version. Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law. Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries. Linux ® is the registered trademark of Linus Torvalds in the United States and other countries. Java ® is a registered trademark of Oracle and/or its affiliates. XFS ® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries. MySQL ® is a registered trademark of MySQL AB in the United States, the European Union and other countries. Node.js ® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
    [Show full text]
  • Intel(R) Math Kernel Library for Linux* OS User's Guide
    Intel® Math Kernel Library for Linux* OS User's Guide MKL 10.3 - Linux* OS Document Number: 315930-012US Legal Information Legal Information INFORMATION IN THIS DOCUMENT IS PROVIDED IN CONNECTION WITH INTEL(R) PRODUCTS. NO LICENSE, EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE, TO ANY INTELLECTUAL PROPERTY RIGHTS IS GRANTED BY THIS DOCUMENT. EXCEPT AS PROVIDED IN INTEL'S TERMS AND CONDITIONS OF SALE FOR SUCH PRODUCTS, INTEL ASSUMES NO LIABILITY WHATSOEVER, AND INTEL DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY, RELATING TO SALE AND/OR USE OF INTEL PRODUCTS INCLUDING LIABILITY OR WARRANTIES RELATING TO FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR INFRINGEMENT OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT. UNLESS OTHERWISE AGREED IN WRITING BY INTEL, THE INTEL PRODUCTS ARE NOT DESIGNED NOR INTENDED FOR ANY APPLICATION IN WHICH THE FAILURE OF THE INTEL PRODUCT COULD CREATE A SITUATION WHERE PERSONAL INJURY OR DEATH MAY OCCUR. Intel may make changes to specifications and product descriptions at any time, without notice. Designers must not rely on the absence or characteristics of any features or instructions marked "reserved" or "undefined." Intel reserves these for future definition and shall have no responsibility whatsoever for conflicts or incompatibilities arising from future changes to them. The information here is subject to change without notice. Do not finalize a design with this information. The products described in this document may contain design defects or errors known as errata which may cause the product to deviate from published specifications. Current characterized errata are available on request. Contact your local Intel sales office or your distributor to obtain the latest specifications and before placing your product order.
    [Show full text]
  • Intel® Math Kernel Library for Windows* OS User's Guide
    Intel® Math Kernel Library for Windows* OS User's Guide Intel® MKL - Windows* OS Document Number: 315930-027US Legal Information Contents Contents Legal Information................................................................................7 Introducing the Intel® Math Kernel Library...........................................9 Getting Help and Support...................................................................11 Notational Conventions......................................................................13 Chapter 1: Overview Document Overview.................................................................................15 What's New.............................................................................................15 Related Information.................................................................................15 Chapter 2: Getting Started Checking Your Installation.........................................................................17 Setting Environment Variables ..................................................................17 Compiler Support.....................................................................................19 Using Code Examples...............................................................................19 What You Need to Know Before You Begin Using the Intel® Math Kernel Library...............................................................................................19 Chapter 3: Structure of the Intel® Math Kernel Library Architecture Support................................................................................23
    [Show full text]
  • 0 BLIS: a Modern Alternative to the BLAS
    0 BLIS: A Modern Alternative to the BLAS FIELD G. VAN ZEE and ROBERT A. VAN DE GEIJN, The University of Texas at Austin We propose the portable BLAS-like Interface Software (BLIS) framework which addresses a number of short- comings in both the original BLAS interface and present-day BLAS implementations. The framework allows developers to rapidly instantiate high-performance BLAS-like libraries on existing and new architectures with relatively little effort. The key to this achievement is the observation that virtually all computation within level-2 and level-3 BLAS operations may be expressed in terms of very simple kernels. Higher-level framework code is generalized so that it can be reused and/or re-parameterized for different operations (as well as different architectures) with little to no modification. Inserting high-performance kernels into the framework facilitates the immediate optimization of any and all BLAS-like operations which are cast in terms of these kernels, and thus the framework acts as a productivity multiplier. Users of BLAS-dependent applications are supported through a straightforward compatibility layer, though calling sequences must be updated for those who wish to access new functionality. Experimental performance of level-2 and level-3 operations is observed to be competitive with two mature open source libraries (OpenBLAS and ATLAS) as well as an established commercial product (Intel MKL). Categories and Subject Descriptors: G.4 [Mathematical Software]: Efficiency General Terms: Algorithms, Performance Additional Key Words and Phrases: linear algebra, libraries, high-performance, matrix, BLAS ACM Reference Format: ACM Trans. Math. Softw. 0, 0, Article 0 ( 0000), 31 pages.
    [Show full text]
  • Intel® Parallel Studio Xe 2017 Runtime
    Intel® Parallel StudIo Xe 2017 runtIme Release Notes 26 July 2016 Contents 1 Introduction ................................................................................................................................................... 1 1.1 What Every User Should Know About This Release ..................................................................... 1 2 Product Contents ......................................................................................................................................... 2 3 System Requirements ................................................................................................................................ 3 3.1 Processor Requirements........................................................................................................................... 3 3.2 Disk Space Requirements ......................................................................................................................... 3 3.3 Operating System Requirements .......................................................................................................... 3 3.4 Memory Requirements .............................................................................................................................. 3 3.5 Additional Software Requirements ...................................................................................................... 3 4 Issues and Limitations ..............................................................................................................................
    [Show full text]
  • CIS Ubuntu Linux 18.04 LTS Benchmark
    CIS Ubuntu Linux 18.04 LTS Benchmark v1.0.0 - 08-13-2018 Terms of Use Please see the below link for our current terms of use: https://www.cisecurity.org/cis-securesuite/cis-securesuite-membership-terms-of-use/ 1 | P a g e Table of Contents Terms of Use ........................................................................................................................................................... 1 Overview ............................................................................................................................................................... 12 Intended Audience ........................................................................................................................................ 12 Consensus Guidance ..................................................................................................................................... 13 Typographical Conventions ...................................................................................................................... 14 Scoring Information ..................................................................................................................................... 14 Profile Definitions ......................................................................................................................................... 15 Acknowledgements ...................................................................................................................................... 17 Recommendations ............................................................................................................................................
    [Show full text]
  • An Introduction to Programming in Fortran 90
    Guide 138 Version 3.0 An introduction to programming in Fortran 90 This guide provides an introduction to computer programming in the Fortran 90 programming language. The elements of programming are introduced in the context of Fortran 90 and a series of examples and exercises is used to illustrate their use. The aim of the course is to provide sufficient knowledge of programming and Fortran 90 to write straightforward programs. The course is designed for those with little or no previous programming experience, but you will need to be able to work in Linux and use a Linux text editor. Document code: Guide 138 Title: An introduction to programming in Fortran 90 Version: 3.0 Date: 03/10/2012 Produced by: University of Durham Computing and Information Services This document was based on a Fortran 77 course written in the Department of Physics, University of Durham. Copyright © 2012 University of Durham Computing and Information Services Conventions: In this document, the following conventions are used: A bold typewriter font is used to represent the actual characters you type at the keyboard. A slanted typewriter font is used for items such as filenames which you should replace with particular instances. A typewriter font is used for what you see on the screen. A bold font is used to indicate named keys on the keyboard, for example, Esc and Enter, represent the keys marked Esc and Enter, respectively. Where two keys are separated by a forward slash (as in Ctrl/B, for example), press and hold down the first key (Ctrl), tap the second (B), and then release the first key.
    [Show full text]
  • 0 BLIS: a Framework for Rapidly Instantiating BLAS Functionality
    0 BLIS: A Framework for Rapidly Instantiating BLAS Functionality FIELD G. VAN ZEE and ROBERT A. VAN DE GEIJN, The University of Texas at Austin The BLAS-like Library Instantiation Software (BLIS) framework is a new infrastructure for rapidly in- stantiating Basic Linear Algebra Subprograms (BLAS) functionality. Its fundamental innovation is that virtually all computation within level-2 (matrix-vector) and level-3 (matrix-matrix) BLAS operations can be expressed and optimized in terms of very simple kernels. While others have had similar insights, BLIS reduces the necessary kernels to what we believe is the simplest set that still supports the high performance that the computational science community demands. Higher-level framework code is generalized and imple- mented in ISO C99 so that it can be reused and/or re-parameterized for different operations (and different architectures) with little to no modification. Inserting high-performance kernels into the framework facili- tates the immediate optimization of any BLAS-like operations which are cast in terms of these kernels, and thus the framework acts as a productivity multiplier. Users of BLAS-dependent applications are given a choice of using the the traditional Fortran-77 BLAS interface, a generalized C interface, or any other higher level interface that builds upon this latter API. Preliminary performance of level-2 and level-3 operations is observed to be competitive with two mature open source libraries (OpenBLAS and ATLAS) as well as an established commercial product (Intel MKL). Categories and Subject Descriptors: G.4 [Mathematical Software]: Efficiency General Terms: Algorithms, Performance Additional Key Words and Phrases: linear algebra, libraries, high-performance, matrix, BLAS ACM Reference Format: ACM Trans.
    [Show full text]
  • Accelerating Spark ML Applications Date Published: 2020-01-16 Date Modified
    Best Practices Accelerating Spark ML Applications Date published: 2020-01-16 Date modified: https://docs.cloudera.com/ Legal Notice © Cloudera Inc. 2021. All rights reserved. The documentation is and contains Cloudera proprietary information protected by copyright and other intellectual property rights. No license under copyright or any other intellectual property right is granted herein. Copyright information for Cloudera software may be found within the documentation accompanying each component in a particular release. Cloudera software includes software from various open source or other third party projects, and may be released under the Apache Software License 2.0 (“ASLv2”), the Affero General Public License version 3 (AGPLv3), or other license terms. Other software included may be released under the terms of alternative open source licenses. Please review the license and notice files accompanying the software for additional licensing information. Please visit the Cloudera software product page for more information on Cloudera software. For more information on Cloudera support services, please visit either the Support or Sales page. Feel free to contact us directly to discuss your specific needs. Cloudera reserves the right to change any products at any time, and without notice. Cloudera assumes no responsibility nor liability arising from the use of products, except as expressly agreed to in writing by Cloudera. Cloudera, Cloudera Altus, HUE, Impala, Cloudera Impala, and other Cloudera marks are registered or unregistered trademarks in the United States and other countries. All other trademarks are the property of their respective owners. Disclaimer: EXCEPT AS EXPRESSLY PROVIDED IN A WRITTEN AGREEMENT WITH CLOUDERA, CLOUDERA DOES NOT MAKE NOR GIVE ANY REPRESENTATION, WARRANTY, NOR COVENANT OF ANY KIND, WHETHER EXPRESS OR IMPLIED, IN CONNECTION WITH CLOUDERA TECHNOLOGY OR RELATED SUPPORT PROVIDED IN CONNECTION THEREWITH.
    [Show full text]
  • Intel Threading Building Blocks
    Praise for Intel Threading Building Blocks “The Age of Serial Computing is over. With the advent of multi-core processors, parallel- computing technology that was once relegated to universities and research labs is now emerging as mainstream. Intel Threading Building Blocks updates and greatly expands the ‘work-stealing’ technology pioneered by the MIT Cilk system of 15 years ago, providing a modern industrial-strength C++ library for concurrent programming. “Not only does this book offer an excellent introduction to the library, it furnishes novices and experts alike with a clear and accessible discussion of the complexities of concurrency.” — Charles E. Leiserson, MIT Computer Science and Artificial Intelligence Laboratory “We used to say make it right, then make it fast. We can’t do that anymore. TBB lets us design for correctness and speed up front for Maya. This book shows you how to extract the most benefit from using TBB in your code.” — Martin Watt, Senior Software Engineer, Autodesk “TBB promises to change how parallel programming is done in C++. This book will be extremely useful to any C++ programmer. With this book, James achieves two important goals: • Presents an excellent introduction to parallel programming, illustrating the most com- mon parallel programming patterns and the forces governing their use. • Documents the Threading Building Blocks C++ library—a library that provides generic algorithms for these patterns. “TBB incorporates many of the best ideas that researchers in object-oriented parallel computing developed in the last two decades.” — Marc Snir, Head of the Computer Science Department, University of Illinois at Urbana-Champaign “This book was my first introduction to Intel Threading Building Blocks.
    [Show full text]
  • Intel® Math Kernel Library 10.1 for Windows*, Linux*, and Mac OS* X
    Intel® Math Kernel Library 10.1 for Windows*, Linux*, and Mac OS* X Product Brief The Flagship for High-Performance Computing Intel® Math Kernel Library 10.1 Math Software for Windows*, Linux*, and Mac OS* X Intel® Math Kernel Library (Intel® MKL) is a library of highly optimized, extensively threaded math routines for science, engineering, and financial applications that require maximum performance. Availability • Intel® C++ Compiler Professional Editions (Windows, Linux, Mac OS X) • Intel® Fortran Compiler Professional Editions (Windows, Linux, Mac OS X) • Intel® Cluster Toolkit Compiler Edition (Windows, Linux) • Intel® Math Kernel Library 10.1 (Windows, Linux, Mac OS X) Functionality “By adopting the • Linear Algebra—BLAS and LAPACK • Fast Fourier Transforms Intel MKL DGEMM • Linear Algebra—ScaLAPACK • Vector Math Library libraries, our standard • Linear Algebra—Sparse Solvers • Vector Random Number Generators benchmarks timing DGEMM Threaded Performance Intel® Xeon® Quad-Core Processor E5472 3.0GHZ, 8MB L2 Cache,16GB Memory Intel® Xeon® Quad-Core Processor improved between Redhat 5 Server Intel® MKL 10.1; ATLAS 3.8.0 DGEMM Function 43 percent and 71 Intel MKL - 8 Threads Intel MKL - 1 Thread ATLAS - 8 Threads 100 percent…” ATLAS - 1 Thread 90 Matt Dunbar 80 Software Developer, 70 ABAQUS, Inc. s 60 p GFlo 50 40 30 20 10 0 4 6 8 2 4 0 8 2 8 4 6 0 4 2 4 8 6 6 8 9 10 11 12 13 14 16 18 19 20 22 25 32 38 51 Matrix Size (M=20000, N=4000, K=64, ..., 512) Features and Benefits Vector Random Number Generators • Outstanding performance Intel MKL Vector Statistical Library (VSL) is a collection of 9 random number generators and 22 probability distributions • Multicore and multiprocessor ready that deliver significant performance improvements in physics, • Extensive parallelism and scaling chemistry, and financial analysis.
    [Show full text]