The article outlines a contemporary method for creating software for multi-processor computers. It describes the identification of parallelizable sequential code structures. Three structures were found and then carefully examined. The algorithms used to determine whether or not certain parts of code may be parallelized result from static analysis. The techniques demonstrate how, if possible, existing sequential structures might be transformed into parallel-running programs. A dynamic evaluation is also a part of our process, and it can be used to assess the efficiency of the parallel programs that are developed. As a tool for sequential programs, the algorithms have been implemented in C#. All proposed methods were discussed using a common benchmark.
The article presents a comparison of Kotlin coroutines with analogous solutions in Java and Scala in parallel program-ming using chosen metric and non-metric criteria. For that purpose, a multi-module project with corresponding imple-mentations of selected algorithms in all of the three languages was created and then analyzed. The studies were preced-ed by a description of the created project.
PL
Artykuł prezentuje porównanie wykorzystania współprogramów języka Kotlin w przetwarzaniu równoległym do analogicznych rozwiązań w Javie i Scali względem wybranych kryteriów mierzalnych i niemierzalnych. W tym celu stworzono oraz przeanalizowano wielomodułową aplikację z odpowiadającymi sobie implementacjami wyselekcjonowanych algorytmów w trzech wspomnianych językach. Analiza poprzedzona została opisem utworzonego projektu.
3
Dostęp do pełnego tekstu na zewnętrznej witrynie WWW
Objectives: The electroencephalographic signal is largely exposed to external disturbances. Therefore, an important element of its processing is its thorough cleaning. Methods: One of the common methods of signal improvement is the independent component analysis (ICA). However, it is a computationally expensive algorithm, hence methods are needed to decrease its execution time. One of the ICA algorithms (fastICA) and parallel computing on the CPU and GPU was used to reduce the algorithm execution time. Results: This paper presents the results of study on the implementation of fastICA, which uses some multi-core architecture and the GPU computation capabilities. Conclusions: The use of such a hybrid approach shortens the execution time of the algorithm.
W artykule zaprezentowano praktyczną implementację aplikacji rozwiązującej przykładowy algorytm genetyczny z wykorzystaniem akceleratorów GPU. W tym przypadku zdecydowano się na rozwiązanie za pomocą algorytmu genetycznego typowego problemu optymalizacyjnego, jakim jest problem komiwojażera. Dodatkowo w celu wykorzystania mocy karty graficznej w tworzonej aplikacji wykorzystano technologię programowania na karcie graficznej – technologię Nvidia CUDA.
EN
The paper presents a practical implementation of a local desktop application that solves exemplary genetic algorithm with the use of GPU accelerators. In this case decided with the use of genetic algorithm to solve typical optimization problem which is travelling salesman problem. Additionally used Nvidia CUDA programming technology in order to use power of GPU in created application.
Dzisiejsze procesory w komputerach osobistych i urządzeniach mobilnych umożliwiają coraz bardziej efektywne zrównoleglanie działań w celu szybszego uzyskania wyników. Twórcy oprogramowania mają wiele różnych możliwości zaimplementowania współbieżności, jednak zazwyczaj trzymają się jednej, najbardziej znanej sobie techniki. Warto prześledzić działanie każdej z nich, aby odkryć, kiedy można ją wykorzystać w sposób efektywny, a kiedy lepiej poszukać alternatywy. W poniższym artykule zostały przedstawione sposoby równoległej implementacji obliczeń matematycznych z wykorzystaniem wątków, zadań, puli wątków, puli zadań oraz równoległej pętli for z klasy Parallel. Wszystkie zostały napisane w języku C# na silniku Windows Presentation Foundation platformy .NET. Zaimplementowane obliczenia matematyczne to obliczenie liczby Pi z pomocą wzoru Leibniza.
EN
Nowadays processors working in personal computers and mobile devices allow for more and more effective parallel computing. Developers have at their disposal many different methods of implementing concurrency, but usually use the one, that they now best. It is beneficial to know, when a particular technique is good and when it is better to find an alternative. This paper presents different ways of implementing parallel mathematical calculations using threads, tasks, thread pool, task pool and parallel for loop. Each method was used in a C# application running on Windows Presentation Foundation engine on .NET platform. Implemented operation is calculation value of Pi using Leibnitz’s formula.
This paper addresses the problem of using functional programming (FP) languages for research and educational purposes. In order to identify the problems associated with the use of FP languages such as Erlang, an experiment consisting of two surveys was performed. The first survey was anonymous and aimed at establishing whether the participants prefer object-oriented or functional coding. The second one was a survey made after the students finished an Erlang course. The results of these two surveys demonstrate that functional programming is underrated with no apparent reasons. Possible steps to address this problem are suggested.
7
Dostęp do pełnego tekstu na zewnętrznej witrynie WWW
Artificial Ant Colony algorithm (AAC) can be applied to segmentation of bone structures out of CT data series. AAC procedure produces promising results in regions of adjacent bones and joints which are hard to distinguished by common segmentation algorithms. The article presents parallel implementation of the AAC which allows for significant speed-up of the segmentation procedure. The results of the segmentation for various bone structures in the area of the human pelvis are presented.
PL
Algorytm kolonii mrówkowej (AAC) pozwala na segmentację struktur kostnych z serii obrazów tomografii komputerowej. AAC daje obiecujące wyniki dla przylegających do siebie fragmentów kości i stawów, które trudno rozróżnić przy pomocy często używanych filtrów obrazu. Artykuł przedstawia równoległą implementację algorytmu pozwalającą znacznie przyspieszyć operację segmentacji. Zaprezentowano w nim wyniki algorytmu dla wybranych struktur kostnych w obrębie miednicy.
W artykule przedstawiono praktyczne aspekty programowania obiektowego w języku Java w zakresie programowania równoległego, czyli techniki stosowanej w celu wykorzystywania komputerów wieloprocesorowych (lub wielordzeniowych). Przedstawiono mechanizmy, które zapewniają programistom Javy korzystanie z wielu procesorów w przejrzysty i skalowany sposób. Zaprezentowano mechanizmy wspierające techniki programowania równoległego. Przedstawiono technikę rekurencji w ramach strategii „Dziel i zwyciężaj” oraz zasady przetwarzania sekwencyjnego. Zbadano możliwości zwiększenia kodu programu Javy w zakresie technik programowania równoległego na przykładzie frameworku Fork/Join. Przedstawiono możliwości tego frameworku pod kątem zwiększenia wydajności programu Javy. Przeprowadzono pomiary czasu wykonania programu dla różnych poziomów równoległości oraz różnych progów przetwarzania sekwencyjnego. Wykazano, że odpowiednia konstrukcja kodu Javy może znacznie skrócić czas wykonywania programu Javy, co przekłada się na wydajność programu.
EN
The article presents the practical aspects of object-oriented programming language Java in the field of parallel programming, a technique used in order to use multiprocessor computers (or multi-core). Mechanisms supporting parallel programming techniques were presented. Recursion technique in the framework of the "Divide and conquer" and the principle of sequential processing were presented. We examined the possibility of increasing the Java code program in the field of parallel programming on the example framework Fork/Join. The possibilities of this framework to improve performance of a Java program were presented. The measurements of the program runtime for different levels of parallelism and different thresholds for sequential processing were conducted. It has been shown that proper design of Java code can significantly shorten the duration of the program Java, which translates to program performance.
This paper describes a novel Polyhedral Source-to-Source Compiler (PSSC) that enables automatic recognition of parallel regions of C/C++ code and annotating them with OpenMP/OpenACC pragmas. The proposed source-to-source compiler uses polyhedral model to detect and optimize parallel loops. Loop optimization is done on intermediate code representation by Polly compiler and then it is mapped to original source code. This approach allows combining the simplicity and efficiency of Intermediate Representation (IR) code optimization with readability of output code. Experimental results show that the proposed compiler is able to reach the comparable performance to the original Polly compiler.
PL
Artykuł opisuje nowatorski kompilator typu source-to-source, który wykorzystuje model polihedralny do automatycznego wykrywania kodu C/C++, który może być wykonywany równolegle. Fragmenty kodu źródłowego, które mogą zostać zrównoleglone, są opatrywane pragmami OpenMP/OpenACC. Opisywany kompilator śledzi zmiany jakie zostały wprowadzone w kodzie pośrednim przez kompilator Polly, a następnie odwzoruje te transformacje w kodzie źródłowym. Przedstawione w artykule podejście umożliwia połączenie zalet wynikających z optymalizowania kodu pośredniego z możliwością łatwego przenoszenia na różne platformy kodu wysokopoziomowego. Przeprowadzone pomiary wydajności wykazały, że opracowany kompilator pozwala zrównoleglić kod wysokopoziomowy równie wydajnie jak bazowy kompilator Polly.
10
Dostęp do pełnego tekstu na zewnętrznej witrynie WWW
W artykule przedstawiono korzyści i ograniczenia związane z projektowaniem równoległego algorytmu biklasteryzacji, przeznaczonego na GPU. Zaprezentowano definicję biklasteryzacji oraz skrótowo opisano architekturze GPU. Zestawiono popularne wzorce strategii implementacji algorytmów, przydatne w projektowaniu efektywnych rozwiązań na GPU. Publikacja zawiera także praktyczne wskazówki programistyczne, w kontekście implementacji algorytmów biklasteryzacji w języku CUDA/OpenCL.
EN
This article presents the benefits and limitations related to designing a parallel biclustering algorithm on a GPU. A definition of biclustering is provided together with a brief description of the GPU architecture. We then review algorithm strategy patterns, which are helpful in providing efficient implementations on GPU. Finally, we highlight programming aspects of implementing biclustering algorithms in CUDA/OpenCL programming language.
11
Dostęp do pełnego tekstu na zewnętrznej witrynie WWW
Field Programmable Gate Array (FPGA) systems are highly suitable for solving satisfiability problems SAT. The paper will present the possibilities in programmable FPGA chips to test satisfiability by use of parallelism and pipelining. There will be presented various options to approach this problem by use of VHDL language. For this purpose, authors created a dedicated architecture, combined with a PC, by use of the UART protocol. To build the architecture authors used a Xilinx Spartan-3AN plate, the synthesis was performed in the ISE 11.3. Xilinx software.
PL
Układy FPGA ze względu na swoją architekturę bardzo dobrze pasują do rozwiązywania zagadnień z zakresu rozwiązywania problemów spełnialności SAT. W artykule przedstawiono współbierzne rozwiązanie problemu spełnialności z zastosowaniem programowalnych układów FPGA. Dla potrzeb realizacji zadania opracowno dedykowaną architekturę, opartą o układ FPGA (Xilinx Spartan-3AN) komunikującą się za pomocą protokołu UART.
12
Dostęp do pełnego tekstu na zewnętrznej witrynie WWW
Powerful algebraic techniques have been developed for classical sequential computation. Many of them are based on regular expressions and the associated regular algebra. For parallel and interactive computation, extensions to handle 2-dimensional patterns are often required. Finite interactive systems, a 2-dimensional version of finite automata, may be used to recognize 2-dimensional languages. In this paper we present a blueprint for getting a formal representation of parallel, interactive programs and of their semantics. It is based on a recently introduced approach for getting regular expressions for 2-dimensional patterns, particularly using words of arbitrary shapes and powerful control mechanisms on composition. We extend the previously defined class of expressions n2RE with new control features, progressively increasing the expressive power of the formalism up to a level where a procedure for generating the words accepted by finite interactive systems may be obtained. Targeted applications come from the area of modelling, specification, analysis and verification of structured interactive programs via the associated scenario semantics.
This paper concerns a classification problem of 3D shapes being in motion. The goal is to develop the system with real-time capabilities to distinguish basic shapes (corners, planes, cones, spheres etc.) that are moving in front of RGB-D sensor. It is introduced an improvement of SoA algorithms (normal vector computation using PCA Principal Component Analysis and SVD Singular Value Decomposition, PFH – Point Feature Histogram) based on GPGPU (General Purpose Graphic Processor Unit) computation. This approach guarantee on-line computation of normal vectors, unfortunately computation time of the PFH for each normal vector is still a challenge to obtain on-line capabilities, therefore in this paper it is shown how to find a region of movement and to perform the classification process assuming the decreased amount of data. Proposed approach can be a starting point for further developments of the systems able to recognize the objects in the dynamic environments.
Współczesny proces dydaktyczny technik programowania często wymaga dostępu zarówno do nowoczesnego sprzętu, jak i oprogramowania. W szczególnej mierze odnosi się to do algorytmów równoległych, których odpowiednie właściwości w dużo większym stopniu można zaobserwować na wydajnych procesorach nowej generacji. Aby stworzyć międzynarodową społeczność akademicką związaną z tą specjalizacją firma Intel udostępniła wirtualne laboratorium testowe (Manycore Testing Lab - MTL). Artykuł przedstawia aspekt architektury oraz praktycznego zastosowania MTL w pracy wieloużytkowej i skupia się na empirycznym potwierdzeniu wzrostu wydajności uzyskanej dzięki programowaniu równoległemu i10-rdzeniowym procesorom Westmere-EX. Badaniom objęto cztery klasy algorytmów: czysto matematyczny dotyczący problemu Collatza, kryptograficzny 3DES, kwantowy algorytm Grovera oraz klasyczny algorytm genetyczny. Dla zastosowań edukacyjnych dostęp do laboratorium jest bezpłatny, a udostępniane platformy wspierają wszelkie zaawansowane technologie.
EN
The modern didactic process of programming techniques often requires access to the modern hardware and software. In a particular part applies to parallel algorithms, where appropriate properties to a much greater extent can be seen in the new generation of high-performance processors. To create an international academic community associated with this specialization, Intel released a virtual test lab (Manycore Testing Lab - MTL). The paper presents the architectural aspect and the practical application of MTL at work reusable and focuses on empirical confirmation gains obtained through parallel programming and 10-core Westmere-EX processors. The study consisted of four classes of algorithms: for a purely mathematical problem Collatz, 3DES cryptography, quantum Grover algorithm and the classic genetic algorithm. For educational access to the laboratory is free and available to all platforms support advanced technologies.
W artykule przedstawiono wyniki prac, których celem było zbadanie możliwości implementacji algorytmu wyznaczania punktów charakterystycznych za pomocą metody SURF na platformie CUDA oraz porównanie czasów obliczeń sekwencyjnej i równoległej implementacji tego algorytmu.
EN
This article presents results of our work concerned possibility of implementation of algorithm for assigning key points using SURF algorithm and CUDA technology. The work also compares time of execution of these applications.
16
Dostęp do pełnego tekstu na zewnętrznej witrynie WWW
An FPGA-based execution platform for PLC controllers with capability to run multiple control tasks is presented. The platform, called multi-CPCore, uses hardware virtual machines to execute control tasks defined in CPDev engineering environment. The tasks consist of one or more programs written in IEC 61131-3 languages, such as ST, IL or FBD. They may run with different cycles and communicate via global variables. Parallel programming mechanisms like process image and semaphores are provided to handle potential conflicts when accessing shared resources.
17
Dostęp do pełnego tekstu na zewnętrznej witrynie WWW
Algorytm łamania haseł metodą słownikową jest techniką używaną do siłowego odgadywania haseł do systemów. Jego realizacja wymaga dużych nakładów obliczeniowych, dlatego też uzasadnione jest wykorzystanie do tego celu programowania równoległego. W artykule przedstawiono i porównano ze sobą, równoległe implementacje tego algorytmu w trzech różnych środowiskach programowania równoległego. Są nimi MPI (Message Passing Interface), środowisko wykorzystujące model z przesyłaniem komunikatów, OpenMP (Open Multi Processing), realizujące zrównoleglenie obliczeń na poziomie danych oraz środowisko procesorów kart graficznych.
EN
Password cracking by the dictionary method is a technique for detecting passphrases. Its implementation requires a large computational effort, so it is justified to apply for it a parallel programming. In this article we describe and compare a parallel implementation in three different parallel programming environments, i.e. MPI (Message Passing Interface), the environment that uses a model with messagepassing; OpenMP (Open Multi Processing), which is based on data-parallelization; and the graphics processing units environment.
W artykule przedstawiono implementację techniki rozpoznawania wzorców nieregularnych przy zastosowaniu technologii CUDA. Zasygnalizowano możliwości współczesnych procesorów graficznych firmy NVIDIA o architekturze Fermi. Przytoczono podstawowe reguły programowania w C UDA. Dokonano wyboru metody segmentacji wzorcami nieregularnymi opartej na transformacie Hougha, jako odpowiedniej do wykorzystania potencjału procesora graficznego. Opisano kluczowe fragmenty implementacji. Dokonano weryfikacji działania w zakresie szybkości i poprawności obliczeń.
EN
An implementation of an irregular pattern recognition technique with the use of the CUDA technology is presented in the paper. The potential of the contemporary NVIDIA's graphics processing units based on the Fermi architecture is emphasized. Basic rules of the CUDA programming are described. The Hough method for irregular patterns segmentation, as suitable for the implementation, has been chosen. Parts of the written program crucial to the CUDA technology are explained. The implementation has been verified for the sake of speed and correctness.
Artykuł dotyczy wykorzystania kompilacji iteracyjnej do optymalizacji warstwy programowej systemów wbudowanych. W oparciu o autorskie narzędzie WIZUTIC zminejszono czas przetwarzania algorytmu szyfrowania DES. Danymi wejściowymi kompilatora są programy sekwencyjne, wynikami programy zrównoleglone zgodnie ze standardem OpenMP oraz zoptymalizowane pod względem lokalności danych. Parametrem kompilacji iteracyjnej jest rozmiar bloku dla transformacji pętli programowej-tiling.
EN
Embedded systems are special-purpose computers that perform one or few dedicated tasks. They are mostly part of larger electronic devices, such as communication devices, home appliances, office automation, business equipment, automobiles, etc. Complexity of computers has grown tremendously in recent years, because multi-core processors are in widespread use. Parallelized programs must be run on multi-core processors to use the most of its computing power. Exploiting parallel compilers for automatic parallelization of sequential programs accelerates design processes and reduces costs of the designed systems. In this paper there is described a WIZUTIC iterative compiler developed by the Faculty of Computer Science and Information Technology of the West Pomeranian University of Technology. It uses the source code of PLUTO parallel compiler developed at the Ohio State University by Uday Bondhugula. A simulated annealing algorithm is used for finding optimization passes for the given program features. Parameters that are changed in each iteration are tile sizes of loop transformation tiling. Experimental tests are described and the speed-up results obtained for the DES encryption algorithm are given.
Efficiency of multiprocessor system usage is strongly dependent on methods of schedule design - the way of task distribution on each processor to decrease overall schedule time. This article is devoted to the part of this process - schedule design on example of software development for LTE and WIMAX base stations.
PL
Wydajność użytkowania systemów mikroprocesorowych silnie zależy od metody zaprojektowania harmonogramu, tj. od sposobu rozdziału zadań na każdy procesor. Ma to wpływ na zmniejszenie całkowitego czasu wykonywania zadań. W artykule przedstawiono część tego procesu, tj. projektowanie harmonogramu na przykładzie opracowania oprogramowania dla stacji bazowych LTE oraz WIMAX. Wskazano cztery algorytmy możliwe do zastosowania przy wykorzystaniu algorytmów genetycznych. Podano wyniki badań symulacyjnych tych algorytmów, z których wynika, że uzyskuje się dobrą zbieżność przy ograniczonej liczbie generacji. Głównym zadaniem analizowanym w pracy jest skrócenie czasu opracowania oprogramowania za pomocą automatycznego opracowania harmonogramu, znajdowania błędów, uproszczenia debugowania, i wizualizacji za pomocą diagramu. Do rozwoju oprogramowania telekomunikacyjnego proponuje się oryginalną metodę możliwą do zastosowania w formie systemu wbudowanego (SOC). Platformą hardware'ową jest element SOC i kilka różnych jednostek przetwarzających. Algorytm cyfrowego przetwarzania sygnałów jest zdefiniowany przez listę zadań wraz z informacjami o zależnościach. Typ jednostki przetwarzającej i czas przetwarzania są zdefiniowane z góry dla każdego zadania.
JavaScript jest wyłączony w Twojej przeglądarce internetowej. Włącz go, a następnie odśwież stronę, aby móc w pełni z niej korzystać.