need suggestions for Distributed Programming ~ parallel processing

unglued

Junior Member
Jun 5, 2014
2
0
66
Hey guys, I'm working on a project and I need you guys to help me out with suggestions.
I need suggestions for programs that I could write that uses the Distributed Programming with the focus on parallel processing.
Just a little more info on this project:
- It's a plugin based program.
- Users are able to load a plugin, and the software will "run" the plugin.
- The plugins must be programs that uses distributed computing and focus on parallel processing.
- Some plugins can be focused on GPU Programming and such programs must focus on parallel processing.

Does it makes sense? I guess I'm not sure what I can / cannot do with the Distributed Programming.
From my research so far, it looks like I'll be using OpenMPI for plugins that communicate with multiple peers, CUDA or OpenCL for programming plugins that use the GPU.

This is part of my senior project in my CS, and my professor has approved it, so if you guys could help me to figure out what kinds of programs (plugins) I could write that uses Distributed Programming (that focuses on parallel processing), I'd appreciate a lot.
I chose parallel processing as the focus of my project, knowing that many peers can be connected to the server at the same time.
The plugins I'm going to write don't have to be too complicated, but they must show that I'm handling parallel processing. For instance, an idea for a plugin I had was to write a program that connects to multiple peers and uses each one of them to generate prime numbers (kinda like what the GIMPS project does). I'm not sure what other plugins I could write that shows that I can handle parallel processing.

Any help or suggestions is appreciated, thanks!
 

Rudy Toody

Diamond Member
Sep 30, 2006
4,267
421
126
When The Skynet POGS first began, they had announced plans to parallelize the process for GPUs. They were going to have a graduate student whip up the code over the summer. It must have been more complicated than expected.

However, they work with square (or rectangle) images extracted from within other images.This links to several views of a galaxy. Imagine hundreds of tiny squares processed by hundreds of BOINC users and stitched together to form the image.

I think that using an image from this project would be a nice demonstration of your parallel plugin scaffolding. You could show the progress of the image; from raw data, to partially completed, to final image.

And the images would look very nice in a paper!

You would need to contact them to see if they're willing to give you those three stages: raw data, partially completed, and final image. And the algorithms, of course. Then all you have to do is duplicate it.

Good luck! It's an interesting project.
 
Last edited:

unglued

Junior Member
Jun 5, 2014
2
0
66
cool idea, I like it, but it's a little overkill. I'm planning on writing a few simple different plugins, rather than a single one that is hard.

any other suggestions for problems I could solve in distributed programming that shows the concept of parallel processing?
 
Last edited:

Ken g6

Programming Moderator, Elite Member
Moderator
Dec 11, 1999
16,241
3,829
75
From my research so far, it looks like I'll be using OpenMPI for plugins that communicate with multiple peers
At first, when I read this, I thought you were just recreating BOINC. But this makes your project more interesting.

I came up with an idea sort of like this back when I was in college, but it didn't come together until too late to make it part of any class project. There are two big issues with DC: latency of workers, especially if they fail or are shut down, and latency between workers. BOINC just takes work back to the server, but I had a more interesting idea: peer-to-peer distributed computing.

Each task is divided up into sub-tasks, but some sub-tasks need one or more results from other sub-tasks before they can get started. So a worker could query its nearest neighbors to see if they have the necessary sub-task, or have been assigned it. If not, it could query them to see who has the most prerequisites to that sub-task, and then assign the task to the worker with the most prerequisites and the least other work. (Obviously, this needs some research to determine how to do the assignments.) I would compare this method to BitTorrent - getting the parts needed from peers - but also generating some internally.

BOINC can do work that doesn't require quick communication between tasks, like prime finding. But this could also do work that requires quicker communication, such as hierarchical n-body gravitational simulation or fluid dynamics, etc.