LAM/MPI logo

LAM/MPI General User's Mailing List Archives

  |   Home   |   Download   |   Documentation   |   FAQ   |   all just in this list

From: karla b (kartle_at_[hidden])
Date: 2005-03-14 11:18:52


Hi Jeff,

Many thanks for your very helpful comments.

I followed those comments some months ago as at the time they were
very pertinent to me, though at that time I was still very new to
parallel programming so felt that I needed to go off and learn myself
first, not having experience with the problems mentioned. Now however
I am at the next stage having made all manner of attempts.

The tutorial that Brian suggested was one of the very first reference
materials I used, along with the Notre Dame tutorials, numerous
lecture notes and materials gained from the web, I even bought Quinn,
Parallel programming with C and MPI! Now its not that I am a novice
programmer, sequentially I have been programming for a few years,
however the parallel paradigm I now realize after a lot of work is so
highly conceptual, something us novice programmers find hard to deal
with at first, the confidence gained in rolling into object oriented
programming for a novice programmer, for instance using java classes
left right and center to do all kinds of predefined fancy things, is
shattered when it comes to parallel programming. I think it could be
said that in this paradigmm you are really forced to think, perhaps
for the first time! and the power of 50 lines of code comes into its
own!

The problems I'm having are absolute meat and drink to all of you
experienced boys, however there are and will of course always be a
large number of beginner who struggle and can simply be put off and
not enjoy the potential benefits of parallel programming.

My struct based attempt is an effort to reduce communication overhead,
however my question then became how do I pass a struct? Or is
contiguous a better option? The tutorial that Brian suggested (which I
spent some time working with) in its user defined types example uses
variables named lena, loca, for defining length and types etc (it was
so confusing, I was looking for Ricky Martin the whole time!) of new
datatype, it was extremely confusing in that I was trying to send a 2d
array, so number of elements was a sticking point (and still I am
not sure how exactly to set it up properly!) I found something of an
answer in the Notre Dame tutorial 2, slide 41 I think, which gave a
better example of this procedure. Also in my problem area, the Lam
master/skeleton treats work as a finite set, whereas I'll have to keep
working until a minimum is converged upon, this of course can only
happen if and when I can figure out how to pass my struct!!

 So you see what this highlights is that (as I'm sure is the case with
many novice programmers) we certainly need examples and tutorials,
however when we finally try and make our own attempts (and as I've
more than shown!) make silly mistakes, when attempting to apply our
own solutions to our specific problems. It often takes only a few
comments and points in the right direction to solve the problem from
someone with experience. I have refrained for months from asking
here, instead taking my own approaches to the problem solving, however
one can only go so long without asking a more experienced person. The
comments I received in the past few days here, have been more helpful
and alerted me more to the basic mistakes I am making, than months of
trying different solutions both with the Lam master slave skeleton and
the resources suggested.

I am glad that you accept that there is a hole to be filled here and
fully accept that you the LAM developers do not have the time or
resources to fill this gap. I would be more than willing to help in
trying to find a solution to this as we all know that these problems
for beginners are never going to end! Especially seeing as I am still
one of them who cannot even get their solution running properly!!!
Now I'm back off to mulling over how to pass a struct with a 2d array!!!

Many thanks,
k

ps, I had no idea about the usenet group suggested by Dave, perhaps we
should have something here tho, (or directed to from here) as it is
the natural, central point to which people will go (and annoy the
developers!!! Sorry again!) I have to stop writing these long mails!!!

On Mon, 14 Mar 2005 09:18:04 -0500, Jeff Squyres <jsquyres_at_[hidden]> wrote:
> Brian is totally correct; we just don't have the time to help everyone
> debug their MPI codes. But your point is valid as well -- where does
> one go to get practical knowledge about MPI?
>
> I should mention that the tutorial Brian cited is actually quite
> excellent -- I'd strongly advise looking into it.
>
> But having a community MPI site would be a Good Thing exactly for the
> reasons you cited. Some LAM users brought this up a month or three
> ago. We started some off-list conversations about it and then I
> dropped the ball and never carried through. Mea culpa.
>
> I'll re-start those conversations and see what we come up with.
>
>
> On Mar 13, 2005, at 8:49 PM, karla b wrote:
>
> > Hi Brian, many thanks for the response
> >
> >> So what exactly is the problem you are seeing? We (the LAM
> >> developers)
> >> unfortunately can not provide general debugging assistance - there are
> >> too many users and not nearly enough developers. That being said,
> >> we're more than willing to answer specific questions you might have
> >> about MPI and specifically about the LAM implementation.
> >
> > I completely understand what you are saying here, however I would
> > point out that for new users there seem to be very few places to go to
> > receive help when attempting to scale the learning curve of parallel
> > programming. Although this problem was posted here, suggestions came
> > originally from a subscriber to the list, it simply raises the issue
> > of where else is there a central repository of working know how and
> > experience? experts exchange for example list only 79 mpi related
> > queries.
> >
> > Most searches on the internet seem to point to academic style lecture
> > notes/publications or very high end applications, the nature of which
> > can often be very specific or just difficult to comprehend for
> > newcommers to parallel programming. As I'm sure was the case with
> > everyone subscribed, we all had to learn somewhere and of course by
> > attemping solutions and having mistakes pointed out usually leads to
> > far better learning than trying to decipher existing code and tailor
> > it, so that said, thanks again for pointing out the errors, is there
> > anywhere else then that I can go so that I don't keep annoying the LAM
> > developers but may get in touch with people who may point out newbie
> > (silly) mistakes ??? ; )
> >
> > Many thanks,
> > k
> >
> >> I do see a couple of problems with your code that seem to indicate a
> >> misunderstanding of the MPI send/recv interfaces. You might want to
> >> find a good resource on using MPI and work through the examples. One
> >> I
> >> would suggest is the NCSA's Introduction to MPI:
> >>
> >> http://webct.ncsa.uiuc.edu:8900/public/MPI/
> >>
> >> In particular, in the client you have an MPI_Waitany at the top of a
> >> while(1) loop, but only post a non-blocking operation outside of the
> >> while() loop. This might work the first time through the loop, but
> >> after that, you might not have any requests that can be progressed to
> >> completion. You also don't call any Test or Wait functions for the
> >> non-blocking communication used in the master, so the communication
> >> may
> >> never complete there.
> >>
> >>
> >> Hope this helps,
> >>
> >> Brian
> >>
> >> --
> >> Brian Barrett
> >> LAM/MPI developer and all around nice guy
> >> Have an LAM/MPI day: http://www.lam-mpi.org/
> >>
> >>
> > _______________________________________________
> > This list is archived at http://www.lam-mpi.org/MailArchives/lam/
> >
>
> --
> {+} Jeff Squyres
> {+} jsquyres_at_[hidden]
> {+} http://www.lam-mpi.org/
>
> _______________________________________________
> This list is archived at http://www.lam-mpi.org/MailArchives/lam/
>