ABSTRACT
Client-side web programming currently means using technologies embedded in web browsers to run computations on the client computer. Most solutions imply using JavaScript which allows to describe computations, and modifications of the DOM displayed by the browser. However, JavaScript limits static checking as everything (types, names, etc.) is checked at runtime. Moreover its concurrent model does not take advantage of multi-core or GPU architectures. In this paper we present WebSPOC, an adapted version of the SPOC library for web applications. SPOC is an OCaml GPGPU library focusing on abstracting memory transfers and handling GPGPU computations in a strongly static typed context. SPOC proposes a specific language, called Sarek, to express kernels and different parallel skeletons to compose them. To run SPOC programs on the Web client side, its OCaml part is compiled to JavaScript code and its Sarek part to kernels running on GPUs or multi-core CPUs.
- T. Aarnio and M. Bourges-Sevenier. WebCL 1.0 specification. Khronos WebCL Working Group, 2014.Google Scholar
- V. Balat, J. Vouillon, and B. Yakobowski. Experience report: Ocsigen, a web programming framework. In Proceedings of the 14th ACM SIGPLAN International Conference on Functional Programming, ICFP ’09, pages 311–316. ACM, 2009. Google ScholarDigital Library
- M. Bourgoin and E. Chailloux. GPGPU Composition with OCaml. In ACM SIGPLAN International Workshop on Libraries, Languages and Compilers for Array Programming, pages 1–6. ACM SIGPLAN, June 2014. Google ScholarDigital Library
- M. Bourgoin and E. Chailloux. High Performance Client-Side Web Programming with SPOC and Js_of_ocaml. In The OCaml Users and Developers Workshop, pages 1–3, Sept. 2014.Google Scholar
- M. Bourgoin, E. Chailloux, and J.-L. Lamotte. Efficient Abstractions for GPGPU Programming. International Journal of Parallel Programming, pages 1–18, 2013. Google ScholarDigital Library
- D. de Rauglaudre. Camlp4 - Reference Manual, Sept. 2003. URL http: //caml.inria.fr/pub/docs/manual-camlp4/index.html.Google Scholar
- K. O. W. Group. OpenCL 1.2 specifications, 2012.Google Scholar
- D. Jackson. WebGL 2 Specification. Khronos WebGL Working Group, 2014.Google Scholar
- F. Khan, V. Foley-Bourgon, S. Kathrotia, E. Lavoie, and L. Hendren. Using JavaScript and WebCL for Numerical Computations: A Comparative Study of Native and Web Technologies. In Proceedings of the 10th ACM Symposium on Dynamic Languages, DLS ’14, pages 91–102. ACM, 2014. Google ScholarDigital Library
- X. Leroy, D. Doligez, A. Firsch, J. Garrigue, D. Remy, and J. Vouillon. The OCaml System Release 4.02 : Documentation and User’s Manual. Technical report, Inria, 2014. URL http://caml.inria.fr.Google Scholar
- T. MacWilliam and C. Cecka. CrowdCL: Web-based volunteer computing with WebCL. In IEEE High Performance Extreme Computing Conference, HPEC 2013, Waltham, MA, USA, September 10-12, 2013, pages 1–6. IEEE, 2013.Google ScholarCross Ref
- F. Pérez and B. E. Granger. IPython: a System for Interactive Scientific Computing. Computing in Science and Engineering, 9(3):21–29, May 2007.. URL http://ipython.org. Google ScholarDigital Library
- J. Vouillon and V. Balat. From Bytecode to JavaScript: The js_of_ocaml Compiler. Software: Practice and Experience, 44(8):951–972, 2014.Google ScholarDigital Library
Index Terms
- High-level accelerated array programming in the web browser
Recommendations
Efficient Abstractions for GPGPU Programming
General purpose (GP)GPU programming demands to couple highly parallel computing units with classic CPUs to obtain a high performance. Heterogenous systems lead to complex designs combining multiple paradigms and programming languages to manage each ...
High Level Data Structures for GPGPU Programming in a Statically Typed Language
To increase software performance, it is now common to use hardware accelerators. Currently, GPUs are the most widespread accelerators that can handle general computations. This requires to use GPGPU frameworks such as Cuda or OpenCL. Both are very low-...
GPGPU Composition with OCaml
ARRAY'14: Proceedings of ACM SIGPLAN International Workshop on Libraries, Languages, and Compilers for Array ProgrammingGPGPU programming promises high performance. However, to achieve it, developers must overcome several challenges. The main ones are: write and use hyper-parallel kernels on GPU, manage memory transfers between CPU and GPU, and compose kernels, keeping ...
Comments