277,837 research outputs found

    Process-Oriented Parallel Programming with an Application to Data-Intensive Computing

    Full text link
    We introduce process-oriented programming as a natural extension of object-oriented programming for parallel computing. It is based on the observation that every class of an object-oriented language can be instantiated as a process, accessible via a remote pointer. The introduction of process pointers requires no syntax extension, identifies processes with programming objects, and enables processes to exchange information simply by executing remote methods. Process-oriented programming is a high-level language alternative to multithreading, MPI and many other languages, environments and tools currently used for parallel computations. It implements natural object-based parallelism using only minimal syntax extension of existing languages, such as C++ and Python, and has therefore the potential to lead to widespread adoption of parallel programming. We implemented a prototype system for running processes using C++ with MPI and used it to compute a large three-dimensional Fourier transform on a computer cluster built of commodity hardware components. Three-dimensional Fourier transform is a prototype of a data-intensive application with a complex data-access pattern. The process-oriented code is only a few hundred lines long, and attains very high data throughput by achieving massive parallelism and maximizing hardware utilization.Comment: 20 pages, 1 figur

    Quasar: A Programming Framework for Rapid Prototyping

    Get PDF
    We present a new programming framework, Quasar, which facilitates GPU programming. Our high-level programming language relieves the developer of all implementation details such that he can focus on the algorithm and the required accuracy. The proposed programming framework consists of a simple high-level programming language, an advanced compiler system, a runtime system and IDE. The Quasar language is a high level scripting language with an easy to learn syntax similar to python and MATLAB. This makes Quasar well suited for fast development and prototyping. A Quasar program is first processed by a front-end compiler that automatically detects serial and parallel loops that could be accelerated by heterogeneous hardware. In a second compilation phase, a number of back-end compilers processes the output of the front-end compiler, thus generating C++, OpenCL or CUDA code. Based on the generated code the runtime system can dynamically switch between CPU and GPU. This automatic scheduling at runtime is done by analyzing the load of all devices, the memory transfer cost and the complexity of the task. This way, the programmer is relieved from complicated implementation issues that are common for programming heterogeneous hardware. We validated the use of Quasar on a number of complex image processing and computer vision algorithms. These programs range from denoising to automated image segmentation applications. Using Quasar we get speed-up factors of 4 to over 60, depending on the application. All results were achieved using an NVIDIA GeForce M750

    GCC-Plugin for Automated Accelerator Generation and Integration on Hybrid FPGA-SoCs

    Full text link
    In recent years, architectures combining a reconfigurable fabric and a general purpose processor on a single chip became increasingly popular. Such hybrid architectures allow extending embedded software with application specific hardware accelerators to improve performance and/or energy efficiency. Aiding system designers and programmers at handling the complexity of the required process of hardware/software (HW/SW) partitioning is an important issue. Current methods are often restricted, either to bare-metal systems, to subsets of mainstream programming languages, or require special coding guidelines, e.g., via annotations. These restrictions still represent a high entry barrier for the wider community of programmers that new hybrid architectures are intended for. In this paper we revisit HW/SW partitioning and present a seamless programming flow for unrestricted, legacy C code. It consists of a retargetable GCC plugin that automatically identifies code sections for hardware acceleration and generates code accordingly. The proposed workflow was evaluated on the Xilinx Zynq platform using unmodified code from an embedded benchmark suite.Comment: Presented at Second International Workshop on FPGAs for Software Programmers (FSP 2015) (arXiv:1508.06320

    An Evaluation of the X10 Programming Language

    Get PDF
    As predicted by Moore\u27s law, the number of transistors on a chip has been doubled approximately every two years. As miraculous as it sounds, for many years, the extra transistors have massively benefited the whole computer industry, by using the extra transistors to increase CPU clock speed, thus boosting performance. However, due to heat wall and power constraints, the clock speed cannot be increased limitlessly. Hardware vendors now have to take another path other than increasing clock speed, which is to utilize the transistors to increase the number of processor cores on each chip. This hardware structural change presents inevitable challenges to software structure, where single thread targeted software will not benefit from newer chips or may even suffer from lower clock speed. The two fundamental challenges are: 1. How to deal with the stagnation of single core clock speed and cache memory. 2. How to utilize the additional power generated from more cores on a chip. Most software programming languages nowadays have distributed computing support, such as C and Java [1]. Meanwhile, some new programming languages were invented from scratch just to take advantage of the more distributed hardware structures. The X10 Programming Language is one of them. The goal of this project is to evaluate X10 in terms of performance, programmability and tool support

    Quiz Button with Score Control and Display using Atmega16Microcontroller

    Get PDF
    To create Quiz Button with Score Control and Display using Atmega16 Microcontroller is to design and to produce its hardware and software, and also gaining knowledge of its performance. Quiz Button with Score Control and Display using Atmega16 Microcontroller hardware was designed with an operator circuit using six push buttons as input and three 0.56-inches seven segment as output, three group name and three digit score display circuits using four 3-inches seven segment as output and one push button as input, and also a sound producing buzzer which is included in the minimum system circiut. The software to control the Atmega16 microcontroller uses C programming language and a CodeVision AVR compiler. This software only has one main program without any sub-program. To summarize it all, the hardware production was a success, using Atmega16 microcontroller minimum system and other instrument as needed. Quiz Button with Score Control and Display using Atmega16 Microcontroller’s software is created using CodeVision AVR. This tool counts each group’s score based on operator’s input, displaying the score on each group’s displays, and control the lighting of group name and buzzer based on input from group buttons. Keywords : Button, Quiz, Microcontroller, Displa

    PROTOTYPE DRAMATIC STAGE LIGHTING CONTROL WITH BLUETOOTH HANDPHONE BASED MICROCONTROLLER ATmega 16

    Get PDF
    The final project aims to create a dramatic stage lighting control devices with Bluetooth media are more efficient than current lighting control equipment. The device is controlled by a microcontroller ATmega 16 which is connected with the EB500 Bluetooth module as a receiver and relay commands from the mobile phone as an activating stage lights. This tool is made in several stages, namely, (1) Identification of Needs, (2) Needs Analysis, (3) Design System, (4) Hardware Design, (5) Design Software, (6) Preparation and (7) Testing Tool . Drama stage lighting control device with Bluetooth is working with the media is controlled by an ATmega16 microcontroller IC with control systems that are created using the C language Programming language created using software (CodeVision AVR). Hardware that supports consist of a series of power supply, EB500 Bluetooth module as a data receiver, IC ULN3803 as relay driver, relay for activating the lights and as a processor ATmega16 microcontroller. Mobile as a controller using the brand Sony Ericsson K608i with the type of Java software applications Avic B Controller. Having performed experiments and analyzed it can be seen that the hardware has been successfully fabricated using minimum system ATmega16 microcontroller combined with other supporting instruments. The software has been successfully designed using the C programming language using CodeVision AVR decompile. The performance of this instrument as a whole has been in accordance with a predetermined function, which is well able to control the stage and lighting effects dramatize the appropriate criteria for lighting the stage drama. In a control tool is also found flaws in the software used in mobile phones that have come out of the program first before sending the next command and distance for lighting control only about 7 meters. This tool has received validation from the LB. Suraja a dance coach and administrator at Prambanan Ramayana Ballet who claimed this tool is sufficient to meet criteria and developed as it is possible to control lighting in a real drama
    • …
    corecore