From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Original-To: caml-list@yquem.inria.fr Delivered-To: caml-list@yquem.inria.fr Received: from mail4-relais-sop.national.inria.fr (mail4-relais-sop.national.inria.fr [192.134.164.105]) by yquem.inria.fr (Postfix) with ESMTP id 477E7BBAF for ; Sun, 20 Dec 2009 21:00:40 +0100 (CET) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ArEBAEoRLkvUnwdkkGdsb2JhbACCGYFxl0gBAQEBCQkMBxMEp26OMYEvgi1SBIF+ X-IronPort-AV: E=Sophos;i="4.47,428,1257116400"; d="scan'208";a="52560466" Received: from relay.pcl-ipout02.plus.net ([212.159.7.100]) by mail4-smtp-sop.national.inria.fr with ESMTP/TLS/RC4-SHA; 20 Dec 2009 21:00:39 +0100 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AjYFAKQQLkvUnw4R/2dsb2JhbACCGYFxv3+OMIEvgi1SBIF+ Received: from pih-relay04.plus.net ([212.159.14.17]) by relay.pcl-ipout02.plus.net with ESMTP; 20 Dec 2009 20:00:39 +0000 Received: from [87.114.35.173] (helo=leper.local) by pih-relay04.plus.net with esmtp (Exim) id 1NMRxG-0002fm-UF for caml-list@yquem.inria.fr; Sun, 20 Dec 2009 20:00:39 +0000 From: Jon Harrop Organization: Flying Frog Consultancy Ltd. To: caml-list@yquem.inria.fr Subject: Re: [Caml-list] Re: OCaml is broken Date: Sun, 20 Dec 2009 21:14:42 +0000 User-Agent: KMail/1.9.9 References: <794713.82307.qm@web111510.mail.gq1.yahoo.com> In-Reply-To: <794713.82307.qm@web111510.mail.gq1.yahoo.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200912202114.42669.jon@ffconsultancy.com> X-Plusnet-Relay: 6c703e2478152baeb6c4a50b29695d12 X-Spam: no; 0.00; ocaml:01 bug:01 bug:01 ocaml:01 ocaml's:01 renders:01 hash:01 ocaml's:01 parametric:01 polymorphism:01 2009:98 appliance:98 3.3:98 frog:98 wrote:01 On Sunday 20 December 2009 14:27:00 Dario Teixeira wrote: > Hi, > > > It's too bad that INRIA is not interested in fixing this bug. No > > matter what people say I consider this a bug. Two cores is standard by > > now, I'm used to 8, next year 32 and so on. OCaml will only become > > more and more irrelevant. I hate to see that happening. > > This is a perennial topic in this list. Without meaning to dwell too > long on old arguments, I simply ask you to consider the following: > > - Do you really think a concurrent GC with shared memory will scale neatly > to those 32 cores? > > - Will memory access remain homogeneous for all cores as soon as we get > into the dozens of cores? The following web page describes a commercial machine sold by Azul Systems that has up to 16 54-core CPUs (=864 cores) and 768 GB of memory in a flat SMP configuration: http://www.azulsystems.com/products/compute_appliance.htm As you can see, a GC with shared memory can already scale across dozens of cores and memory access is no more heterogeneous than it was 20 years ago. Also, note that homogeneous memory access is a red herring in this context because it does not undermine the utility of a shared heap on a multicore. > - Have you considered that many Ocaml users prefer a GC that offers maximum > single core performance, OCaml's GC is nowhere near offering maximum single core performance. Its uniform data representation renders OCaml many times slower than its competitors for many tasks. For example, filling a 10M float->float hash table is over 18x slower with OCaml than with F#. FFT with a complex number type is 5.5x slower with OCaml than F#. Fibonacci with floats is 3.3x slower with OCaml than my own HLVM project (!). > because their application is parallelised via multiple processes > communicating via message passing? A circular argument based upon the self-selected group of remaining OCaml users. Today's OCaml users use OCaml despite its shortcomings. If you want to see the impact of OCaml's multicore unfriendliness, consider why the OCaml community has haemorrhaged 50% of its users in only 2 years. > In this context, your "bug" is actually a "feature". I'm not even sure you can substantiate that in the very specific context of distributed parallel theorem provers because other languages are so much more efficient at handling common abstractions like parametric polymorphism. Got any benchmarks? -- Dr Jon Harrop, Flying Frog Consultancy Ltd. http://www.ffconsultancy.com/?e