141,542 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

    Performance and productivity of parallel python programming: a study with a CFD test case

    Get PDF
    The programming language Python is widely used to create rapidly compact software. However, compared to low-level programming languages like C or Fortran low performance is preventing its use for HPC applications. Efficient parallel programming of multi-core systems and graphic cards is generally a complex task. Python with add-ons might provide a simple approach to program those systems. This paper evaluates the performance of Python implementations with different libraries and compares it to implementations in C or Fortran. As a test case from the field of computational fluid dynamics (CFD) a part of a rotor simulation code was selected. Fortran versions of this code were available for use on single-core, multi-core and graphic-card systems. For all these computer systems, multiple compact versions of the code were implemented in Python with different libraries. For performance analysis of the rotor simulation kernel, a performance model was developed. This model was then employed to assess the performance reached with the different implementations. Performance tests showed that an implementation with Python syntax is six times slower than Fortran on single-core systems. The performance on multi-core systems and graphic cards is about a tenth of the Fortran implementations. A higher performance was achieved by a hybrid implementation in C and Python using Cython. The latter reached about half of the performance of the Fortran implementation

    Poželjne karakteristike jezika za poučavanje programiranja u osnovnoj školi

    Get PDF
    U radu su navedene i pojašnjene poželjne karakteristike jezika za poučavanje programiranja. Uspoređeni su programski jezici Logo, Scratch i Python. Također, argumentirano je jesu li primjereni za poučavanje programiranja u osnovnoj školi, što postaje sve važniji dio nastave informatike. Učenje programiranja se nastoji popularizirati među učenicima, a najviše im problema zadaje razvijanje algoritamskog načina mišljenja. Nastavnicima probleme zadaje odabir programskog jezika jer programski jezik je jedan od ključnih čimbenika koji utječu na to hoće li se učenici zainteresirati za programiranje. Programski jezik bi trebao biti jednostavan i primjeren učenicima osnovnih škola. Prema važećem Katalogu obveznih udžbenika i pripadajućih dopunskih sredstava za osnovnu školu, za poučavanje programiranja u osnovnim školama se koriste programski jezici Logo, Python i QBasic. Na natjecanjima se koriste i programski jezici Basic, C, C++ i Pascal. U nekim školama, učenici uče programirati u programskom jeziku Scratch. Rad se sastoji od tri poglavlja. U prvom poglavlju su opisane poželjne karakteristike za poučavanje programiranja te su opisani programski jezici Scratch, Logo i Python. Drugo poglavlje sadrži rezultate istraživanja o utjecaju programskog jezika na motivaciju učenika, na percepciju, učenje i ishode učenja te rezultate istraživanja o prijelazu s vizualnog na tekstualni programski jezik. Treće poglavlje prikazuje koje kriterije zadovoljavaju promatrani programski jezici te imaju li poželjne karakteristike jezika za poučavanje programiranja.In this thesis it is described which are desirable characteristics of the programming language for the teaching of programming. Programming languages Logo, Scratch and Python are compared. Also, it is explored if they are suitable for teaching programming elementary school, which becomes an increasingly important part of computer science curriculum. Programming is trying to be popularized among students and the biggest problem is learning computational thinking. Teachers are faced with many problems, one of them is choosing a programming language because it is one of the key factors for students to become interested in programming. The programming language should be simple and appropriate for elementary school students. According to the relevant Catalogue of compulsory textbooks and related supplementary materials for elementary schools (hrv. Katalogu obveznih udžbenika i pripadajućih dopunskih sredstava za osnovnu školu), programming languages Logo, Python and QBasic are used to teach programming in elementary schools. Also, students use programming languages C, C++ and Basic on competitions. In some schools, students learn to program in the Scratch programming language. This paper consists of three chapters. The first chapter describes desirable features of languages for teaching programming and describes Scratch, Logo and Python programming languages. The second chapter contains the results of the studies about the influence of the programming language on student’s motivation, perception, learning and learning outcomes and the results of research on the transition from visual to textual programming language. The third chapter shows which criteria meet the observed programming languages

    Cost-effective HPC clustering for computer vision applications

    Get PDF
    We will present a cost-effective and flexible realization of high performance computing (HPC) clustering and its potential in solving computationally intensive problems in computer vision. The featured software foundation to support the parallel programming is the GNU parallel Knoppix package with message passing interface (MPI) based Octave, Python and C interface capabilities. The implementation is especially of interest in applications where the main objective is to reuse the existing hardware infrastructure and to maintain the overall budget cost. We will present the benchmark results and compare and contrast the performances of Octave and MATLAB

    Why and how FOSS scripting languages are important at school and at home

    Get PDF
    Скриптові мови ВПЗ на кшалт оболонки Unix, Perl й Python — дуже продуктивні, гнучкі і потужні інструменти програмування для усіх. Вони набагато легше вивчаються та розгортаються на будь-якій операційній системі, аніж програми на компільованих мовах, таких як Сі або Сі++, і все ж вони можуть автоматизувати чи значно прискорити багато втомливої комп'ютерної діяльності у будь-якій області повсякденних обчислень.FOSS scripting languages like Unix shells, Perl and Python are extremely productive, flexible and powerful programming tools for everybody. They are much easier to learn and deploy on any operating system than programs in compiled languages like C or C++, and yet they can automate or greatly speed up many tedious computer activities in any area of daily computing

    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

    Parallel containers: a tool for applying parallel computing applications on clusters

    Get PDF
    Parallel and cluster computing remain somewhat difficult to apply quickly for many applications domains. Recent developments in computer libraries such as the Standard Template Library of the C++ language and the Message Passing Package associated with the Python Language provide a way to implement very high level parallel containers in support of application programming. A parallel container is an implementation of a data structure such as a list, or vector, or set, that has associated with it the necessary methods and state knowledge to distribute the contents of the structure across the memory of a parallel computer or a computer cluster. A key idea is that of the parallel iterator which allows a single high level statement written by the applications programmer to invoke a parallel operation across the entire data structure’s contents while avoiding the need for knowledge of how the distribution is actually carried out. This transparency approach means that optimised parallel algorithms can be separated from the applications domain code, maximising reuse of the parallel computing infrastructure and libraries. This paper describes our initial experiments with C++ parallel containers
    corecore