Quantcast
Channel: Recent posts
Viewing all 42 articles
Browse latest View live

Webinar -"Intel® System Studio: Embedded application development and debugging tools"

$
0
0

Abstract

Presenter

Information

The Intel® System Studio is a flexible complete software development studio which allows you to optimize Intel® Architecture based intelligent embedded systems and devices. It combines Eclipse* CDT integrated optimizing compiler solutions and signal and media processing libraries, whole platform power and performance tuning capabilities, in-depth memory and thread checking, instruction trace and data race detection enabled application debug, and the deep insight of a  JTAG based system software debug solution.

This session will give an overview for the Intel® System Studio and introduce the key features which cover the following topics:

  • Debugging with GDB* debugger with enhanced instruction trace and data race detection support, and  Intel® JTAG Debugger with deep insight into processor architecture, flashing, and source level debug from EFI* to OS Kernel and to driver development
  • Building with Intel® C++ Compiler in corss-build environment to extract the best performance for your embedded target.
  • Tuning with Intel® Vtune Amplifier to find the performance hotspots, identify the architecture performance bottlenecks, analyze system power and frequency.
  • Verifying with Intel® inspector to find the memory and threading issues for your embedded applications

 



Naveen Gv & Sukruth H V

 

 

 

 

PLAYBACK

The following is a selected list of questions and answers from the webinar "Intel® System Studio: Embedded application development and debugging tools", we thought these may be useful to other developers as reference.

Q: We have XDP Debug interface on our board. Is Intel® JTAG Debugger interface different?

A: The Intel® JTAG Debugger 3.0 provides Linux* hosted cross-debug solutions for software developers to debug the Linux* kernel sources and dynamically loaded drivers and kernel modules on Intel® Atom™ Processor based devices. It does so using the In-Target Probe eXtended Debug Port (ITP-XDP) on Intel® Atom™ Processor (N2xxx, D2xxx, E6xx, CE42xx, and CE 53xx) based platforms. 

For more information, refer to Intel® System Studio Installation guide and Release Notes Intel® JTAG Debugger 3.0 : http://software.intel.com/sites/default/files/article/365160/jtag-release-install.pdf

Q: Does Intel System Studio support Menlow and Baytrail platforms?

A: Intel® System Studio 2013 supports Intel® Atom™ Z5xx series Processors(Menlow). The  upcoming release of Intel® System Studio 2014 beta will support The Intel® Atom™ Processor E3xxx and Z3xxx code-named “Baytrail” from Windows* host with the Intel® ITP-XDP3 device.

Q: Do you have auto configuration option for connecting the target device? We are using American Arium which do not support auto configuration.

A: We do have script files for specific Intel® Atom™ based target boards which will set the environment variables and bring up the Intel® JTAG debugger GUI, provided you have connected either an Intel® ITP-XDP3 or Macraigor* usb2demon onto the target board.

Q: Our focus is primarily for board bringup and BIOS/ UEFI porting effort.

A: The Intel® JTAG Debugger included with Intel® System Studio supports BIOS/UEFI debugging. As UEFI code is usually compiler in Microsoft* COFF PDB format, our debugger relies on Microsoft Visual Studio* redistributables for symbol info resolution and thus the Windows* hosted version of the Intel® JTAG Debugger should be used.

Q: Is the mac probe available with the purchase of the System Studio?

A: Intel System Studio is just a software tools suite and NO hardware is shipped along with this product.To order the Intel® ITP-XDP3 device, please contact the Hibbert Group* at Intelvtg@hibbertgroup.com and request the VTG order form.

To order Macraigor* usb2Demon*, Go to http://www.macraigor.com/usbDemon.htm and select the Intel® Atom™ Processor target with the appropriate 24, 31 or 60 pin connector for your target device.

Q: What does SoC mean?

A: SoC - System on Chip, Please refer to http://www.intel.com/pressroom/kits/soc/ for more information.

Q: How to collect data from target device to host

A: Target board analysis can be done using Intel® VTune Amplifier, you have to setup SSH(Secured Shell) connection and the analysis data is automatically copied back onto the host machine. Please refer to the remote collection article for more details :

http://software.intel.com/en-us/articles/how-to-use-remote-collection-on-intel-vtune-amplifier-2013-for-systems

Q: Intel JTAG debugger can support for all the controller?

A: Intel® System Studio JTAG debugger supports only Intel® Atom x86 architecture as of today. With the 2014 release it will also support Intel® Core processors code-named “Haswell” and newer.

Q: Does Intel System studio supports GCC environment/GCC commands

A: Yes, Intel® System Studio tools are compatible with GCC compiled binaries and the Intel® C++ Compiler accepts GCC command-line options.

Q: Can we develop bare metal application on this studio. i.e target is not having any operating system

A: The build tools included with Intel® System Studio are targeted towards a variety of Embedded Linux* flavors like Yocto Project*, Wind River Linux*. The Intel® C++ Compiler relies on the presence of the GNU binutils. It is not intended for bare metal applications. You can however use the Intel®  JTAG debugger to debug and analyze your bare metal code.

Q: What about Ivy bridge and Haswell support?

A:  The build tools including the Intel® C++ Compiler already support the latest generation of Intel® Core processors. Optimiztaions will be further improved in future versions of Intel® System Studio. With Intel® System Studio 2014 we add support for the processor code-named “Haswell” in the analysis and system debug tools as well.

Q: Is The Studio Helpful In Developing Linux Drivers?

A: Yes, it can be used to build, optimize and debug Linux drivers and kernel moduels.

Q: What Do You Mean By SSH Connection?

A: http://en.wikipedia.org/wiki/Secure_Shell 

Q: What Is Yocto Project?

A: Yocto Project* is a Linux* foundation open source framework for embedded Linux* development. It is Open Embedded compatible and provides reference OS builds as well as the setup and build environment to build your own compatible custom embedded Linux* - https://www.yoctoproject.org/ 

Q: Is Windriver ice JTAG supported?

A: No, as of now we are not supporting The Windriver ICE JTAG probe.

Q: If we want to implement our own load balancing mechanism, how we can bypass the Cilk auto load balancing?

A: Load balancing is done by default by Cilk Plus [Which is part of Intel compiler]. Since this is done by CILK runtime automatically, it is not advisable to change the behavior of this. However you can get the source of this runtime under GPL V3 license https://www.cilkplus.org/which-license.

Q: is this support all version of Linux? Like Fedora and Ubuntu.

A:   We have validated and listed some of the supported Host and Target OS here http://software.intel.com/en-us/articles/intel-system-studio-system-requirements, You may want to ensure that the Linux kernel version is 2.6.32 or above.

Q: is trial version have limited code compilation?

A: The feature set of the evaluation version is identical  to the commercial version, with the only limitation being the license expiration after 30days.

Q: is this studio support for C language programming or having other C Complier?

A: Intel C/C++ Compiler which is part of Intel® System Studio supports C/C++ language.

Q: How can you analyze multi core processing ?

A: Intel® System Studio’s VTune Amplifier for systems and Inspector for systems can be helpful to find the CPU usage on a Multi-core processor using concurrency analysis, threading analysis respectively.

Q: OpenMP will be supported for this compiler ?

A: No, OpenMP is not supported as a language extention by the Intel® C++ Compiler for Embedded Linux* OS included with Intel® System Studio. Pre-existing OpenMP based binaries and shared objects that rely on OpenMP runtimes will however be executed correctly. We areopen to considering the requests, If more developers are asking for OpenMP support in future.

Q: We observed a situation of 100% CPU usage, wanted to analyze the root cause

A: You can use Intel® VTune Amplifier for Systems.

Q: Does the studio software take care of cross compilation?

A: Yes, the Intel® C++ Compiler support sysroot and chroot based cross-build setups. For  cross compilation using sysroot we offer a "-platform" compiler option on the host that already takes care of the cross build integration for multiple target Linux* OSs. The provided cross-build integration can also be used as a template for other cross-build environment. Please refer to the detailed procedure on cross compilation here:- http://software.intel.com/en-us/articles/using-intel-c-compiler-for-embedded-system


Video : Installation of Intel® System Studio on Windows* Host

$
0
0

This video is focused on “How to install Intel® System Studio 2014 Beta on Windows* Host”.

Intel System Studio Installation - Windows Host.wmv

Size : 7.34MB

How to get Intel System Studio 2014 beta - Windows* Host package?

Upon registering for the program you will receive a serial number and email with a license file. You will need either of these two to complete the installation process. If you want to use the license file you can point to it during install, but you can also copy it to C:\Program Files (x86)\Common Files\Intel\Licenses\for automatic pickup by the installer.

Execute one of the installer executable.

w_cembd_2014.0.xxx.exe or w_cembd_2014.0.xxx_online.exe

The later one is an online installer reducing the initial package download size. 

Prerequisites for Eclipse* IDE Integration

The Intel® C++ Compiler and SVEN SDK can be automatically integrated into a preexisting Eclipse* CDT installation. The Eclipse* CDK, Eclipse* JRE and the Eclipse* CDT integrated development environment are not shipped with this package of the Intel® System Studio. The Eclipse* integration is automatically offered as one of the last steps of the installation process. If you decide against integration during an earlier install, simply rerun the Intel® System Studio installer.

When asked point the installer to the installation directory of your Eclipse* install. Usually this would be C:\Program Files (x86)\eclipse\.

The prerequisites for successful Eclipse integration are:

1. Eclipse* 3.7 (Indigo) – Eclipse* 4.3 (Kepler)

2. Eclipse* CDT 8.0 – 8.1

3. Java Runtime Environment (JRE) version 6.0 (also called 1.6) update 11 or later.

Digital Security and Surveillance on 4th generation Intel® Core™ processors Using Intel® System Studio

$
0
0

This article presents the advantages of developing embedded digital video surveillance systems to run on 4th generation Intel® Core™ processor with Intel® HD Graphics, in combination with the Intel® System Studio software development suite. While Intel® HD Graphics is useful for developing many types of computer vision functionalities in video management software; Intel® System Studio is an embedded application development suite that is useful in developing robust digital video surveillance applications.

Developing Embedded application on Intel® Atom™ Processor E3800 (Formerly Bay Trail) using ‘Intel® System Studio’

$
0
0

Abstract:

The Intel® Atom processor E3800 product family is the first system on-chip (Soc) designed for intelligent systems, delivering outstanding compute, graphical and media performance. This product family ideal for efficient imaging workflows, digital signage with secure content delivery, Interactive kiosks, intelligent vending, ATM and point-of-sales(POS) terminals  portable medical devices, industrial control systems, and in-vehicle infotainment(IVI) systems. These SoCs, based on the Intel® Silvermont microarchitecture, deliver numerous enhancements over previous-generation Intel® Atom™ processor microarchitecture. Intel® System Studio is an embedded application development suite that is useful in developing embedded applications.

Intel System Studio 2014 with optional JTAG debugger

$
0
0

If I purchase studio with optional JTAG debugger will I get ITP-XDP3 (JTAG probe) or just only software (plugin for eclipse)?

Not able to install the Cryptographic library on top of composer edition

$
0
0

I had registered the trial version of parallel studio 2015 Update 2 composer edition for windows and downloaded the related crypto package. After installing the composer studio ,when i tried to install the crypto it is telling please install IPP of the same version and then install the crypto and installation doesn't proceed thereafter.

Packages douwnloaded: w_ccompxe_2015.2.179

Crypto pacakge: w_ccompxe_crypto_ipp_8.2.1.148

The crypto installation is very much needed since use checksum methods and we want to profile the performance of MD5 in never version.

IPP static libs make huge CPU load

$
0
0

Hi all,

I use IPP 7.1 to process uncompressed images from IP-cam.

So, I have to init my custom DLL, call IPP functions via my own functions inside my DLL and, finally, shut down my DLL.

And of course I have to call IPP functions in accordance with IP-cam FPS. If IP-cam gives me 25 FPS, I have to call IPP-functions 25 times per second.

Everything was fine, when I used dynamic-linkage DLL (as I know, they are multithreaded, so I use ippSetNumThreads(1) to avoid problems in OpenMP). 

But when I tried static linkage, I got huge CPU load. ippStaticInit() call doesn't change anything.

Have I make any additional settings to make CPU load with static and dynamic linkage equal?

 

Best Regards,

Roman

How do you buy more copies of an older version of IPP?

$
0
0

We're currently using IPP 8.0 for one of our software products. A new developer recently came on board with us and I want to buy him a copy of IPP 8.0 (or maybe 8.1). I've been scouring the Intel IPP web site but can't seem to find any way to purchase anything but the new IPP 8.2 stuff (which I don't want). Is there any way to buy more copies of the old stand alone IPP 8.0 or 8.1 products?

 


IPP Cryptography Library - where are the files as ippcp.h ?

$
0
0

IPP Cryptography Library

The IPP cryptography library files are not included in the above lists, since they are not part of the standard product. If you are using the IPP cryptography library you will need to add those library files to your link list. The crypto files are named ippcp*.

So where are these files ?

i need to to use bignumber but it is impossible because i do not have IPP Cryptography Library ? i precise I bought the product !

thanks for your help

Vtune Amplifier 2015 remote SSH, attach to process problem

$
0
0

Hi all,

I'm working with the vtune amplifier graphic user interface, and when i try to run all of the Software analysis type(Basic Hotspots, Locks&waits, concurrency) the vtune remains blocked collecting the results and never finish. I can take all the hardware analysis without any problem(Advanced Hotspots, etc...), so my question is if anyone can give to me some ideas about what kind of thing maybe i'm doing wrong.

Host machine: Red Hat 6.6 with the system studio 2015 installed.

Target machine: Wind River Linux 6 with the drivers of vtune installed.

Thank you so much and don't hesitate to contact me if there is any question or file that can be helpful.

DR

Host vs Target

$
0
0

I just got a notice to get the new Intel System Studio Beta.  I have to choose between "Windows Host" and "Windows Target." What is the difference?

Rich

C++ 64 compiler with inline {asm} 64-bit code

$
0
0

I wish to develop a 64-bit math library, C++, for Windows, on a 64-bit Windows. To start with, Single Core (not parallel). The compiler must include 64-bit inline {asm} code. To be integrated with the Visual C IDE (and debugger).  

The logic will be C++, the workhorse - MASM routines (Microsoft ML for X86_64/AMD64) and/or inline code.

Later, I may need, perhaps, a Linux version too. But that is far in the future.

The Intel Composer Xe 2013 would do: I have checked it.  I don't need the extra tools included in Composer Parallel Studio 2015, nor the parallel support.

Could one get "a free license" for the 2013 Composer Xe? or are those programs (students, Academy, developers) limited to the most current version?

If not: (I) Does the 2015 Parallel Composer support 64-bit inline {asm}  ?  (II) Which versions of VC IDE work with the 2015 compiler ?

Amos

 

intel system studio : cannot download earlier version (2014)

$
0
0

Hi,

For project maintenance purpose, I need to download and install an earlier version of Intel Studio Professional.

I could get a license for 2015 version with no issue, but there's no way to select earlier 2014 version for download.

Can you help on this?

Thanks, Olivier.

 

Intel® Integrated Performance Primitives (Intel® IPP) upgrade options

$
0
0

If you are presently using Intel IPP in your applications and licenses for Intel® IPP is expiring soon, we have exciting news for you regarding your Intel® IPP license extension.

Because our Intel customers were seeing a lot of synergy in using Intel® IPP in combination with the various Intel Development Tools, Intel® IPP is now delivered along with other performance libraries like threading libraries (Intel® TBB), Math Kernel Library (Intel® MKL) and Intel Compiler in our various suites (Intel® Parallel Studio XE, Intel® System Studio, or Intel® Integrated Native Developer Experience). Majority of our customers are already realizing the value that this change has brought.

As our existing customer you can either

  • Continue to renew the support maintenance for your existing Intel® IPP license or

  • Upgrade to one of our Intel Studio products based on your specific needs and enjoy a wider access to Intel performance libraries, threading libraries and Intel compilers.

Pick a suite which best fits your software application requirements. 

Product Name

Type of Software Applications

Product Brief 

Intel® System Studio

Used in System software and applications for embedded or mobile devices.  

For example, embedded applications in digital surveillance, test measure equipment, medical imaging, telecommunication, multi- functional printers.

The product supports Linux*, Android* and Windows* targets.

Click here

Intel® Parallel Studio XE

Used in Enterprise and Desktop application with focus on parallelization and vectorization optimization.

The product supports Windows*, Linux*, and OS X*

Click here

Intel® Integrated Native Developer Experience (Intel® INDE)

Used in any C++/Java* applications that has to support cross-OS, cross-Architecture for Windows* on Intel® architecture and Android* on Intel® architecture and ARM*.

Support host systems: Windows*, OS X*.

Support target systems: Android*, Windows*, OS X*

Click here

If you have any further questions,  feel free to contact us either at  Intel® Premier Support or email us or post your questions at Intel® IPP forum.

For buying and renewal options for Intel® IPP, please contact us by intel.software.sales@intel.com, or visit @ https://software.intel.com/en-us/intel-ipp/try-buy

Intel® Integrated Performance Primitives (Intel® IPP) upgrade options

$
0
0

Dear IPP users,

If you are presently using Intel IPP in your applications and if license is expiring soon, we have exciting news for you regarding your Intel® IPP license extension.

Because our Intel customers were seeing a lot of synergy in using Intel® IPP in combination with the various Intel Development Tools, Intel® IPP is now delivered along with other performance libraries like threading libraries (Intel® TBB), Math Kernel Library (Intel® MKL) and Intel Compiler in our various suites (Intel® Parallel Studio XE, Intel® System Studio, or Intel® Integrated Native Developer Experience). Majority of our customers are already realizing the value that this change has brought.

As our existing customer you can either

  • Continue to renew the support maintenance for your existing Intel® IPP license or
  • Upgrade to one of our Intel Studio products based on your specific needs and enjoy a wider access to Intel performance libraries, threading libraries and Intel compilers.

Pick a suite which best fits your software application requirements. 

Product Name : Intel® System Studio
Type of Software Applications : Used in System software and applications for embedded or mobile devices. For example, embedded applications in digital surveillance, test measure equipment, medical imaging, telecommunication, multi- functional printer
The product supports Linux*, Android* and Windows* targets

Product Name :Intel® Parallel Studio XE
Type of Software Applications : Used in Enterprise and Desktop application with focus on parallelization and vectorization optimization. The product supports Windows*, Linux*, and OS X*

Product Name : Intel® Integrated Native Developer Experience (Intel® INDE)
Type of Software Applications : Used in any C++/Java* applications that has to support cross-OS, cross-Architecture for Windows* on Intel® architecture and Android* on Intel® architecture and ARM*.
Support host systems: Windows*, OS X*.
Support target systems: Android*, Windows*, OS X*

For buying and renewal options for Intel® IPP, please contact us by intel.software.sales@intel.com, or visit @ https://software.intel.com/en-us/intel-ipp/try-buy


Intel® System Studio: Samples and Tutorials

$
0
0

Intel® System Studio Samples and Tutorials

$
0
0

Intel® System Studio is a comprehensive and integrated tool suite that provides developers with advanced system tools and technologies to help accelerate the delivery of the next-generation, energy-efficient, high-performance, and reliable embedded and mobile devices.

We have created a list of samples demonstrating different features of Intel System Studio, Also tutorials will show usage of features in your applications.

By Downloading or copying all or any part of the sample source code, you agree to the terms of the Intel® Sample Source Code License Agreement

Samples

Sample Code Name

Description

Hello World

This is a simple "Hello World" example that illustrates how to set up the environment to build embedded application with Intel Compiler (ICC) for Windows*, Linux* Host and Yocto* Linux* Target , in various usage models like command line, IDEs.

Matrix Multiplication

This is a "matrix multiplication" example that illustrates different features of Intel® System Studio like Intel® C/C++ Compiler, Intel® MKL, Intel® VTune Amplifier and Intel® Cilk Plus.

System Trace – a sample trace

 A sample trace file (sampleTrace.tracecpt) is included in this Intel System Debugger NDA package. This sample trace file is collected from the real Intel® Skylake machine and including multiple traces packets type like BIOS, CSME, TSCU and global error packets example. Before you get started to use System Trace Tool(eclipse plugin) to debug your system issues, this sample trace can help you to get more familiar with all UI operations, functionalities provided by System Trace Tool, like searching key words, opening a new field and exporting partial logs etc.

Processor Trace Sample 

Intel® Processor Trace is the hardware based low overhead code execution logging on instruction level and provides a powerful and deep insight into past instruction flow combined with interactive debug.

Image Blurring and Rotation

This tutorial demonstrates how to:

  •  Implement box blurring of an image with the Intel IPP filtering functions
  •  Rotate an image with the Intel IPP functions for affine warping
  •  Set up environment to build the Intel IPP application
  •  Compile and link your image processing application

 

Averaging Filter(Image Processing)

An Averaging filter is a commonly used filter in the field of image processing and is mainly used for removing any noise in a given image. This sample has demonstrates how to increase the performance of Averaging filter using Intel® Cilk™ Plus. Both threading and SIMD solutions are explored in the performance tuning and their corresponding contributions in the speedup are evaluated.

Discrete Cosine Transforms(DCT)

Discrete Cosine Transform (DCT) and Quantization are the first two steps in JPEG compression standard. This sample demonstrates how DCT and Quantizing stages can be implemented to run faster using Intel® Cilk™ Plus. 

Image Processing: Sepia Filter

A Sepia tone image is monochromatic image with a distinctive Brown Gray color that provides a distinctive tone to a photograph when Black & White film was available. The program works by converting each pixel in the bitmap file to a Sepia tone. This sample demonstrates how to improve the performance of Sepia filter using Intel® Cilk™ Plus. To demonstrate the performance increase, you will use a program that converts a bitmap file from color image to a Sepia tone image. 

Tutorials

Title/Link to Tutorial demo

Description 

Using Intel® C++ Compiler for Embedded Linux Systems

The Intel® C++ Compiler, also known as icc, is a high performance compiler which lets you build and optimize your C/C++ applications for the Linux* based operating system. Embedded system development is a cross-platform development in most cases. The applications development normally needs cross-compilation which requires a host compilation system and a target embedded system. The Intel® C++ compiler fully supports cross-platform compilation as well. 

Intel® VTune™ Amplifier for Systems Usage Models

Intel® VTune™ Amplifier for Systems is a software performance analysis tool for users developing serial and multithreaded applications on Embedded and Mobile system. VTune Amplifier supports multiple usage modes for various target systems depending on your development environment and target environment. In this article, we will describe the Vtune Amplifier usage modes and the recommended modes for different target systems.

Signal Processing Usage for Intel® System Studio – Intel® MKL vs. Intel® IPP

Employing performance libraries can be a great way to streamline and unify the computational execution flow for data intensive tasks, thus minimizing the risk of data stream timing issues and heisenbugs. Here we will describe the two libraries that can be used for signal processing within Intel® System Studio.

Debugging Intel® Quark SoC based target platform uinsg OpenPCD*

This tutorial will help you to understand setting up OpenOCD* based connector to Intel Quark based target systems and usage of Intel System Studio for debugging system software.

 

Intel® System Studio Matrix Multiplication Sample

$
0
0

This is a "matrix multiplication" example that illustrates different features of Intel® System Studio on Microsoft* Visual Studio* IDE, Eclipse* IDE and on Yacto* Target System

By Downloading or copying all or any part of the sample source code, you agree to the terms of the Intel® Sample Source Code License Agreement

Windows* System : system_studio_sample_matrix_multiply.zip(829 KB)

Linux* System : system_studio_sample_matrix_multiply.tar.gz (1380 KB)

These package has got four samples to demonstrate usage of Intel® C++ Compiler,  Intel® VTune™ Amplifier for Systems, Intel® Cilk™ Plus and Intel® MKL. 

  • Using Intel® C++ Compiler for Systems to get better performance
  • Using Intel® VTune™ Amplifier for Systems to identify performance bottleneck
  • Using Intel® Cilk™ Plus to parallelize the application
  • Using optimized functions from Intel® Math Kernel Library

Intel® System Studio 2016 - Webinar Series

$
0
0

This is a good opportunity to learn tips and techniques that will help sharpen your development skills to create faster, more reliable embedded/systems software. Please register for webinars in Asia and Pacific time zones.

Title : Create Smarter Code Smarter with Intel® System Studio 2016

Title : Analyzing Performance Bottlenecks on Intel® Architecture 

Title : Migrating embedded applications to Intel x86 Architecture

Title : Get Deep System Insight for 6th Generation Intel® Core™ Processors 

For more information about Intel Software Tools Webinars, visit - https://software.intel.com/en-us/events/development-tools-webinars

Regards,

Naveen Gv

Intel Software Team

Intel® IPP Memory Function ippMalloc/Free FAQ

$
0
0

Introduction

Intel® Integrated Performance Primitives (Intel® IPP) is a cross-architecture software library that provides a broad range of library functions for image processing, signal processing, data compression, cryptography, and computer vision, as well as math support routines for such processing capabilities. Intel IPP is optimized for the wide range of Intel microprocessors.

One of the key advantages within Intel IPP is performance coming through highly optimized functions and resource management including memory management. This paper covers the different flavors of those functions in Intel IPP dealing with memory allocation, deallocation, and alignment. After reading this article you should be able to use the correct memory allocation functions for your specific needs. Further documentation on Intel IPP can be found at Intel® Integrated Performance Primitives – Documentation.


What are the Intel® IPP memory functions?

Intel IPP provides easy-to-use functions for pointer alignment, memory allocation and deallocation:

Function

Purpose

Notes

void* ippAlignPtr(void* ptr, int alignBytes);

Aligns a pointer.

Can align to 2/4/8/16/…

void* ippMalloc(int length);

64-byte aligned memory allocation.

Can only free memory with ippFree.

void ippFree(void* ptr);

Free memory allocated by ippMalloc.

Can only free memory allocated by ippMalloc.

Ipp<datatype>* ippsMalloc_<datatype>(int len);

64-byte aligned memory allocation for blocks of 32-bit length and signal elements of different data types.

Limited to memory blocks of up to 2 GB.
Can only free memory with ippsFree.

Ipp<datatype>* ippsMalloc_<datatype>_L(IppSizeL len);Platform-aware 64-byte aligned memory allocation for signal elements of different data types.Available since Intel IPP 2017.
Can only free memory with ippsFree.

void ippsFree(void* ptr);

Free memory allocated by ippsMalloc.

Can only free memory allocated by ippsMalloc.

Ipp<datatype>* ippiMalloc_<mod>(
int widthPixels, int heightPixels,
int* pStepBytes);

64-byte aligned memory allocation for images where every line of the image is padded with zeros.

Limited to memory blocks of up to 2 GB.
Can only free memory with ippiFree.

Ipp<datatype>* ippiMalloc_<mod>_L (IppSizeL widthPixels,
IppSizeL heightPixels,
IppSizeL* pStepBytes);
Platform-aware 64-byte aligned memory allocation for images where every line of the image is padded with zeros.Available since Intel IPP 2017.
Can only free memory with ippiFree.

void ippiFree(void* ptr);

Frees memory allocated by ippiMalloc.

Can only free memory allocated by ippiMalloc.

 


How are Intel® IPP memory functions different from the standard malloc and free functions?

Intel IPP memory functions align the memory to a 64-byte boundary for optimal performance on Intel® architecture.


How do I call ippsMalloc or ippiMalloc?

Please take a look at the examples in the manual.

void func_malloc(void)
{
    Ipp8u* pBuf = ippsMalloc_8u(8*sizeof(Ipp8u));
    if (NULL == pBuf)
    {
        // not enough memory
        ippsFree(pBuf);
    }
}

Example 3-2: Using the function ippsMalloc.

ippiMalloc  from Source Code Examples from Intel IPP book* (including the whole example project)


What is the maximum amount of memory that can be allocated by Intel® IPP functions?

We expect that there are no restrictions to the amount of memory that can be allocated except as defined by the the user's operating system and system hardware. For memory allocations beyond 2 GB on 64-bit systems the platform-aware (e.g. ippsMalloc_<datatype>_L, ippiMalloc_<mod>_L) have to be used instead. Those functions are available since Intel IPP 2017. It is good practice to use platform-aware functions.


How do I deallocate memory?

Use the corresponding Intel IPP memory deallocation functions: ippFree, ippsFree and ippiFree. These functions cannot be used to free memory allocated by standard functions like malloc or calloc; nor can the memory allocated by the Intel IPP malloc functions be freed by the standard function free.


What is the advantage of using ipp*Malloc functions?

Intel IPP functions can perform better on aligned data. By calling an ipp*Malloc functions to allocate data, the data is aligned for optimal performance on your Intel processor.


Why should memory be aligned?

Processor pipeline stalls occur when memory is accessed on the cache-line boundary. Alignment of memory buffers is used in order to minimize such occurrences. Please check the Intel® Developer Zone to access Software Optimization Guides for your Intel processor.


How is the image stride or step used when calling ippiMalloc?

Image stride or step is the number of bytes in one row of the image. The ippiMalloc function takes the width and height of the image in pixels as arguments and returns the memory stride in bytes and a pointer to the memory. The size of the memory allocated is not known until after the function call; then it can be calculated as:

memSize = stride * height * numChannels;
Examples:
  • The function ippiMalloc_8u_C3 first sets the stride to the smallest multiple of 64 that is greater than width * numChannels. Then the function allocates stride * height bytes.
  • The function ippiMalloc_32f_C3, which allocates 32-bit floating-point pixels, sets the stride to the smallest multiple of 64 that is greater than width * numChannels * bytesPerChannel.

Is there any difference between ippMalloc/ippFree() and ippsMalloc/ippsFree() functions?

Basically there is no difference between these functions. Both allocating array of bytes (where for example ippsMalloc_16s allocates array of short integers) and both provide the same alignment for allocated buffer.
It is recommended you use corresponding free functions, ippFree for ippMalloc and ippsFree for all ippsMalloc variants. To get more information about these functions refer to
Intel Integrated Performance Primitives Developer Reference documentation.


Is there any requirement for Intel® IPP functions to use memory only allocated through ippMalloc?

No, Intel IPP functions does not require that memory should be allocated only with Intel IPP functions. You also may use CRT malloc or any other memory manager API. In that case you have to care about alignment by yourself if you want to maximize calculation speed.

 


* Other names and brands may be claimed as the property of others.

Microsoft, Windows, and the Windows logo are trademarks, or registered trademarks of Microsoft Corporation in the United States and/or other countries.

Optimization Notice

Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.

Notice revision #20110804

Copyright © 2002-2016, Intel Corporation. All rights reserved.

Viewing all 42 articles
Browse latest View live


Latest Images