ABSTRACT
Today's Internet is long past static web pages filled with HTML-formatted text sprinkled with an occasional image or animation. We have entered an era of Rich Internet Applications executed locally on Internet clients such as web browsers: games, physics engines, image rendering, photo editing, etc. Yet today's languages used to program Internet clients have limited ability to tap to the computational capabilities of the underlying, often heterogeneous, platforms. In this paper we present how a Domain Specific Language(DSL) can be integrated into ActionScript, one of the most popular scripting languages used to program Internet clients and a close cousin of JavaScript. We demonstrate how our DSL, called ASDP (ActionScript Data Parallel), can be used to enable data parallelism for existing sequential programs. We also present a prototype of a system where data parallel workloads can be executed on either CPU or a GPU, with the runtime system transparently selecting the best processing unit, depending on the type of workload as well as the architecture and current load of the execution platform. We evaluate performance of our system on a variety of benchmarks, representing different types of workloads: physics, image processing, scientific computing and cryptography.
- Adobe. The ActionScript byte code (ABC) format. http://learn.adobe.com/wiki/display/AVM2/4.+The+ActionScript+Byte+Code+(abc)+format.Google Scholar
- Alecio P. D. Binotto, Carlos E. Pereira, Arjan Kuijper, Andre Stork, and Dieter W. Fellner. An effective dynamic scheduling runtime and tuning system for heterogeneous multi and many-core desktop platforms. In HPCC, 2011. Google ScholarDigital Library
- Bryan C. Catanzaro, Michael Garland, and Kurt Keutzer. Copperhead: compiling an embedded data parallel language. In PPoPP, 2011. Google ScholarDigital Library
- Manuel M. T. Chakravarty, Gabriele Keller, Sean Lee, Trevor L. McDonell, and Vinod Grover. Accelerating haskell array codes with multicore gpus. In DAMP, 2011. Google ScholarDigital Library
- Manuel M. T. Chakravarty, Roman Leshchinskiy, Simon Peyton Jones, Gabriele Keller, and Simon Marlow. Data parallel haskell: a status report. In DAMP, 2007. Google ScholarDigital Library
- Christophe Dubach, Perry Cheng, Rodric Rabbah, David F. Bacon, and Stephen Fink. Compiling a high-level language for gpus (via language support for architectures and compilers. In PLDI, 2012. Google ScholarDigital Library
- Khronos Group. OpenCL - the open standard for parallel programming of heterogeneous systems. http://www.khronos.org/opencl/, 2012.Google Scholar
- Khronos Group. OpenGL - the industry's foundation for high performance graphics. http://www.opengl.org/, 2012.Google Scholar
- Khronos Group. WebCL - heterogeneous parallel computing in {HTML5} web browsers. http://www.khronos.org/webcl/, 2012.Google Scholar
- Web Hypertext Application Technology Working Group. Web workers draft recommendation. http://www.whatwg.org/specs/web-apps/current-work/complete/workers.html, 2011.Google Scholar
- Stephan Herhut. Building a computing highway for web applications. http://blogs.intel.com/research/2011/09/15/pjs/, 2011.Google Scholar
- IEEE. IEEE standard for floating-point arithmetic. IEEE Std 754--2008, 2008.Google Scholar
- Intel. River trail: Bringing parallelism to web applications on top of intel opencl sdk. http://software.intel.com/en-us/articles/opencl-river-trail/, 2011.Google Scholar
- Barbara Kaskosz and Dan Gries. RGB sinks and springs. http://www.flashandmath.com/advanced/rgbsinks/.Google Scholar
- HyoukJoong Lee, Kevin Brown, Arvind Sujeeth, Hassan Chafi, Tiark Rompf, Martin Odersky, and Kunle Olukotun. Implementing domain-specific languages for heterogeneous parallel computing. IEEE Micro, 2011. Google ScholarDigital Library
- Chi-Keung Luk, Sunpyo Hong, and Hyesoon Kim. Qilin: exploiting parallelism on heterogeneous multiprocessors with adaptive mapping. In MICRO, 2009. Google ScholarDigital Library
- Geoffrey Mainland and Greg Morrisett. Nikola: embedding compiled gpu functions in haskell. In Haskell Symposium, 2010. Google ScholarDigital Library
- NVIDIA. CUDA -- parallel programming made easy. http://www.nvidia.com/object/cuda_home_new.html, 2012.Google Scholar
- Michael Schmalle. Apacheflex :: Falcon compiler update. http://blog.teotigraphix.com/2012/01/19/apacheflex-falcon-compiler-update/, 2012.Google Scholar
- Jacob Seidelin. PIXASTIC -- {JavaScript} image processing library. http://www.pixastic.com/.Google Scholar
- Satnam Singh. Declarative data-parallel programming with the accelerator system. In DAMP, 2010. Google ScholarDigital Library
- Aparapi team. Aparapi. http://code.google.com/p/aparapi/.Google Scholar
- Tamarin VM team. jsbench. http://hg.mozilla.org/tamarin-redux/file/9e56a8e5b17c/test/performance/jsbench.Google Scholar
- Unigine. Unigine -- engine of virtual worlds. http://unigine.com/.Google Scholar
- Unigine. Tropics benchmark 1.3. http://unigine.com/products/tropics/, 2010.Google Scholar
Index Terms
- Adaptive data parallelism for internet clients on heterogeneous platforms
Recommendations
Adaptive data parallelism for internet clients on heterogeneous platforms
DLS '12Today's Internet is long past static web pages filled with HTML-formatted text sprinkled with an occasional image or animation. We have entered an era of Rich Internet Applications executed locally on Internet clients such as web browsers: games, ...
Converting data-parallelism to task-parallelism by rewrites: purely functional programs across multiple GPUs
FHPC 2015: Proceedings of the 4th ACM SIGPLAN Workshop on Functional High-Performance ComputingHigh-level domain-specific languages for array processing on the GPU are increasingly common, but they typically only run on a single GPU. As computational power is distributed across more devices, languages must target multiple devices simultaneously. ...
Single-source Library for Enabling Seamless Assignment of Data-parallel Task-DAGs to CPUs and GPUs in Heterogeneous Architectures
PARMA-DITAM 2019: Proceedings of the 10th and 8th Workshop on Parallel Programming and Run-Time Management Techniques for Many-core Architectures and Design Tools and Architectures for Multicore Embedded Computing PlatformsCurrently, the majority of devices is heterogeneous and comprises at least a multi-core CPU and a GPU. Exploiting these modules requires programmers to a) assign parallel activities to the different hardware resources, and b) code each activity through ...
Comments