Intel® Integrated Performance Primitives
Deliberate problems developing high-performance vision, signal, security, and storage applications.

IPP vs Win32 API

btwish
Beginner
326 Views
Hi,

I recently come across IPP, and wonder the main difference between IPP and Win32 APIs?

IPP offers better performance, but why is it that Win32 APIs seemed to be more commonly used for programs on Windows OS (x86 machine)?

0 Kudos
5 Replies
PaulF_IntelCorp
Employee
326 Views
The IPP library is a library of primitives designed to take advantage of the IA SIMD instruction set as a way to provide a performance boost to applications that deal with large arrays of data, such as image, voice, and video processing, compression, string processing, and signal processing tasks. Thus the IPP API is written to serve these applications.

The Win32 API was developed by Microsoft to serve as an interface to the Windows OS for operating system services.

The two APIs serve very different purposes and, therefore, have much different interface designs. In addition, the IPP library is also designed to be usable over a variety of operating systems, it is currently supported on the Windows, Linux, Mac OS X, and QNX operating systems.
0 Kudos
btwish
Beginner
326 Views
An exe generated by IPP can be run on various OS without any user runtime programs (that is, like how Java programs require Java Runtime)?

Also, say I am using the graphics APIs from the IPP library, can I control such that it is the GPU (and not the core main processor) that is processing the APIs, and vice versa?

Many thanks!

Quoting - Paul Fischer (Intel)
The IPP library is a library of primitives designed to take advantage of the IA SIMD instruction set as a way to provide a performance boost to applications that deal with large arrays of data, such as image, voice, and video processing, compression, string processing, and signal processing tasks. Thus the IPP API is written to serve these applications.

The Win32 API was developed by Microsoft to serve as an interface to the Windows OS for operating system services.

The two APIs serve very different purposes and, therefore, have much different interface designs. In addition, the IPP library is also designed to be usable over a variety of operating systems, it is currently supported on the Windows, Linux, Mac OS X, and QNX operating systems.

0 Kudos
Vladimir_Dudnik
Employee
326 Views

Hello,

I affraid there is some misunderstanding.. IPP itself does not generate any executable modules, it is not compiler nor linker. IPP is a library consisting from set of functions optimized for number of Intel Architecture (and 100% compatible) products. You can see supported processors list with IPP documentation.

Regards,
Vladimir
0 Kudos
woleakande
Beginner
326 Views

Hi Paul,

I read your post, but to me I think you mean that IPP is a language on its own.Which means I will need to get ist API and syntaxes b4 commencing use.

If IPP is not a language on its own then it can just be lnked to any available IDE and Language.

Enlighten me the more.

Thanks.

0 Kudos
PaulF_IntelCorp
Employee
326 Views

IPP is not a language, it is a library, as Vladimir noted. When I say "the IPP library is also designed to be usable over a variety of operating systems" I mean that the library is available for a variety of operating systems. Specifically, there is a 32-bit Windows version of the library for building 32-bit Windows applications, there is a 64-bit Linux version of the library for building 64-bit Linux applications, and so on (several OS-specific versions are available).

The library executes native machine code, not virtual or interpreted code, so applications built usingthe IPP libraryare NOT like Java applications where they can be executed on top of a virtual run-time engine over a variety of operating systems. An IPP application built using the 32-bit Windows version of the library will only run on systems where 32-bit Windows application can run (for example, 32-bit and64-bit Windows systems).

To provide the performance boost that IPP enables it is necessary to take advantage of CPU-specific features (in this case the Intel SIMD instructions), which is very difficult or impossible to do on a virtual run-time engine, since such systems are generic virtual implementations of a computer, not aphysical processor and operating system.

You can use the library by calling the library functions directly (that is, the IPP API) from your application or by using our free IPP samples, which call functions within the library.

And, yes, you can use the library with a variety of IDEs. It is written as a C library, so any language that supports calling C functions can be used for your application. There is sample code in the free samples available to illustrate how to call the functions from a variety of popular languages.

Hope that helps,

Paul

0 Kudos
Reply