in reply to Re: Parallel computing with perl?
in thread Parallel computing with perl?

1. it's actually data munging, comparing two huge datasets, operating on one or both or several datasets by some rules. The operation mostly involves searching certain pattern of some data in file according to the others, and do some operation on these data.

2. linux system

3. each file is about 40 million lines (data points)

I knew very little about MPI or openMP. They can do such a job for c, but they need to be compiled. As for perl, I really have no idea how to implement it.

If someone can give me an example, it will be greatly appreciated.

Replies are listed 'Best First'.
Re^3: Parallel computing with perl?
by BrowserUk (Patriarch) on Oct 27, 2008 at 07:42 UTC

    1. comparing two huge datasets, operating on one or both or several datasets ... and do some operation on these data.

      Which is it? One, two or if more, how many more?

      Do those operations modify the original data?

      If so, do other concurrent processes need to see those changes as they happen?

    2. Each file is about 40 million lines (data points)

      And how long are those lines? Ie. What is the total size of the file(s)?

    Do the algorithms involved require random access to the entire dataset(s)? Or sequential access? Or random or sequential access to just some small subset for each top level iteration?

    All of these questions have a direct influence upon what techniques are applicable to your application (regardless of the language used). And each answer will probably lead to further questions.

    Your best hope of getting a good answer to your best way forward, would be to describe the application in some detail, noting volumes of data and times taken for existing serial processing. Making an existing serial processing script (or at least a fairly detailed pseudo-code description if the application is overly large or proprietary), would be better still.


    Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
    "Science is about questioning the status quo. Questioning authority".
    In the absence of evidence, opinion is indistinguishable from prejudice.
      Necroshine

      Besides, if you have data with interdependency data, AND you want to use multiple processors, or a 'grid', you will have serious problems to treat with the multiprocessing, whatever techinics you will to use.

      So in this case, I recommend MPI libraries, because you have the possibility of send data between processes(and the control of this by the processors), and this was made in C language. Perl have some support to MPI, but I never used it(RTFM CPAN). So, if you have inderdependency to data, this is not a problem(but is complicated ;) ), with MPI.

      Now, if you don't have a interdependency, you can just to use forks package(threads clone, but you don't need to activate thread mode), or some library that manipulates forks, or some other package. Check this in CPAN, RTFM and have fun!!