How Much Architecture Knowledge Is Needed for Parallel Programming?

Click For Summary
SUMMARY

Understanding parallel programming requires a foundational knowledge of various computing architectures, including multi-core CPUs and GPUs. The discussion emphasizes that while some practitioners may use parallel programming with minimal architectural knowledge, a deeper understanding enhances efficiency and effectiveness in coding. Key tools mentioned include Visual Studio for MMX and SSE support, Intel's Math Kernel Library (MKL), AMD's ACML, and NVIDIA's CULA for GPU programming. Mastery of threading and synchronization methods, particularly using pthreads or Windows threading APIs, is essential for successful parallel programming.

PREREQUISITES
  • Basic understanding of multi-core CPU architectures
  • Familiarity with GPU programming concepts
  • Knowledge of threading and synchronization methods (e.g., pthreads, Windows threading APIs)
  • Experience with C++ programming language
NEXT STEPS
  • Explore Intel Math Kernel Library (MKL) for optimized mathematical computations
  • Learn about AMD's ACML for high-performance computing on AMD processors
  • Investigate NVIDIA's CULA for GPU-accelerated linear algebra
  • Study threading and synchronization techniques in depth, focusing on pthreads and Windows APIs
USEFUL FOR

Researchers in computational fields, software developers working with parallel programming, and anyone looking to optimize performance in multi-threaded applications.

Einstein Mcfly
Messages
161
Reaction score
3
Hello folks. I just finished my phd in theoretical chemistry and my work thus far hasn't involved any parallel programming. In the future I'm sure I'll be expected to know and use parallel methods, so I'm trying to learn it now. The books that I'm reading from begin by describing the different cluster architectures and hardware details before getting to multi-threading etc etc before even talking about actually writing parallel code.

For those who use parallel programming often, how much of these details do I need to know? My impression of those that I work with is that they just sort of use parallel computing by including a few extra lines in their code and knowing that this will make the calculation faster.

Am I wasting my time learning it from a "computer scientist's" point of view, or is this the only way to go?

Thanks for any advice.
 
Technology news on Phys.org
Link to zip of example multi-threaded C++ dos console program to copy a file. Mutexes, semaphores, waitformultipleobjects(), and link list fifo "messaging" between threads are demonstrated.

http://jeffareid.net/misc/mtcopy.zip

Support for MMX and SSE instructions in Visual Studio:
http://msdn.microsoft.com/en-us/library/y0dh78ez.aspx

There are also math library packages for multi-core cpus and gpus

Intel:
http://software.intel.com/en-us/intel-mkl

Amd:
http://developer.amd.com/cpu/Libraries/acml/Pages/default.aspx

Ati gpu:
http://developer.amd.com/gpu/acmlgpu/pages/default.aspx

Nividia gpu (CULA):
http://www.culatools.com
 
Last edited by a moderator:
You should have a general understanding of different architectures. The sole purpose of parallel programming is to get stuff done faster than it would be in a single thread, and different architectures require different approaches. It's one thing to code for a Core2Quad (four processors, lots of fast shared and local memory). It's different to code for a GPU (two hundred processors, very limited local memory, serialized access to shared memory). It's something else entirely to code for a cluster of computers connected to each other with ethernet cables.

A good starting point would be to understand basic methods of threading and synchronization on a multicore machine, using pthread (Unix) or Windows threading APIs.
 

Similar threads

  • · Replies 102 ·
4
Replies
102
Views
3K
  • · Replies 8 ·
Replies
8
Views
3K
  • · Replies 6 ·
Replies
6
Views
2K
  • · Replies 7 ·
Replies
7
Views
3K
Replies
16
Views
3K
Replies
37
Views
6K
Replies
33
Views
3K
  • · Replies 6 ·
Replies
6
Views
2K
  • · Replies 22 ·
Replies
22
Views
2K