36 research outputs found

    Distribution of load in heterogeneous computer systems

    Get PDF
    The thesis explores the formulation and implementation of an application that divides, computes and merges a parallel computing problem on a heterogeneous system. The application uses all available compute devices. The goal is to determine how to divide a computing problem between devices to maximise the system's utilisation. The thesis presents possible solutions to the problem, their strengths, and weaknesses. Some of the solutions are benchmarked and compared. For benchmarking the Mandelbrot set was generated. Processing units are accessed and managed using the OpenCL framework. We found out how best to divide and allocate work, and how to set the size of work groups to imporve device utilisation

    Source-to-source Compilation of OpenACC

    Get PDF
    The OpenACC framework was created to alleviate the problems with programming graphical processing unit. We implemented a compiler, which added OpenACC support to the Java programming language. We used source-to-source translation to compile Java code annotated with OpenACC directives into Java code which uses OpenCL to execute computations on the GPU. The code compiled with our compiler is compatible with any Java compiler and runs on any machine that supports the Java virtual machine and OpenCL. Due to the size of the OpenACC standard, we focused mostly on the core features of the framework, such as loop parallelization and data transfer. The code generated with our compiler achieved around a 50\% speed-up, and achieved parity with native C++ programs using OpenCL

    Source-to-source Compilation of OpenACC

    Get PDF
    The OpenACC framework was created to alleviate the problems with programming graphical processing unit. We implemented a compiler, which added OpenACC support to the Java programming language. We used source-to-source translation to compile Java code annotated with OpenACC directives into Java code which uses OpenCL to execute computations on the GPU. The code compiled with our compiler is compatible with any Java compiler and runs on any machine that supports the Java virtual machine and OpenCL. Due to the size of the OpenACC standard, we focused mostly on the core features of the framework, such as loop parallelization and data transfer. The code generated with our compiler achieved around a 50\% speed-up, and achieved parity with native C++ programs using OpenCL

    Source-to-source Compilation of OpenACC

    Full text link
    Razvili smo prevajalnik, ki omogoča dodajanje direktiv OpenACC v programski jezik Java. Implementirali smo ga s pomočjo prevajanja na nivoju izvorne kode. Prevajalnik deluje kot predprocesor, ki javansko kodo z oznakami OpenACC prevaja v javansko kodo, ki uporablja vmesnik OpenCL za računanje na grafičnih procesnih enotah. Izhodna koda prevajalnika je prevedljiva s katerimkoli javanskim prevajalnikom in lahko teče na vseh računalnikih z Javinim navideznim strojem in podporo za OpenCL. Zaradi obsega standarda OpenACC smo se pri implementaciji osredotočili le na osnovno paralelizacijo zank in prenos podatkov med napravami. S prevajalnikom smo dosegli pospešitve izvajanja kompleksnih problemov za okoli 50% in dosegli enak čas izvajanja kot z jezikom C++, ki uporablja OpenCL.The OpenACC framework was created to alleviate the problems with programming graphical processing unit. We implemented a compiler, which added OpenACC support to the Java programming language. We used source-to-source translation to compile Java code annotated with OpenACC directives into Java code which uses OpenCL to execute computations on the GPU. The code compiled with our compiler is compatible with any Java compiler and runs on any machine that supports the Java virtual machine and OpenCL. Due to the size of the OpenACC standard, we focused mostly on the core features of the framework, such as loop parallelization and data transfer. The code generated with our compiler achieved around a 50% speed-up, and achieved parity with native C++ programs using OpenCL

    Distribution of load in heterogeneous computer systems

    Full text link
    V diplomskem delu opisujemo zasnovo in izvedbo aplikacije, ki na heterogenem računalniškem sistemu razdeli, izračuna in združi vzporeden računski problem. Za izračun aplikacija izrabi vse računske naprave, ki so ji dosegljive. Naš cilj v delu je ugotoviti, kako najbolje razdeliti računski problem med naprave tako, da je izkoriščenost sistema čim večja. Predstavimo možne načine delitve problema, njihove prednosti in slabosti. Rešitve so testirane in med seboj primerjane. Testiranje je opravljeno z računanjem Mandelbrotove množice. Za dostop do naprav na sistemu aplikacija uporablja ogrodje OpenCL. Ugotovili smo, kako najbolje dodeljevati delo procesnim enotam in kako nastaviti velikosti delovnih skupin za čim boljši izkoristek naprav.The thesis explores the formulation and implementation of an application that divides, computes and merges a parallel computing problem on a heterogeneous system. The application uses all available compute devices. The goal is to determine how to divide a computing problem between devices to maximise the system\u27s utilisation. The thesis presents possible solutions to the problem, their strengths, and weaknesses. Some of the solutions are benchmarked and compared. For benchmarking the Mandelbrot set was generated. Processing units are accessed and managed using the OpenCL framework. We found out how best to divide and allocate work, and how to set the size of work groups to imporve device utilisation

    Distribution of load in heterogeneous computer systems

    Get PDF
    The thesis explores the formulation and implementation of an application that divides, computes and merges a parallel computing problem on a heterogeneous system. The application uses all available compute devices. The goal is to determine how to divide a computing problem between devices to maximise the system's utilisation. The thesis presents possible solutions to the problem, their strengths, and weaknesses. Some of the solutions are benchmarked and compared. For benchmarking the Mandelbrot set was generated. Processing units are accessed and managed using the OpenCL framework. We found out how best to divide and allocate work, and how to set the size of work groups to imporve device utilisation

    Distribution of load in heterogeneous computer systems

    Get PDF
    V diplomskem delu opisujemo zasnovo in izvedbo aplikacije, ki na heterogenem računalniškem sistemu razdeli, izračuna in združi vzporeden računski problem. Za izračun aplikacija izrabi vse računske naprave, ki so ji dosegljive. Naš cilj v delu je ugotoviti, kako najbolje razdeliti računski problem med naprave tako, da je izkoriščenost sistema čim večja. Predstavimo možne načine delitve problema, njihove prednosti in slabosti. Rešitve so testirane in med seboj primerjane. Testiranje je opravljeno z računanjem Mandelbrotove množice. Za dostop do naprav na sistemu aplikacija uporablja ogrodje OpenCL. Ugotovili smo, kako najbolje dodeljevati delo procesnim enotam in kako nastaviti velikosti delovnih skupin za čim boljši izkoristek naprav.The thesis explores the formulation and implementation of an application that divides, computes and merges a parallel computing problem on a heterogeneous system. The application uses all available compute devices. The goal is to determine how to divide a computing problem between devices to maximise the system\u27s utilisation. The thesis presents possible solutions to the problem, their strengths, and weaknesses. Some of the solutions are benchmarked and compared. For benchmarking the Mandelbrot set was generated. Processing units are accessed and managed using the OpenCL framework. We found out how best to divide and allocate work, and how to set the size of work groups to imporve device utilisation

    The Eval that Men Do -- A Large-scale Study of the Use of Eval in JavaScript Applications

    Get PDF
    Abstract. Transforming text into executable code with a function such as JavaScript's eval endows programmers with the ability to extend applications, at any time, and in almost any way they choose. But, this expressive power comes at a price: reasoning about the dynamic behavior of programs that use this feature becomes challenging. Any ahead-of-time analysis, to remain sound, is forced to make pessimistic assumptions about the impact of dynamically created code. This pessimism affects the optimizations that can be applied to programs and significantly limits the kinds of errors that can be caught statically and the security guarantees that can be enforced. A better understanding of how eval is used could lead to increased performance and security. This paper presents a large-scale study of the use of eval in JavaScript-based web applications. We have recorded the behavior of 337 MB of strings given as arguments to 550,358 calls to the eval function exercised in over 10,000 web sites. We provide statistics on the nature and content of strings used in eval expressions, as well as their provenance and data obtained by observing their dynamic behavior. eval is evil. Avoid it. eval has aliases. Don't use them. -Douglas Crockfor
    corecore