[PLUG] MPI for C.

michael michael at robinson-west.com
Fri Nov 24 17:04:48 UTC 2017


http://condor.cc.ku.edu/~grobe/docs/intro-MPI-C.shtml

I want to use message passing interface in C programs running on 
Raspberry Pi 3's running Raspbian Stretch, but I don't know which 
package to install
via apt for mpi.h. There is the question of whether or not I can catch 
on to how mpi works quickly.  I have a hard December 12th deadline to 
make three
C programs work at least decently together.  Program A produces a PNG 
file, program B tries to lock that file and display it.  There are a few 
cases to
consider.  Case 1, the file does not exist, Case 2, the file exists but 
is not completely written out, Case 3, the file is written out and 
ready,
Case 4, file exists but it is not a good PNG file.  The programs 
currently try to lock the file in question, but you don't want to lock 
on Cases 1, 2,
or 4.  Best if A can signal B to process the file when the file is 
ready.  Signalling is preferable because the file is being frequently 
replaced by
program A.

A separate issue, program A needs to start before program B because 
program B needs the file that A creates.  Thoughts on how to fix program 
B so that
it will sleep and not lock the file before A has created it are very 
much appreciated.  One caveat, B should print an error message if A 
doesn't get
the file made in 12-20 seconds.  The only thought I have is can a C 
program check for a specific process by name and sleep if that process 
can't be
found?  Program B should NEVER run in the absence of program A for more 
than a few seconds and B should wait for no longer than twenty seconds 
to let
A complete production of the PNG file it needs.

A friend and professional programmer recommends that the project be 
redone in the Go programming language.  Thoughts on using Go, sticking 
with C, or
switching to C++ are very much appreciated.  OpenCV is C++ based by the 
way and we are doing computer vision processing in this project.  The C
language predates multi core programs that run multiple threads and pass 
information via multiple processes and multiple files.  The PNG file is
written to an NFS 4 share by the way as well, so there is a networking 
component involved.  I don't have much time to figure out the networking 
part
let alone change it sadly.  When you have multiple projectors calling 
one controller, that gets to be a lot for that controller.  Pi 3's are 
limited.
What tools should I be using to troubleshoot the controller and make 
sure it isn't being overloaded?  I want to answer this question 
accurately, "How
many projectors can one controller support?"  If the system isn't fast 
enough, it won't be used and everyone at Apex will be put out of work 
:-(



More information about the PLUG mailing list