From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Original-To: caml-list@sympa.inria.fr Delivered-To: caml-list@sympa.inria.fr Received: from mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by sympa.inria.fr (Postfix) with ESMTPS id 8B7AC7EE99 for ; Tue, 7 Jan 2014 20:54:55 +0100 (CET) Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of yotambarnoy@gmail.com) identity=pra; client-ip=209.85.128.48; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="yotambarnoy@gmail.com"; x-sender="yotambarnoy@gmail.com"; x-conformance=sidf_compatible Received-SPF: Pass (mail3-smtp-sop.national.inria.fr: domain of yotambarnoy@gmail.com designates 209.85.128.48 as permitted sender) identity=mailfrom; client-ip=209.85.128.48; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="yotambarnoy@gmail.com"; x-sender="yotambarnoy@gmail.com"; x-conformance=sidf_compatible; x-record-type="v=spf1" Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of postmaster@mail-qe0-f48.google.com) identity=helo; client-ip=209.85.128.48; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="yotambarnoy@gmail.com"; x-sender="postmaster@mail-qe0-f48.google.com"; x-conformance=sidf_compatible X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AgADAGFazFLRVYAwlGdsb2JhbABZhBi6dQgWDgEBAQEHCwsJEiqCbAEbEQ0DEgkBBl0BEQEFASKIAgEDEZp/gwiMXIMJkQ0KGScNZIQAEQEFDJM2BIlDjlSQKBgphHce X-IPAS-Result: AgADAGFazFLRVYAwlGdsb2JhbABZhBi6dQgWDgEBAQEHCwsJEiqCbAEbEQ0DEgkBBl0BEQEFASKIAgEDEZp/gwiMXIMJkQ0KGScNZIQAEQEFDJM2BIlDjlSQKBgphHce X-IronPort-AV: E=Sophos;i="4.95,620,1384297200"; d="scan'208";a="43891814" Received: from mail-qe0-f48.google.com ([209.85.128.48]) by mail3-smtp-sop.national.inria.fr with ESMTP/TLS/RC4-SHA; 07 Jan 2014 20:54:54 +0100 Received: by mail-qe0-f48.google.com with SMTP id gc15so858837qeb.35 for ; Tue, 07 Jan 2014 11:54:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:from:date:message-id:subject:to:content-type; bh=lMu75QPzxhIii6vq5dFqEC2z5NKkmxuMPcRLiiqEsvk=; b=ikGgfg+FAYhskg6PL6xxMBQxqKcZLGiprOhpxKNNUszFGwLrTl9IxF5tvMBKI2MDGv sPDB2nspS2MYe4pseckMwzuzeK/HXilFhXd37zyvEwDkWQG7YVy2UUz0mYyWrHi5j2OC nPiQgdIjyD7juh4vxJmx2a6zaJYQVc3VWbd6iei5gmiy2tLbK78+I/mNyF4BTjkbRerA XKjBz0GNgCFfXLCQI9Hz9n+SWVyQTfWt6VfPiCSAPtqDJUY2t850MPN/9vhADwLpW7MK cLm8EMGuhpTZeSxR2e6oxdt2FDY02eOtfsHnyo6kOgK87HerXeEWQfTW0mfR4GR2/mIE SP0Q== X-Received: by 10.229.56.200 with SMTP id z8mr190765190qcg.1.1389124493327; Tue, 07 Jan 2014 11:54:53 -0800 (PST) MIME-Version: 1.0 Received: by 10.224.95.8 with HTTP; Tue, 7 Jan 2014 11:54:33 -0800 (PST) From: Yotam Barnoy Date: Tue, 7 Jan 2014 14:54:33 -0500 Message-ID: To: Ocaml Mailing List Content-Type: multipart/alternative; boundary=001a113308a4f953de04ef66bf61 Subject: [Caml-list] Concurrent/parallel programming --001a113308a4f953de04ef66bf61 Content-Type: text/plain; charset=ISO-8859-1 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 --001a113308a4f953de04ef66bf61 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
Hi List

So far, I've = been programming in ocaml using only sequential programs. In my last projec= t, which was an implementation of a large machine learning algorithm, I tri= ed to speed up computation using a little bit of parallelism with ParMap, a= nd it was a complete failure. It's possible that more time would have y= ielded 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 parallel= ism is concerned? I'm not talking about cooperative multitasking, but a= bout really taking advantage of multiple cores. I'm well aware of the r= untime lock and I'm ok with message passing between processes or a shar= ed area in memory, but I'd rather have something more high level than s= tarting 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 realworld= ocaml is fuzzy on this topic, apparently preferring to dwell on cooperative= multitasking (which is fine but not what I'm looking for), and I could= n't find any other documentation that was clearer.

Thanks
Yotam
--001a113308a4f953de04ef66bf61--