Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Getting starting with Parallel programming [closed]

So it looks like multicore and all its associated complications are here to stay. I am planning a software project that will definitely benefit from parallelism. The problem is that I have very little experience writing concurrent software. I studied it at University and understand the concepts and theory very well but have zero hands on useful experience building software to run on on multiple processors since school.

So my question is, what is the best way to get started with multiprocessor programming? I am familiar with mostly Linux development in C/C++ and Obj-C on Mac OS X with almost zero Windows experience. Also my planned software project will require FFT and probably floating point comparisons of a lot of data.

There is OpenCL, OpenMP, MPI, POSIX threads, etc... What technologies should I start with?

Here are a couple stack options I am considering but not sure if they will let me experiment in working towards my goal:

  • Should I get Snow Leopard and try to get OpenCL Obj-C programs to run execution on the ATI X1600 GPU on my laptop? or
  • Should I get a Playstation and try writing C code to throw across its six available Cell SPE cores? or
  • Should I build out a Linux box with an Nvidia card and try working with CUDA?

Thanks in advance for your help.

like image 294
Talesh Avatar asked Oct 06 '09 22:10

Talesh


People also ask

Why parallel programming is difficult?

Parallel programs are inherently more difficult to debug than sequential programs. Because there are a number of processes running simultaneously, it is harder to get a good view on the state and progress of a parallel computation than of a sequential one.

Is parallel programming hard book?

Parallel programming is not as hard as some say, and we hope that this book makes your parallel-programming projects easier and more fun. In short, where parallel programming once focused on science, research, and grand-challenge projects, it is quickly becoming an engineering discipline.

What are the 4 aspects of parallel processing?

Parallel processing is associated with the visual system in that the brain divides what it sees into four components: color, motion, shape, and depth.

How do you achieve parallel programming?

How Does Parallel Programming Work? Parallel programming works by assigning tasks to different nodes or cores. In High Performance Computing (HPC) systems, a node is a self-contained unit of a computer system contains memory and processors running an operating system.


1 Answers

I'd suggest going OpenMP and MPI initially, not sure it matters which you choose first, but you definitely ought to want (in my opinion :-) ) to learn both shared and distributed memory approaches to parallel computing.

I suggest avoiding OpenCL, CUDA, POSIX threads, at first: get a good grounding in the basics of parallel applications before you start to wrestle with the sub-structure. For example, it's much easier to learn to use broadcast communications in MPI than it is to program them in threads.

I'd stick with C/C++ on your Mac since you are already familiar with them, and there are good open-source OpenMP and MPI libraries for that platform and those languages.

And, and for some of us it's a big plus, whatever you learn about C/C++ and MPI (to a lesser extent it's true of OpenMP too) will serve you well when you graduate to real supercomputers.

All subjective and argumentative, so ignore this if you wish.

like image 102
High Performance Mark Avatar answered Oct 03 '22 22:10

High Performance Mark