From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail4-relais-sop.national.inria.fr (mail4-relais-sop.national.inria.fr [192.134.164.105]) by sympa.inria.fr (Postfix) with ESMTPS id A750F7ED26 for ; Wed, 6 Jun 2012 18:36:09 +0200 (CEST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Au4BAJiGz0/RVdU2kGdsb2JhbABFtC0IIgEBAQEJCQ0HFAQjgjECCR0GATgBAw0FXyABBQEBVodbAwsLmVIJA48ShR4nDYlIAQUMCI4HgjZgA5UcgRONCz6BVIIt X-IronPort-AV: E=Sophos;i="4.75,725,1330902000"; d="scan'208";a="146800537" Received: from mail-yw0-f54.google.com ([209.85.213.54]) by mail4-smtp-sop.national.inria.fr with ESMTP/TLS/RC4-MD5; 06 Jun 2012 18:35:42 +0200 Received: by yhgm50 with SMTP id m50so7661732yhg.27 for ; Wed, 06 Jun 2012 09:35:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:date:from:to:cc:subject:message-id:mime-version:content-type :content-disposition:user-agent; bh=FSQEteI44qt/a/HiZRXOOpjKy1r5Qpq0m6gbxPDI94Y=; b=NgTcrG2edVw1WvBFq8115unYBbvi70hEQLwP7pojoe3BRmWctIUI6qRmdriJq9FGKr Ex1celyYEx4RpImu2O8bbwj8GiYZdHJNmZTJ8wSLWa6IFUYplqsTgCcJBoN5O1IIiNNT z2G4rOTmn3mw+LzHEHpncmvj6tbCr5HbGL8xZGKval3B+onIiu4pkFHUzL+kL0qAAh6T 8Xw3/L0/KNb9SaSszKdZH0uBxZZOa43ndfHOhKwLRIpFlDxHp+/P8txP4ck8Sqz992BQ 90Z75wLfoFElH3WU2qh067HjpQYpdtfR0iUApTRnsnu2TfPI+YFbWJocslFztMNirzkQ LrzQ== Received: by 10.50.46.137 with SMTP id v9mr7352440igm.65.1339000540269; Wed, 06 Jun 2012 09:35:40 -0700 (PDT) Received: from voyager ([173.209.24.182]) by mx.google.com with ESMTPS id k5sm1270611igq.12.2012.06.06.09.35.38 (version=TLSv1/SSLv3 cipher=OTHER); Wed, 06 Jun 2012 09:35:39 -0700 (PDT) Sender: Roberto Di Cosmo Received: from dicosmo by voyager with local (Exim 4.72) (envelope-from ) id 1ScJGR-000496-U9; Wed, 06 Jun 2012 18:39:19 +0200 Date: Wed, 6 Jun 2012 18:39:19 +0200 From: Roberto Di Cosmo To: caml-list@inria.fr Cc: roberto@dicosmo.org, marcod@di.unipi.it Message-ID: <20120606163919.GB15675@voyager> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.20 (2009-06-14) Subject: [Caml-list] [ANN]: Parmap 0.9.9, and call for contributors (errata corrige) [The releases of Parmap are now always on the 'master' branch, and not on the 'pipes' branch, as erroneously written in the git checkout instructions appended to the previous message. This message fixes this mistake. Apologies for the error and for the noise on the list] Dear all, a few lines to announce the (much improved) version 0.9.9 of Parmap, the minimalistic library which can be useful to exploit your multicore processor with minimal modifications to your OCaml programs. A full description is in the README file, as well as several examples, and an article on Parmap has just appeared here: http://www.sciencedirect.com/science/article/pii/S1877050912003237 Main changes ------------ - the new combinator pariter iterates over a sequence; since no result is returned to the main process, this code is faster than calling parmap and ignoring the result - new functions that provide as argument the index of the element of the sequence: parmapi, parmapifold, array_parmapi, array_float_parmapi - it is now possible to set the default number of cores used when calling the combinators without the optional parameter ncores - eliminated dependencies on external libraries: this code should now build out of the box on any machine - added configure support for use with legacy OCaml 3.11 and tested to build correctly with OCaml 4.00 - initial support for Oasis packaging In a nutshell ------------- If you want to use your many cores to accelerate an operation which happens to be a map, fold or map/fold (map-reduce), just use Parmap's parmap, parfold and parmapfold primitives in place of the standard List.map and friends; you can specify the number of subprocesses to use with the optional parameter ncores, and the size of granularity of the paralle computation with the optional parameter chunksize. For example, in the classical Mandelbrot present in the example directory, the line Parmap.parmap ~ncores: !ncores ~chunksize: !chunksize pixel (Parmap.L tasks) allows to spawn ncores separate processes, each working on sublists of size chunksize of the tasks list. How to get it ------------- Project home: https://gitorious.org/parmap The release announced in this message has hash 1c5b5eac61eda2454034a43eb124ab490885ef3a and is tagged Released-0.9.9 To compile and install: git clone git://gitorious.org/parmap/parmap.git git checkout master aclocal -I m4 autoconf ./configure make make install How to help ----------- We would use some help on - writing unit tests, both for functionality, and speedup estimation - adding support for automatically determining the number of available physical cores on the different unix-like operating systems (can be tricky) Enjoy -- Marco Danelutto and Roberto Di Cosmo P.S.: many thanks to Francois Berenger for extensive testing, to Jerome Maloberti for GODI packaging, and to Markus Weissman for suggestion the default for ncores.