Intel® Moderncode for Parallel Architectures
Support for developing parallel programming applications on Intel® Architecture.

Parallel Coputing on Intel Multicore GPPs

atanu-guchhait
Beginner
668 Views

Hello,

I am new to this forum. I have couple of questions on the parallel computing environment availablefor Intel multicore GPPs (general purpose processors), for example processors like Core2/4 Duo, Atom Core 2/4, Xeon Core 2/4 etc.

a)What is the parallel programming model supported by the Intel's multicore processors? Is it task parallel or data parallel? Is there any way that an user can exploit these features while building its own software on top of the Linux or Windows OS? Which OS is better with respect to the multicore - Windows or Linux?

b) Is the current form ofdevelopment tools from Intel exploit the core parallelism up to full extent? For example, given a large task or C program, do Intel supportedC complier exploits parallelism in its best? Is there any design guideline from Intel regarding how to take advantages of architectural features while workingon designing an application in Windows or Linux OS?

Kindly providerelevent literatures which will help me to gain understanding of parallel programming enviornment on Intel multiocre GPPs.

Thanks

Atanu Guchhait

0 Kudos
4 Replies
Cijo_Abraham_Mani
668 Views
Quoting - atanug

Hello,

I am new to this forum. I have couple of questions on the parallel computing environment availablefor Intel multicore GPPs (general purpose processors), for example processors like Core2/4 Duo, Atom Core 2/4, Xeon Core 2/4 etc.

a)What is the parallel programming model supported by the Intel's multicore processors? Is it task parallel or data parallel? Is there any way that an user can exploit these features while building its own software on top of the Linux or Windows OS? Which OS is better with respect to the multicore - Windows or Linux?

b) Is the current form ofdevelopment tools from Intel exploit the core parallelism up to full extent? For example, given a large task or C program, do Intel supportedC complier exploits parallelism in its best? Is there any design guideline from Intel regarding how to take advantages of architectural features while workingon designing an application in Windows or Linux OS?

Kindly providerelevent literatures which will help me to gain understanding of parallel programming enviornment on Intel multiocre GPPs.

Thanks

Atanu Guchhait

DSOC and SMP are some of the models supported by Intel's multicore processors .Multicore processors helps a lot in client-side applications. It is best for data parallel , task level parallelism also works . Yes users can build their own software . It can be used in several enviornments like MPI, OpenMP, HPF, TBB, Erlang, Shmemm, Portals, ZPL, BSP, windows threads, Tstreams, GA, Java, UPC, Titanium, Parlog, NESL,Split-C etc. TBB ,OpenMP, native threads are supported by Intel, they can co-exist and interoperate.Both Linux and windows work well with multicore but I do suggest Linux as it is an Open Source .

You might refer the following resources for understanding more on Parallel Programing and multicore processors.

http://blogs.intel.com/research/tag/parallelprogramming

http://software.intel.com/en-us/multi-core

http://www.ddj.com/hpc-high-performance-computing/201804248

http://en.wikipedia.org/wiki/Computer_multitasking

http://en.wikipedia.org/wiki/Multi-core

An expert from Intel Team might answer the rest .

0 Kudos
Dmitry_Vyukov
Valued Contributor I
668 Views
Quoting - atanug

a)What is the parallel programming model supported by the Intel's multicore processors? Is it task parallel or data parallel? Is there any way that an user can exploit these features while building its own software on top of the Linux or Windows OS? Which OS is better with respect to the multicore - Windows or Linux?

They are general-purpose, i.e they equally support all high-level models: data parallelism, task parallelism, unstructured thread parallelism etc. Actually they only provide some basic means for really parallel execution of several "activities", all other depends on software.

The most general way to exploit parallelism is OS threads, i.e. you create several OS threads, and OS will try to execute them actually in parallel. There are also higher-level abstractions like OpenMP, TBB, IPP.

Windows and Linus have roughly equal support for multiprocessing. They both have threads, affinities, synchronization primitives etc. Although Windows has some interesting features like WaitForMultipleObjects(), and FlushProcessWriteBuffers().

0 Kudos
Dmitry_Vyukov
Valued Contributor I
668 Views
Quoting - atanug

b) Is the current form ofdevelopment tools from Intel exploit the core parallelism up to full extent? For example, given a large task or C program, do Intel supportedC complier exploits parallelism in its best? Is there any design guideline from Intel regarding how to take advantages of architectural features while workingon designing an application in Windows or Linux OS?

Exploitation of multi-core up to full extent depends more on your application (architecture, implementation), not on the tools. Although Intel has a number of tools/libraries which can help with it: Thread Checker, Performance Tuning Utility, Threading Building Blocks, Integrated Performance Primitives etc.

You can find a number of guidelines in Intel Multicore Knowledge Base:

http://software.intel.com/en-us/articles/multi-core/all/1

0 Kudos
Dmitry_Vyukov
Valued Contributor I
668 Views
Quoting - atanug

Kindly providerelevent literatures which will help me to gain understanding of parallel programming enviornment on Intel multiocre GPPs.

Actually there is not so much new wrt exactly Intel systems. If you have expirience with other SMP, SMP-NUMA or HWT systems, then you can start developing for Intel systems right away.

I think the main difference is that communication between cores is much cheaper than in SMP systems. Some cores even share L2/L3 cache.

Also Hyper-Threading technology has some caveats. Logical model of Hyper-Threading is two separate processors, however physical model of that is more like single-processor. I.e. HT threads share execution units, caches and other machinery inside core.

0 Kudos
Reply