caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Markus Mottl <markus.mottl@gmail.com>
To: Yotam Barnoy <yotambarnoy@gmail.com>
Cc: Ocaml Mailing List <caml-list@inria.fr>
Subject: Re: [Caml-list] Concurrent/parallel programming
Date: Tue, 7 Jan 2014 16:51:12 -0500	[thread overview]
Message-ID: <CAP_800oFak+Yit2cPpHdx+kJpuBagV6oryWfRWKB9Kdywou64w@mail.gmail.com> (raw)
In-Reply-To: <CAN6ygOnW9bqcB3SeZiqgxFtPuqt2PXJ0-EBRS7Na9M0S6fT3KQ@mail.gmail.com>

Though it may not necessarily lend itself to every problem, it is
often a good idea to use vectorization to achieve high performance.
If your machine learning code is mostly numeric, you may want to use
bigarrays and highly optimized C or Fortran routines as building
blocks for your algorithm (e.g. using Lacaml).  Even without threads
this will generally give a very significant performance boost.  The
use of bigarrays also makes it possible to release the OCaml runtime
lock while a basic routine is executing, which would allow you to run
several such routines on multiple cores without having to resort to
more complicated multi-process solutions.  Note, too, that bigarrays
can in principle be used with shared memory if multiple processes are
still required.

Regards,
Markus

On Tue, Jan 7, 2014 at 2:54 PM, Yotam Barnoy <yotambarnoy@gmail.com> wrote:
> Hi List
>
> So far, I've been programming in ocaml using only sequential programs. In my
> last project, which was an implementation of a large machine learning
> algorithm, I tried to speed up computation using a little bit of parallelism
> with ParMap, and it was a complete failure. It's possible that more time
> would have yielded better results, but I just didn't have the time to invest
> in it given how bad the initial results were.
>
> My question is, what are the options right now as far as parallelism is
> concerned? I'm not talking about cooperative multitasking, but about really
> taking advantage of multiple cores. I'm well aware of the runtime lock and
> I'm ok with message passing between processes or a shared area in memory,
> but I'd rather have something more high level than starting up several
> processes, creating a named pipe or a socket, and trying to pass messages
> through that. Also, I assume that using a shared area in memory involves
> some C code? Am I wrong about that?
>
> I was expecting Core's Async to fill this role, but realworldocaml is fuzzy
> on this topic, apparently preferring to dwell on cooperative multitasking
> (which is fine but not what I'm looking for), and I couldn't find any other
> documentation that was clearer.
>
> Thanks
> Yotam



-- 
Markus Mottl        http://www.ocaml.info        markus.mottl@gmail.com

  parent reply	other threads:[~2014-01-07 21:51 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-01-07 19:54 Yotam Barnoy
2014-01-07 20:12 ` Yaron Minsky
2014-01-07 20:21   ` Yaron Minsky
2014-01-07 20:35 ` Gerd Stolpmann
2014-01-08  2:35   ` Yotam Barnoy
2014-01-08  3:33     ` Francois Berenger
2014-01-08  4:01       ` Yotam Barnoy
2014-01-08  8:37     ` Gabriel Scherer
2014-01-08 11:36     ` Gerd Stolpmann
2014-01-08 11:55       ` Mark Shinwell
2014-01-08 13:38         ` Gerd Stolpmann
2014-01-07 21:51 ` Markus Mottl [this message]
     [not found] ` <20140107200328.GA14297@voyager>
2014-01-08  1:12   ` Francois Berenger
2014-01-08 20:29 ` Roberto Di Cosmo
2014-01-08 22:13   ` Yotam Barnoy
2014-01-08 22:38     ` Anil Madhavapeddy
2014-01-08 22:57       ` [Caml-list] [ocaml-infra] " Ashish Agarwal
2014-01-09  2:52         ` Yotam Barnoy

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAP_800oFak+Yit2cPpHdx+kJpuBagV6oryWfRWKB9Kdywou64w@mail.gmail.com \
    --to=markus.mottl@gmail.com \
    --cc=caml-list@inria.fr \
    --cc=yotambarnoy@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).