caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* [Caml-list] Distributed computing libraries
@ 2012-06-06 16:53 Thomas Braibant
  2012-06-06 17:31 ` oliver
                   ` (3 more replies)
  0 siblings, 4 replies; 20+ messages in thread
From: Thomas Braibant @ 2012-06-06 16:53 UTC (permalink / raw)
  To: caml-list

Hi list,

There exists several different "distributed computing libraries" in OCaml:

- Functory http://functory.lri.fr/
- JoCaml http://jocaml.inria.fr/ (not really a library, though)
- Nproc https://github.com/MyLifeLabs/nproc
- OCaml for multicore http://www.algo-prog.info/ocmc/web/ (not a library either)
- Parmap https://gitorious.org/parmap/parmap
- Plasma Map/Reduce http://plasma.camlcity.org/plasma/

And I am pretty sure that this list is not exhaustive, looking at
http://caml.inria.fr/cgi-bin/hump.en.cgi?sort=0&browse=77

Maybe it would be interesting for the community if someone could sum
up the pros and cons of each of this "libraries", and maybe give some
information about their status (still in development, mature, etc)?

With best regards,
Thomas Braibant

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [Caml-list] Distributed computing libraries
  2012-06-06 16:53 [Caml-list] Distributed computing libraries Thomas Braibant
@ 2012-06-06 17:31 ` oliver
  2012-06-06 17:34   ` Vincent Aravantinos
  2012-06-06 18:01 ` AW: " Gerd Stolpmann
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 20+ messages in thread
From: oliver @ 2012-06-06 17:31 UTC (permalink / raw)
  To: Thomas Braibant; +Cc: caml-list

On Wed, Jun 06, 2012 at 12:53:07PM -0400, Thomas Braibant wrote:
> Hi list,
> 
> There exists several different "distributed computing libraries" in OCaml:
> 
> - Functory http://functory.lri.fr/
> - JoCaml http://jocaml.inria.fr/ (not really a library, though)
> - Nproc https://github.com/MyLifeLabs/nproc
> - OCaml for multicore http://www.algo-prog.info/ocmc/web/ (not a library either)
> - Parmap https://gitorious.org/parmap/parmap
> - Plasma Map/Reduce http://plasma.camlcity.org/plasma/
[...]

  - CamlP3l http://camlp3l.inria.fr/eng.htm


[...]
> Maybe it would be interesting for the community if someone could sum
> up the pros and cons of each of this "libraries", and maybe give some
> information about their status (still in development, mature, etc)?
[...]

Yes this would be fine.
And maybe "someone" could also mean some people...
...maybe there are people out there, that now one or two of them well,
and other of these libs not or not well.

...so that the information can be gathered by a lot of people.

But it would be fine to have some criteria for classifying.

For example:

  - one / multicore
  - local machine / distributed via net
  - threads / processes
  - just library calls, language extension, or seperate language 
  - toplevel-runtime / byte code / native-code
  - necessity of code rewrite for local and remote/distributive stuff,
     or possibility of transparent usage
  - ...


Ciao,
   Oliver

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [Caml-list] Distributed computing libraries
  2012-06-06 17:31 ` oliver
@ 2012-06-06 17:34   ` Vincent Aravantinos
  0 siblings, 0 replies; 20+ messages in thread
From: Vincent Aravantinos @ 2012-06-06 17:34 UTC (permalink / raw)
  To: caml-list



On 06/06/2012 01:31 PM, oliver wrote:
> On Wed, Jun 06, 2012 at 12:53:07PM -0400, Thomas Braibant wrote:
>> Maybe it would be interesting for the community if someone could sum
>> up the pros and cons of each of this "libraries", and maybe give some
>> information about their status (still in development, mature, etc)?
> [...]
>
> Yes this would be fine.
> And maybe "someone" could also mean some people...
> ...maybe there are people out there, that now one or two of them well,
> and other of these libs not or not well.
>
> ...so that the information can be gathered by a lot of people.
>
> But it would be fine to have some criteria for classifying.
>
> For example:
>
>    - one / multicore
>    - local machine / distributed via net
>    - threads / processes
>    - just library calls, language extension, or seperate language
>    - toplevel-runtime / byte code / native-code
>    - necessity of code rewrite for local and remote/distributive stuff,
>       or possibility of transparent usage
- compatibility with commonly used libraries

-- 
Vincent Aravantinos
Postdoctoral Fellow, Concordia University, Hardware Verification Group
http://users.encs.concordia.ca/~vincent


^ permalink raw reply	[flat|nested] 20+ messages in thread

* AW: [Caml-list] Distributed computing libraries
  2012-06-06 16:53 [Caml-list] Distributed computing libraries Thomas Braibant
  2012-06-06 17:31 ` oliver
@ 2012-06-06 18:01 ` Gerd Stolpmann
  2012-06-06 18:16   ` Edgar Friendly
  2012-06-06 20:52   ` Thomas Braibant
  2012-06-06 20:24 ` Roberto Di Cosmo
  2012-06-08  8:58 ` jean-marc alliot
  3 siblings, 2 replies; 20+ messages in thread
From: Gerd Stolpmann @ 2012-06-06 18:01 UTC (permalink / raw)
  To: Thomas Braibant; +Cc: caml-list

Am 06.06.2012 18:53:07 schrieb(en) Thomas Braibant:
> Hi list,
> 
> There exists several different "distributed computing libraries" in  
> OCaml:
> 
> - Functory http://functory.lri.fr/
> - JoCaml http://jocaml.inria.fr/ (not really a library, though)
> - Nproc https://github.com/MyLifeLabs/nproc
> - OCaml for multicore http://www.algo-prog.info/ocmc/web/ (not a  
> library either)
> - Parmap https://gitorious.org/parmap/parmap
> - Plasma Map/Reduce http://plasma.camlcity.org/plasma/
> 

These are very different pieces of software, because they tackle  
problems at various abstraction levels. ocmc is the most level-level  
here, as it "only" tries to improve the runtime so that threads can be  
run in parallel on multiple cores. That's it, there is no additional  
abstraction on top of the standard threading API - no distribution, no  
computing.

JoCaml uses the normal multi-threading in the runtime, but integrates  
it differently into the language. So, it adds abstraction, but you are  
still limited to a single core.

So far I know, all the other libraries base on multi-processing to run  
programs on multiple cores. Plasma is the only one with true  
distribution capabiltiies beyond a single computer, but the price is  
that you must use the map/reduce scheme, whereas functory or parmap  
leave you more freedom. However, all multi-processing approaches share  
the property that the data flow is limited by process boundaries  
(unless you go really low-level and also take Netmulticore into  
consideration (part of Ocamlnet), which uses shared memory to overcome  
these limitations).

I don't know what you are exactly looking for. Knowing the problem it  
would be easier to recommend something.

Gerd



> And I am pretty sure that this list is not exhaustive, looking at
> http://caml.inria.fr/cgi-bin/hump.en.cgi?sort=0&browse=77
> 
> Maybe it would be interesting for the community if someone could sum
> up the pros and cons of each of this "libraries", and maybe give some
> information about their status (still in development, mature, etc)?
> 
> With best regards,
> Thomas Braibant
> 
> --
> Caml-list mailing list.  Subscription management and archives:
> https://sympa-roc.inria.fr/wws/info/caml-list
> Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
> Bug reports: http://caml.inria.fr/bin/caml-bugs
> 
> 
> 



-- 
------------------------------------------------------------
Gerd Stolpmann, Darmstadt, Germany    gerd@gerd-stolpmann.de
Creator of GODI and camlcity.org.
Contact details:        http://www.camlcity.org/contact.html
Company homepage:       http://www.gerd-stolpmann.de
------------------------------------------------------------

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: AW: [Caml-list] Distributed computing libraries
  2012-06-06 18:01 ` AW: " Gerd Stolpmann
@ 2012-06-06 18:16   ` Edgar Friendly
  2012-06-06 18:18     ` oliver
  2012-06-06 18:35     ` AW: " Gerd Stolpmann
  2012-06-06 20:52   ` Thomas Braibant
  1 sibling, 2 replies; 20+ messages in thread
From: Edgar Friendly @ 2012-06-06 18:16 UTC (permalink / raw)
  To: caml-list

> So far I know, all the other libraries base on multi-processing to run
> programs on multiple cores. Plasma is the only one with true
> distribution capabiltiies beyond a single computer, but the price is
> that you must use the map/reduce scheme, whereas functory or parmap
> leave you more freedom.

Functory is able to run across a network, with clients listening for 
connections from the master to give them work to do.  It is restricted 
to a variant of map/reduce, so it doesn't give you that much freedom.

E.

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: AW: [Caml-list] Distributed computing libraries
  2012-06-06 18:16   ` Edgar Friendly
@ 2012-06-06 18:18     ` oliver
  2012-06-06 18:35     ` AW: " Gerd Stolpmann
  1 sibling, 0 replies; 20+ messages in thread
From: oliver @ 2012-06-06 18:18 UTC (permalink / raw)
  To: Edgar Friendly; +Cc: caml-list

On Wed, Jun 06, 2012 at 02:16:51PM -0400, Edgar Friendly wrote:
> >So far I know, all the other libraries base on multi-processing to run
> >programs on multiple cores. Plasma is the only one with true
> >distribution capabiltiies beyond a single computer, but the price is
> >that you must use the map/reduce scheme, whereas functory or parmap
> >leave you more freedom.
> 
> Functory is able to run across a network, with clients listening for
> connections from the master to give them work to do.  It is
> restricted to a variant of map/reduce, so it doesn't give you that
> much freedom.


OCamlP3l allows computations transparently local or runnuning over many hosts.

Ciao,
   Oliver

^ permalink raw reply	[flat|nested] 20+ messages in thread

* AW: AW: [Caml-list] Distributed computing libraries
  2012-06-06 18:16   ` Edgar Friendly
  2012-06-06 18:18     ` oliver
@ 2012-06-06 18:35     ` Gerd Stolpmann
  2012-06-06 18:44       ` Edgar Friendly
  1 sibling, 1 reply; 20+ messages in thread
From: Gerd Stolpmann @ 2012-06-06 18:35 UTC (permalink / raw)
  To: Edgar Friendly; +Cc: caml-list

Am 06.06.2012 20:16:51 schrieb(en) Edgar Friendly:
>> So far I know, all the other libraries base on multi-processing to  
>> run
>> programs on multiple cores. Plasma is the only one with true
>> distribution capabiltiies beyond a single computer, but the price is
>> that you must use the map/reduce scheme, whereas functory or parmap
>> leave you more freedom.
> 
> Functory is able to run across a network, with clients listening for  
> connections from the master to give them work to do.  It is  
> restricted to a variant of map/reduce, so it doesn't give you that  
> much freedom.

Thanks for correcting me.

As you know Functory a bit better: how is the data delivered to network  
clients? Just via the network connection that also assigns the work to  
do? That would be a bit lame, and not really useful.

Gerd


> E.
> 
>-- 
> Caml-list mailing list.  Subscription management and archives:
> https://sympa-roc.inria.fr/wws/info/caml-list
> Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
> Bug reports: http://caml.inria.fr/bin/caml-bugs
> 
> 


-- 
------------------------------------------------------------
Gerd Stolpmann, Darmstadt, Germany    gerd@gerd-stolpmann.de
Creator of GODI and camlcity.org.
Contact details:        http://www.camlcity.org/contact.html
Company homepage:       http://www.gerd-stolpmann.de
------------------------------------------------------------

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: AW: AW: [Caml-list] Distributed computing libraries
  2012-06-06 18:35     ` AW: " Gerd Stolpmann
@ 2012-06-06 18:44       ` Edgar Friendly
  0 siblings, 0 replies; 20+ messages in thread
From: Edgar Friendly @ 2012-06-06 18:44 UTC (permalink / raw)
  To: Gerd Stolpmann; +Cc: caml-list

On 06/06/2012 02:35 PM, Gerd Stolpmann wrote:
> As you know Functory a bit better: how is the data delivered to network
> clients? Just via the network connection that also assigns the work to
> do? That would be a bit lame, and not really useful.

Yes, the input parameters of the function to be run are sent over the 
network connection that assigns work to do, and the results come back 
over that same connection.  That said, it's possible to use a network 
file system to distribute the real data and just pass filenames over the 
control channel.

E.

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [Caml-list] Distributed computing libraries
  2012-06-06 16:53 [Caml-list] Distributed computing libraries Thomas Braibant
  2012-06-06 17:31 ` oliver
  2012-06-06 18:01 ` AW: " Gerd Stolpmann
@ 2012-06-06 20:24 ` Roberto Di Cosmo
  2012-06-06 20:43   ` Thomas Braibant
  2012-06-06 22:23   ` [Caml-list] Distributed computing libraries Ashish Agarwal
  2012-06-08  8:58 ` jean-marc alliot
  3 siblings, 2 replies; 20+ messages in thread
From: Roberto Di Cosmo @ 2012-06-06 20:24 UTC (permalink / raw)
  To: Thomas Braibant; +Cc: caml-list

On Wed, Jun 06, 2012 at 12:53:07PM -0400, Thomas Braibant wrote:
<snip>
> Maybe it would be interesting for the community if someone could sum
> up the pros and cons of each of this "libraries", and maybe give some
> information about their status (still in development, mature, etc)?
> 
> With best regards,
> Thomas Braibant

Quite a good point, and it really goes beyond just the bunch of
(very useful) libraries that try to speed-up computations by
leveraging multicore/multiprocessors/clusters etc.

I think OCaml is a wonderful language, and it has the potential
to attract much more users if we can make it easy to find, build,
install, compare and assess the various libraries, packages
and tools that are available.

If I can dream with my eyes open (which is a decent way of
spending time while waiting for a plane in the middle
of Nebraska, after all :-)), I could imagine:

 (1) a central repository for OCaml projects where
   packages are uploaded, with their different versions, tagged,
   and classified, with pointers to the current, active development
   platform (github, gitorious, sourceforge, whatever) (Oasis DB?)

 (2) a continuous integration server testing buildability of the
   different versions of the packages, with different versions
   of the compiler, and on all available architectures, reporting
   errors in a meaningful way to their authors, and providing 
   extremely valuable information to users that will know 
   beforehand what works and what does not work on which
   configuration, instead of discovering this the hard way
   (Debian OCamlers lurking here surely know what is the source
    of inspiration of this part of my dream; and yes, Debian does
    all this for the Debian OCaml packages, but we need to cater
    to *all* users :-))

 (3) an organised OCamlPedia site where, for each 'class' of 
   problem (parallelism, parsing, graph algorithms, numerical
   computation, code transformation, you name it) developers and users
   can contribute to maintain up-to-date summaries, comparisons,
   test results, code snippets, pointers to scientific papers
   and the like...
   And for each "feature" of the language, I'd love to see tutorials,
   code examples, pointers to the relevant literature, and to
   packages showing them off.

To get there, we need to make our collaborative hidden side shine,
and complete the effort started by some of us to organise the community...
maybe this will happen during the coffee break at the next OCaml meeting.

Ok, time to stop dreaming, to go back to reality, and to catch that flight

--Roberto

P.S.: hey, I just checked, and ocamlpedia.* is available,
so I registered ocamlpedia.org, and I'll be more than happy
to offer it to whomever will run the site, if it happens :-)


^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [Caml-list] Distributed computing libraries
  2012-06-06 20:24 ` Roberto Di Cosmo
@ 2012-06-06 20:43   ` Thomas Braibant
  2012-06-07  1:48     ` [Caml-list] OCaml package managers Francois Berenger
  2012-06-06 22:23   ` [Caml-list] Distributed computing libraries Ashish Agarwal
  1 sibling, 1 reply; 20+ messages in thread
From: Thomas Braibant @ 2012-06-06 20:43 UTC (permalink / raw)
  To: Roberto Di Cosmo; +Cc: caml-list

<snip>
> I think OCaml is a wonderful language, and it has the potential
> to attract much more users if we can make it easy to find, build,
> install, compare and assess the various libraries, packages
> and tools that are available.

I completely agree with what you just said, and that was the point of
my question: trying to assess, in a single thread, the  various
possibilities that exist to solve a given problem [1]. Now, it happens
that I had been thinking about the same kind of mail about package
managers, because there is also a huge variety of solutions. So, I
could ask, what are the pros and cons of the following package
managers?

- https://github.com/thelema/odb
- https://github.com/hcarty/ocamlbrew
- https://github.com/OCamlPro/opam
- http://godi.camlcity.org/godi/index.html
- http://oasis.forge.ocamlcore.org/oasis-db.html

But I do not want to fork that thread yet ;).

I think a more general perspective on this was given a while ago on
this list by Xavier, a while ago on this list (trying to paraphrase):
- the community needs a common packaging system
- there is often a lack of convergence between related projects (in
this case, libraries, for instance).

>   And for each "feature" of the language, I'd love to see tutorials,
>   code examples, pointers to the relevant literature, and to
>   packages showing them off.

On a related note, I was delighted to see that there are two books
about OCaml in the pipes currently, and I think this is great.

Thomas
[1] Actually, I did that also a while ago, about openGL bindings, and
the following discussion was quite fruitful

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [Caml-list] Distributed computing libraries
  2012-06-06 18:01 ` AW: " Gerd Stolpmann
  2012-06-06 18:16   ` Edgar Friendly
@ 2012-06-06 20:52   ` Thomas Braibant
  2012-06-07  1:34     ` Francois Berenger
  1 sibling, 1 reply; 20+ messages in thread
From: Thomas Braibant @ 2012-06-06 20:52 UTC (permalink / raw)
  To: Gerd Stolpmann; +Cc: caml-list

> These are very different pieces of software, because they tackle problems at
> various abstraction levels. ocmc is the most level-level here, as it "only"
> tries to improve the runtime so that threads can be run in parallel on
> multiple cores. That's it, there is no additional abstraction on top of the
> standard threading API - no distribution, no computing.
>
> JoCaml uses the normal multi-threading in the runtime, but integrates it
> differently into the language. So, it adds abstraction, but you are still
> limited to a single core.
>
> So far I know, all the other libraries base on multi-processing to run
> programs on multiple cores. Plasma is the only one with true distribution
> capabiltiies beyond a single computer, but the price is that you must use
> the map/reduce scheme, whereas functory or parmap leave you more freedom.
> However, all multi-processing approaches share the property that the data
> flow is limited by process boundaries (unless you go really low-level and
> also take Netmulticore into consideration (part of Ocamlnet), which uses
> shared memory to overcome these limitations).
>
> I don't know what you are exactly looking for. Knowing the problem it would
> be easier to recommend something.

Thanks a lot for this answer.

As I said in another email, I do not have a problem to solve right
now. But, I was tickled by the Parmap announce, and I wondered how it
fared with the other related systems I knew about. (Yet, I reckon that
I should have made the question more precise, with a detailed lists of
criteria, akin to what Oliver suggested.)

In my mind, asking on the list was the best way to make a good summary
of the current situation on this front. (But I am afraid I do not know
the best place to make public this kind of summaries.)

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [Caml-list] Distributed computing libraries
  2012-06-06 20:24 ` Roberto Di Cosmo
  2012-06-06 20:43   ` Thomas Braibant
@ 2012-06-06 22:23   ` Ashish Agarwal
  2012-06-08  6:55     ` Roberto Di Cosmo
  1 sibling, 1 reply; 20+ messages in thread
From: Ashish Agarwal @ 2012-06-06 22:23 UTC (permalink / raw)
  To: Roberto Di Cosmo; +Cc: Thomas Braibant, caml-list

[-- Attachment #1: Type: text/plain, Size: 949 bytes --]

On Wed, Jun 6, 2012 at 4:24 PM, Roberto Di Cosmo <roberto@dicosmo.org>wrote:


>   (3) an organised OCamlPedia site where


The ocamlweb project announced at last year's OCaml User's Meeting can
serve this purpose. Please see the master repo here [1] and the live site
here [2]*. We welcome and need the community to add more content. We've
attempted to make contributing easier. You just checkout a git project, add
simple html, and submit a pull request. This is perhaps not as nice as a
wiki, but it let's us scale up to other features that wikis are not
suitable for.

If you need help getting a larger section started, such as on the topic of
this thread, just email me or the mailing list [3].

[1] https://github.com/agarwal/ocamlweb
[2] http://www.ocaml-lang.org/
[3] https://lists.forge.ocamlcore.org/cgi-bin/listinfo/ocamlweb-devel
* Note the live site is behind the master repo as we have some cleaning up
yet to do in the master branch.

[-- Attachment #2: Type: text/html, Size: 1536 bytes --]

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [Caml-list] Distributed computing libraries
  2012-06-06 20:52   ` Thomas Braibant
@ 2012-06-07  1:34     ` Francois Berenger
  2012-06-07 15:44       ` Thomas Braibant
  0 siblings, 1 reply; 20+ messages in thread
From: Francois Berenger @ 2012-06-07  1:34 UTC (permalink / raw)
  To: caml-list

On 06/07/2012 05:52 AM, Thomas Braibant wrote:
>> These are very different pieces of software, because they tackle problems at
>> various abstraction levels. ocmc is the most level-level here, as it "only"
>> tries to improve the runtime so that threads can be run in parallel on
>> multiple cores. That's it, there is no additional abstraction on top of the
>> standard threading API - no distribution, no computing.
>>
>> JoCaml uses the normal multi-threading in the runtime, but integrates it
>> differently into the language. So, it adds abstraction, but you are still
>> limited to a single core.
>>
>> So far I know, all the other libraries base on multi-processing to run
>> programs on multiple cores. Plasma is the only one with true distribution
>> capabiltiies beyond a single computer, but the price is that you must use
>> the map/reduce scheme, whereas functory or parmap leave you more freedom.
>> However, all multi-processing approaches share the property that the data
>> flow is limited by process boundaries (unless you go really low-level and
>> also take Netmulticore into consideration (part of Ocamlnet), which uses
>> shared memory to overcome these limitations).
>>
>> I don't know what you are exactly looking for. Knowing the problem it would
>> be easier to recommend something.
>
> Thanks a lot for this answer.
>
> As I said in another email, I do not have a problem to solve right
> now. But, I was tickled by the Parmap announce,

Don't hesitate, jump on it, that's really a nice technology.
The "minimal disruption" concept is quite interesting.
For example, if your List.iter is changed to a Parmap.pariter,
the parallelization of this portion of the code is done.

It's quite comfortable to develop and debug in single core mode 
(List.iter) and switch to the // version only once you're happy with
the sequential one.

Regards,
F.

 > and I wondered how it
> fared with the other related systems I knew about. (Yet, I reckon that
> I should have made the question more precise, with a detailed lists of
> criteria, akin to what Oliver suggested.)
>
> In my mind, asking on the list was the best way to make a good summary
> of the current situation on this front. (But I am afraid I do not know
> the best place to make public this kind of summaries.)
>


^ permalink raw reply	[flat|nested] 20+ messages in thread

* [Caml-list] OCaml package managers
  2012-06-06 20:43   ` Thomas Braibant
@ 2012-06-07  1:48     ` Francois Berenger
  0 siblings, 0 replies; 20+ messages in thread
From: Francois Berenger @ 2012-06-07  1:48 UTC (permalink / raw)
  To: caml-list

On 06/07/2012 05:43 AM, Thomas Braibant wrote:
> <snip>
>> I think OCaml is a wonderful language, and it has the potential
>> to attract much more users if we can make it easy to find, build,
>> install, compare and assess the various libraries, packages
>> and tools that are available.
>
> I completely agree with what you just said, and that was the point of
> my question: trying to assess, in a single thread, the  various
> possibilities that exist to solve a given problem [1]. Now, it happens
> that I had been thinking about the same kind of mail about package
> managers, because there is also a huge variety of solutions. So, I
> could ask, what are the pros and cons of the following package
> managers?
>
> - https://github.com/thelema/odb
> - https://github.com/hcarty/ocamlbrew
> - https://github.com/OCamlPro/opam
> - http://godi.camlcity.org/godi/index.html
> - http://oasis.forge.ocamlcore.org/oasis-db.html

Here is my personal experience with some of them (ocamlbrew, odb, oasis 
and oasis-db):
- ocamlbrew can be used to bootstrap odb (get OCaml and findlib from
   scratch)
- from there, odb can install other OCaml libraries and programs
- odb can install oasis and then use oasis-db to get packages
- you can modify a 'packages' file so that odb can install things
   that are not available publicly or that are not yet packaged for oasis

 From my point of view, these tools definitely have the UNIX taste:
they are fast, they are easy to use and quite easy to troubleshoot in 
case something doesn't work as expected; which make them excellent in my 
opinion compared to other solutions.

> But I do not want to fork that thread yet ;).

Why not? ;)

Regards,
F.

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [Caml-list] Distributed computing libraries
  2012-06-07  1:34     ` Francois Berenger
@ 2012-06-07 15:44       ` Thomas Braibant
  2012-06-08  0:53         ` Francois Berenger
  2012-06-08  6:36         ` Francois Berenger
  0 siblings, 2 replies; 20+ messages in thread
From: Thomas Braibant @ 2012-06-07 15:44 UTC (permalink / raw)
  To: Francois Berenger; +Cc: caml-list

> Don't hesitate, jump on it, that's really a nice technology.
> The "minimal disruption" concept is quite interesting.
> For example, if your List.iter is changed to a Parmap.pariter,
> the parallelization of this portion of the code is done.
>
> It's quite comfortable to develop and debug in single core mode (List.iter)
> and switch to the // version only once you're happy with
> the sequential one.

I see. However, looking at, e.g., Functory,
http://www.lri.fr/~filliatr/functory/doc/Functory.Cores.html it seems
that I can use it in the same fashion (Using Functory.Cores.map
instead of List.map) and that I can debug my code using
Functory.Sequential.map.

So this does not really discriminate between the two libraries. Note,
however, that I cannot find Parmap's API described on line (using
ocamldoc). Right now, it seems that I have to download it, to generate
the doc.

Note that Gerd's Plasma Map/Reduce has a nice and comprehensive
documentation available, but, being more ambitious maybe, it is harder
for a beginner to find his/her way in: the entry cost is higher.

By comparison, JOcaml's manual is written in a quasi-tutorial fashion
( http://jocaml.inria.fr/doc/index.html ) which makes it more easy to
start hacking stuff, even if the scope is a bit different.

And what about CamlP3l? What is its status? Is it superseded by Parmap
(the lists of authors of the two softwares have a non-empty
intersection)?

Maybe that I should add some criteria to Oliver's list:
- active / inactive
- used in the wild
- documentation (API, manual)
- examples / tutorials

With best regards,
Thomas

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [Caml-list] Distributed computing libraries
  2012-06-07 15:44       ` Thomas Braibant
@ 2012-06-08  0:53         ` Francois Berenger
  2012-06-08  6:36         ` Francois Berenger
  1 sibling, 0 replies; 20+ messages in thread
From: Francois Berenger @ 2012-06-08  0:53 UTC (permalink / raw)
  To: caml-list

Hello,

On 06/08/2012 12:44 AM, Thomas Braibant wrote:
>> Don't hesitate, jump on it, that's really a nice technology.
>> The "minimal disruption" concept is quite interesting.
>> For example, if your List.iter is changed to a Parmap.pariter,
>> the parallelization of this portion of the code is done.
>>
>> It's quite comfortable to develop and debug in single core mode (List.iter)
>> and switch to the // version only once you're happy with
>> the sequential one.
>
> I see. However, looking at, e.g., Functory,
> http://www.lri.fr/~filliatr/functory/doc/Functory.Cores.html it seems
> that I can use it in the same fashion (Using Functory.Cores.map
> instead of List.map) and that I can debug my code using
> Functory.Sequential.map.

Functory can distribute computations while parmap can only parallelize 
them on your local machine.
I'm pretty sure that parmap is faster at doing what they can be compared 
on because it has specialized optimizations that you cannot use if your 
data has to be distributed over the network.

The last time I looked at Functory:
- Functory had several not tail recursive functions and blew my stack
   (it was about one year ago, maybe things have changed)
- not any mailing list for functory
- while parmap has:
   parmap-devel <parmap-devel@inria.fr> and
   parmap-users <parmap-users@inria.fr>
- no GODI package for functory
- parmap has a GODI package (thanks to Jerome
   Maloberti) and maybe very soon an oasis one

> So this does not really discriminate between the two libraries. Note,
> however, that I cannot find Parmap's API described on line (using
> ocamldoc). Right now, it seems that I have to download it, to generate
> the doc.

At least there is a doc and you even managed to generate it.
('make doc' in a parmap checkout).
Maybe the doc will be online soon, who knows. ;)

> Note that Gerd's Plasma Map/Reduce has a nice and comprehensive
> documentation available, but, being more ambitious maybe, it is harder
> for a beginner to find his/her way in: the entry cost is higher.

It's also for distributed computing, parmap is for local parallelization.

> By comparison, JOcaml's manual is written in a quasi-tutorial fashion
> ( http://jocaml.inria.fr/doc/index.html ) which makes it more easy to
> start hacking stuff, even if the scope is a bit different.

I'm not sure it's standard OCaml code then.
At least with parmap and functory, they are just libraries that
you can plug into any plain vanilla OCaml source code.

> And what about CamlP3l? What is its status? Is it superseded by Parmap
> (the lists of authors of the two softwares have a non-empty
> intersection)?

I don't think it's just a library too.
Some more knowledgeable people may answer you on these.

Regards,
F.

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [Caml-list] Distributed computing libraries
  2012-06-07 15:44       ` Thomas Braibant
  2012-06-08  0:53         ` Francois Berenger
@ 2012-06-08  6:36         ` Francois Berenger
  1 sibling, 0 replies; 20+ messages in thread
From: Francois Berenger @ 2012-06-08  6:36 UTC (permalink / raw)
  To: caml-list

On 06/08/2012 12:44 AM, Thomas Braibant wrote:
>> Don't hesitate, jump on it, that's really a nice technology.
>> The "minimal disruption" concept is quite interesting.
>> For example, if your List.iter is changed to a Parmap.pariter,
>> the parallelization of this portion of the code is done.
>>
>> It's quite comfortable to develop and debug in single core mode (List.iter)
>> and switch to the // version only once you're happy with
>> the sequential one.
>
> I see. However, looking at, e.g., Functory,
> http://www.lri.fr/~filliatr/functory/doc/Functory.Cores.html it seems
> that I can use it in the same fashion (Using Functory.Cores.map
> instead of List.map) and that I can debug my code using
> Functory.Sequential.map.
>
> So this does not really discriminate between the two libraries. Note,
> however, that I cannot find Parmap's API described on line (using
> ocamldoc). Right now, it seems that I have to download it, to generate
> the doc.

Roberto Di Cosmo just created a home page:
http://www.dicosmo.org/code/parmap/

The ocamldoc-generated pages are here:
http://www.dicosmo.org/code/parmap/doc/Parmap.html

Regards,
F.

> Note that Gerd's Plasma Map/Reduce has a nice and comprehensive
> documentation available, but, being more ambitious maybe, it is harder
> for a beginner to find his/her way in: the entry cost is higher.
>
> By comparison, JOcaml's manual is written in a quasi-tutorial fashion
> ( http://jocaml.inria.fr/doc/index.html ) which makes it more easy to
> start hacking stuff, even if the scope is a bit different.
>
> And what about CamlP3l? What is its status? Is it superseded by Parmap
> (the lists of authors of the two softwares have a non-empty
> intersection)?
>
> Maybe that I should add some criteria to Oliver's list:
> - active / inactive
> - used in the wild
> - documentation (API, manual)
> - examples / tutorials
>
> With best regards,
> Thomas
>


^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [Caml-list] Distributed computing libraries
  2012-06-06 22:23   ` [Caml-list] Distributed computing libraries Ashish Agarwal
@ 2012-06-08  6:55     ` Roberto Di Cosmo
  2012-06-11 14:48       ` Ashish Agarwal
  0 siblings, 1 reply; 20+ messages in thread
From: Roberto Di Cosmo @ 2012-06-08  6:55 UTC (permalink / raw)
  To: Ashish Agarwal; +Cc: Thomas Braibant, caml-list

Thanks Ashish,
       I know the site, and it's nice it has been started.
Nonetheless, I really believe that if we want this to take
off, having people edit pages in HTML through git merge requests
will really not scale up... :-)

--Roberto

On Wed, Jun 06, 2012 at 06:23:47PM -0400, Ashish Agarwal wrote:
> On Wed, Jun 6, 2012 at 4:24 PM, Roberto Di Cosmo <roberto@dicosmo.org> wrote:
>  
> 
>      (3) an organised OCamlPedia site where
> 
> 
> The ocamlweb project announced at last year's OCaml User's Meeting can serve
> this purpose. Please see the master repo here [1] and the live site here [2]*.
> We welcome and need the community to add more content. We've attempted to make
> contributing easier. You just checkout a git project, add simple html, and
> submit a pull request. This is perhaps not as nice as a wiki, but it let's us
> scale up to other features that wikis are not suitable for.
> 
> If you need help getting a larger section started, such as on the topic of this
> thread, just email me or the mailing list [3].
> 
> [1] https://github.com/agarwal/ocamlweb
> [2] http://www.ocaml-lang.org/
> [3] https://lists.forge.ocamlcore.org/cgi-bin/listinfo/ocamlweb-devel
> * Note the live site is behind the master repo as we have some cleaning up yet
> to do in the master branch.
> 

-- 
--Roberto Di Cosmo
 
------------------------------------------------------------------
Professeur               En delegation a l'INRIA
PPS                      E-mail: roberto@dicosmo.org
Universite Paris Diderot WWW  : http://www.dicosmo.org
Case 7014                Tel  : ++33-(0)1-57 27 92 20
5, Rue Thomas Mann       
F-75205 Paris Cedex 13   Identica: http://identi.ca/rdicosmo
FRANCE.                  Twitter: http://twitter.com/rdicosmo
------------------------------------------------------------------
Attachments:
MIME accepted, Word deprecated
      http://www.gnu.org/philosophy/no-word-attachments.html
------------------------------------------------------------------
Office location:
 
Bureau 6C08 (6th floor)
175, rue du Chevaleret, XIII
Metro Chevaleret, ligne 6
------------------------------------------------------------------                                                 

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [Caml-list] Distributed computing libraries
  2012-06-06 16:53 [Caml-list] Distributed computing libraries Thomas Braibant
                   ` (2 preceding siblings ...)
  2012-06-06 20:24 ` Roberto Di Cosmo
@ 2012-06-08  8:58 ` jean-marc alliot
  3 siblings, 0 replies; 20+ messages in thread
From: jean-marc alliot @ 2012-06-08  8:58 UTC (permalink / raw)
  To: caml-list

Le 06/06/2012 18:53, Thomas Braibant a écrit :
> Hi list,
>
> There exists several different "distributed computing libraries" in OCaml:
>
> - Functory http://functory.lri.fr/
> - JoCaml http://jocaml.inria.fr/ (not really a library, though)
> - Nproc https://github.com/MyLifeLabs/nproc
> - OCaml for multicore http://www.algo-prog.info/ocmc/web/ (not a library either)
> - Parmap https://gitorious.org/parmap/parmap
> - Plasma Map/Reduce http://plasma.camlcity.org/plasma/
>
> And I am pretty sure that this list is not exhaustive, looking at
> http://caml.inria.fr/cgi-bin/hump.en.cgi?sort=0&browse=77
>
> Maybe it would be interesting for the community if someone could sum
> up the pros and cons of each of this "libraries", and maybe give some
> information about their status (still in development, mature, etc)?
>
> With best regards,
> Thomas Braibant
>
I was one of the two authors of the ocamlpvm interface. It works well 
and has been used for large "industrial" projects without any particular 
problems. These bindings are especially interesting when you need simple 
communications between different processes, and you also need to be able 
to launch processes by hand. The PVM bindings are stable and robust, PVM 
works for multi-core and  network parallelism but PVM is also slowly dying.

We have also been using lately the MPI bindings written by Xavier Leroy. 
The Ocaml bindings+MPI are an extremely efficient way to write parallel 
applications in the MPI paradigm. We compared it to a "home-made" shared 
memory system for exchanging objects between ocaml processes, and MPI is 
much faster (we were using MPICH2 MPI implementation), with, as a bonus, 
all the MPI goodies (such as transparent network parallelism). Well, 
that's a lesson to learn: leave parallelism implementation to the 
professionals.
We had to add one or two functions to Xavier's bindings to do the job 
(the MPI bindings are not complete, and if I remember correctly the 
iprobe function was not implemented). The modification is trivial.
If there are people interested, I could probably dig up the code.

Jean-Marc


^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [Caml-list] Distributed computing libraries
  2012-06-08  6:55     ` Roberto Di Cosmo
@ 2012-06-11 14:48       ` Ashish Agarwal
  0 siblings, 0 replies; 20+ messages in thread
From: Ashish Agarwal @ 2012-06-11 14:48 UTC (permalink / raw)
  To: Roberto Di Cosmo; +Cc: Thomas Braibant, caml-list

[-- Attachment #1: Type: text/plain, Size: 2427 bytes --]

On Fri, Jun 8, 2012 at 2:55 AM, Roberto Di Cosmo <roberto@dicosmo.org>


>       I know the site, and it's nice it has been started.
> Nonetheless, I really believe that if we want this to take
> off, having people edit pages in HTML through git merge requests
> will really not scale up... :-)
>

Indeed, our long term goal is to have a rich website with many features,
but this was an easy way to get started quickly.



On Wed, Jun 06, 2012 at 06:23:47PM -0400, Ashish Agarwal wrote:
> > On Wed, Jun 6, 2012 at 4:24 PM, Roberto Di Cosmo <roberto@dicosmo.org>
> wrote:
> >
> >
> >      (3) an organised OCamlPedia site where
> >
> >
> > The ocamlweb project announced at last year's OCaml User's Meeting can
> serve
> > this purpose. Please see the master repo here [1] and the live site here
> [2]*.
> > We welcome and need the community to add more content. We've attempted
> to make
> > contributing easier. You just checkout a git project, add simple html,
> and
> > submit a pull request. This is perhaps not as nice as a wiki, but it
> let's us
> > scale up to other features that wikis are not suitable for.
> >
> > If you need help getting a larger section started, such as on the topic
> of this
> > thread, just email me or the mailing list [3].
> >
> > [1] https://github.com/agarwal/ocamlweb
> > [2] http://www.ocaml-lang.org/
> > [3] https://lists.forge.ocamlcore.org/cgi-bin/listinfo/ocamlweb-devel
> > * Note the live site is behind the master repo as we have some cleaning
> up yet
> > to do in the master branch.
> >
>
> --
> --Roberto Di Cosmo
>
> ------------------------------------------------------------------
> Professeur               En delegation a l'INRIA
> PPS                      E-mail: roberto@dicosmo.org
> Universite Paris Diderot WWW  : http://www.dicosmo.org
> Case 7014                Tel  : ++33-(0)1-57 27 92 20
> 5, Rue Thomas Mann
> F-75205 Paris Cedex 13   Identica: http://identi.ca/rdicosmo
> FRANCE.                  Twitter: http://twitter.com/rdicosmo
> ------------------------------------------------------------------
> Attachments:
> MIME accepted, Word deprecated
>      http://www.gnu.org/philosophy/no-word-attachments.html
> ------------------------------------------------------------------
> Office location:
>
> Bureau 6C08 (6th floor)
> 175, rue du Chevaleret, XIII
> Metro Chevaleret, ligne 6
> ------------------------------------------------------------------
>

[-- Attachment #2: Type: text/html, Size: 3754 bytes --]

^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2012-06-11 14:49 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-06-06 16:53 [Caml-list] Distributed computing libraries Thomas Braibant
2012-06-06 17:31 ` oliver
2012-06-06 17:34   ` Vincent Aravantinos
2012-06-06 18:01 ` AW: " Gerd Stolpmann
2012-06-06 18:16   ` Edgar Friendly
2012-06-06 18:18     ` oliver
2012-06-06 18:35     ` AW: " Gerd Stolpmann
2012-06-06 18:44       ` Edgar Friendly
2012-06-06 20:52   ` Thomas Braibant
2012-06-07  1:34     ` Francois Berenger
2012-06-07 15:44       ` Thomas Braibant
2012-06-08  0:53         ` Francois Berenger
2012-06-08  6:36         ` Francois Berenger
2012-06-06 20:24 ` Roberto Di Cosmo
2012-06-06 20:43   ` Thomas Braibant
2012-06-07  1:48     ` [Caml-list] OCaml package managers Francois Berenger
2012-06-06 22:23   ` [Caml-list] Distributed computing libraries Ashish Agarwal
2012-06-08  6:55     ` Roberto Di Cosmo
2012-06-11 14:48       ` Ashish Agarwal
2012-06-08  8:58 ` jean-marc alliot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).