I don't think you can do better than calling some C functions (bound checking, ... ). Why not have a look on ocaml bindings of C libraries (using bigarrays), like ocamlgsl (O Andrieu) http://oandrieu.nerim.net/ocaml/gsl/ or lacaml http://caml.inria.fr/cgi-bin/hump.fr.cgi?contrib=255
Hope this helps Rabih -----Message d'origine----- De : caml-list-boun...@yquem.inria.fr [mailto:caml-list-boun...@yquem.inria.fr] De la part de Erick Matsen Envoyé : vendredi 20 février 2009 16:40 À : caml-l...@inria.fr Objet : [Caml-list] speeding up matrix multiplication (newbie question) Hello Ocaml community--- I'm working on speeding up some code, and I wanted to check with someone before implementation. As you can see below, the code primarily spends its time multiplying relatively small matrices. Precision is of course important but not an incredibly crucial issue, as the most important thing is relative comparison between things which *should* be pretty different. Currently I'm just using native (double-precision) ocaml floats and the native ocaml arrays for a first pass on the problem. Now I'm thinking about moving to using float32 bigarrays, and I'm hoping that the code will double in speed. I'd like to know: is that realistic? Any other suggestions? Thank you, Erick -------- profiling information -------- % cumulative self self total time seconds seconds calls s/call s/call name 30.27 7.44 7.44 836419 0.00 0.00 camlMat__mul_vec_263 15.42 11.23 3.79 335237785 0.00 0.00 camlMat__get_447 14.65 14.83 3.60 334624076 0.00 0.00 camlNumber__mul_185 13.75 18.21 3.38 682814594 0.00 0.00 caml_apply2 11.31 20.99 2.78 334624076 0.00 0.00 camlNumber__add_183 6.02 22.47 1.48 335724401 0.00 0.00 caml_apply3 1.14 22.75 0.28 480860 0.00 0.00 camlDiagd__fun_304 1.06 23.01 0.26 159338 0.00 0.00 caml_oldify_local_roots 1.06 23.27 0.26 79634 0.00 0.00 sweep_slice 0.90 23.49 0.22 79828 0.00 0.00 mark_slice 0.65 23.65 0.16 10455018 0.00 0.00 camlQtree__code_begin 0.61 23.80 0.15 1517329 0.00 0.00 caml_oldify_one 0.57 23.94 0.14 17592082 0.00 0.00 camlMat__n_cols_458 0.57 24.08 0.14 13102569 0.00 0.00 caml_modify 0.57 24.22 0.14 522761 0.00 0.00 camlArray__mapi_142 ... _______________________________________________ Caml-list mailing list. Subscription management: http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list Archives: http://caml.inria.fr Beginner's list: http://groups.yahoo.com/group/ocaml_beginners Bug reports: http://caml.inria.fr/bin/caml-bugs This message and any attachments (the "message") are confidential, intended solely for the addressee(s), and may contain legally privileged information. Any unauthorised use or dissemination is prohibited. E-mails are susceptible to alteration. Neither Societe Generale Asset Management nor any of its subsidiaries or affiliates shall be liable for the message if altered, changed or falsified. Find out more about Societe Generale Asset Management's proposal on www.sgam.com ******** Ce message et toutes les pieces jointes (ci-apres le "message") sont confidentiels et susceptibles de contenir des informations couvertes par le secret professionnel. Ce message est etabli a l'intention exclusive de ses destinataires. Toute utilisation ou diffusion non autorisee est interdite. Tout message electronique est susceptible d'alteration. Societe Generale Asset Management et ses filiales declinent toute responsabilite au titre de ce message s'il a ete altere, deforme ou falsifie. Decouvrez l'offre et les services de Societe Generale Asset Management sur le site www.sgam.fr _______________________________________________ Caml-list mailing list. Subscription management: http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list Archives: http://caml.inria.fr Beginner's list: http://groups.yahoo.com/group/ocaml_beginners Bug reports: http://caml.inria.fr/bin/caml-bugs