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

Reply via email to