From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on yquem.inria.fr X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=disabled version=3.1.3 Received: from mail1-relais-roc.national.inria.fr (mail1-relais-roc.national.inria.fr [192.134.164.82]) by yquem.inria.fr (Postfix) with ESMTP id 3DFEFBBAF for ; Fri, 10 Apr 2009 19:03:58 +0200 (CEST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AsIDALMX30mE4zwegWdsb2JhbACWMgEBFiK0XIN7Bg X-IronPort-AV: E=Sophos;i="4.38,431,1233529200"; d="scan'208";a="27462567" Received: from osiris.lip6.fr ([132.227.60.30]) by mail1-smtp-roc.national.inria.fr with ESMTP/TLS/DHE-RSA-AES256-SHA; 10 Apr 2009 19:03:58 +0200 Received: from tibre.lip6.fr (tibre.lip6.fr [132.227.74.2]) by osiris.lip6.fr (8.13.5.20060614/lip6) with ESMTP id n3AH3u90007569 ; Fri, 10 Apr 2009 19:03:56 +0200 (CEST) X-pt: osiris.lip6.fr Received: from [192.168.2.27] (micmac [132.227.83.124]) by tibre.lip6.fr (8.13.5.20060614/8.13.3) with ESMTP id n3AH3tpN007980; Fri, 10 Apr 2009 19:03:55 +0200 (MEST) Message-Id: <50CD0BA8-B89C-49E2-9082-FFA037F251A6@lip6.fr> From: Philippe Wang To: caml-list@inria.fr Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit Mime-Version: 1.0 (Apple Message framework v930.3) Subject: "ok with parallel threads" GC (aka ocaml for multicore) Date: Fri, 10 Apr 2009 19:04:12 +0200 Cc: Philippe Wang X-Mailer: Apple Mail (2.930.3) X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.0.1 (osiris.lip6.fr [132.227.60.30]); Fri, 10 Apr 2009 19:03:56 +0200 (CEST) X-Scanned-By: MIMEDefang 2.63 on 132.227.60.30 X-Spam: no; 0.00; ocaml:01 inria's:01 cheers:01 mathias:98 threads:01 threads:01 garbage:01 garbage:01 heap:01 heap:01 posix:01 algorithm:01 behaviour:01 module:03 module:03 Hello list, Mathias and Adrien have just started their internship (for their Master's degree requirements). Thus they have some time to spend on this project. Moreover, Mathias' internship is strongly related to this project. => man power dramatically increased We are currently searching for the last remaining bugs. Our thread library is restricted, it contains: Thread : create, join, yield, id, self, delay Mutex : full module Condition : full module Our alternative garbage collector - uses a Stop(the world)&Copy algorithm - has memory pages for threads (each thread takes a page at its creation) - has a shared heap for shared values and for old generation from pages (i.e. memory pages are flushed to this heap) - should be not to hard to replace. Blocking sections such as I/O operations or mutex locks do not prevent garbage collection. We currently do *not* support POSIX signals (let's say their behaviour is not specified). We should make a release soon, but before: - some code has to be cleaned - some benchmarks have to be done - some documentation has to be completed - an installation script still has to be written. Thus not a lot is left to do before the release :-) We are writing test programs to search for the last remaining bugs but also to measure performances. So far, as long as there are not too many concurrent memory accesses, it is not too hard to go n times faster with a n-core CPU; though intense memory accesses generate page faults and divide memory bandwidth by the number of concurrent accesses, and intense memory consuming programs show our GC is not as performant as INRIA's, of course. Cheers, -- Philippe Wang Philippe.Wang \at/ lip6.fr PS: Sorry for taking so much time, debugging parallel threads in shared memory style is hell (you can give it a try).