• 제목/요약/키워드: Parallel Programs

검색결과 217건 처리시간 0.025초

재귀적 자료구조에 대한 재귀 함수의 병렬화 (Parallelization of Recursive Functions for Recursive Data Structures)

  • 안준선;한태숙
    • 한국정보과학회논문지:소프트웨어및응용
    • /
    • 제26권12호
    • /
    • pp.1542-1552
    • /
    • 1999
  • 자료 병렬성이란 자료 집합의 원소들에 대하여 동일한 작업을 동시에 수행하므로써 얻어지는 병렬성을 말한다. 함수형 언어에서 자료 집합에 대한 반복 수행은 재귀적 자료형에 대한 재귀 함수에 의하여 표현된다. 본 논문에서는 이러한 재귀 함수를 자료 병렬 프로그램으로 변환하기 위한 병렬화 방법을 제시한다. 생성되는 병렬 프로그램의 병렬 수행 구조로는 일반적인 형태의 재귀적 자료형에 대하여 정의되는 다형적인 자료 병렬 연산을 사용하여 트리, 리스트 등과 같은 일반적인 재귀적 자료 집합에 대한 자료 병렬 수행이 가능하도록 하였다. 재귀 함수의 병렬화를 위해서는, 함수를 이루는 각각의 계산들의 병렬성을 재귀 호출에 의해 존재하는 의존성에 기반하여 분류하고, 이에 기반하여 각각의 계산들에 대한 적절한 자료 병렬 연산을 사용하는 병렬 프로그램을 생성하였다.Abstract Data parallelism is obtained by applying the same operations to each element of a data collection. In functional languages, iterative computations on data collections are expressed by recursions on recursive data structures. We propose a parallelization method for data-parallel implementation of such recursive functions. We employ polytypic data-parallel primitives to represent the parallel execution structure of the object programs, which enables data parallel execution with general recursive data structures, such as trees and lists. To transform sequential programs to their parallelized versions, we propose a method to classify the types of parallelism in subexpressions, based on the dependencies of the recursive calls, and generate the data-parallel programs using data-parallel primitives appropriately.

GC-Tune을 이용한 Haskell 병렬 프로그램의 성능 조정 (Tuning the Performance of Haskell Parallel Programs Using GC-Tune)

  • 김화목;안형준;변석우;우균
    • 정보과학회 컴퓨팅의 실제 논문지
    • /
    • 제23권8호
    • /
    • pp.459-465
    • /
    • 2017
  • 매니코어 기술에 힘입어 컴퓨터 하드웨어의 성능이 향상되고 있지만 그에 비례한 소프트웨어 성능 증가는 다소 미미한 실정이다. 함수형 언어는 병렬 프로그램의 성능을 향상시키는 대안 중 하나이다. 이러한 언어는 부수효과가 없는 순수한 수식을 통해 내재된 병렬성을 지원하기 때문이다. 함수형 언어인 Haskell은 모나드를 기반으로 하는 다양하고 쉬운 병렬 구조를 제공하기 때문에 병렬 프로그래밍에서 널리 사용된다. 하지만 Haskell로 작성된 병렬 프로그램의 성능 확장성은 코어 수가 증가함에 따라 변동이 큰 경향이 있다. 이는 프로그램 실행에 있어 가비지 컬렉션이 공간과 시간에 모두 영향을 미치는데 Haskell은 이러한 가비지 컬렉션을 사용하는 가상머신 위에서 실행되기 때문이라고 추정된다. 따라서 본 논문에서는 GC-Tune이라는 메모리 튜닝 도구를 사용하여 이 추정이 맞는지 검증하고 Haskell 병렬 프로그램의 성능 확장성을 높이는 방법을 모색한다. 병렬 Haskell 표절 검사 프로그램을 대상으로 실험한 결과 성능 확장성이 향상되었다. 특히 메모리 튜닝을 하지 않은 프로그램에 비해 속도 향상의 변동 범위가 39% 감소하였다.

순서적 동기화를 포함하는 공유 메모리 병렬프로그램에서의 수행중 최초경합 탐지 기법 (On-the -fly Detection of the First Races for Shared-Memory Parallel Programs with Ordered Synchronization)

  • 박희동;전용기
    • 한국정보과학회논문지:시스템및이론
    • /
    • 제26권8호
    • /
    • pp.884-894
    • /
    • 1999
  • 순서적 동기화 및 내포 병렬성을 포함하는 공유메모리 병렬 프로그램에서의 경합(race)은 프로그램 수행에서 원하지 않은 비결정성(nondeterminism)을 야기할 수 있기 때문에 반드시 탐지되어져야 한다. 특히 프로그램 수행에서 최초경합(first race)을 탐지하는 것은 중요한데, 그 이유는 이 경합을 제거하면 다른 경합이 나타나지 않을 수도 있기 때문이다. 본 논문에서는 결정적 공유메모리 병렬프로그램을 위한 2단계 수행중 (two-pass on-the-fly) 최초경합 탐지 기법을 제시하며, 이것은 공유메모리 병렬 프로그램의 특정 수행에서 "최초로 발생되는" 경합들을 탐지하는 기법이다. 그리고 HPF 컴파일러를 이용하여 본 탐지 프로토콜을 공인된 벤치마크 프로그램에 적용하여, 병렬 프로그램 디버깅 시 고려하여야 할 파라미터들에 대한 실험으로부터 본 기법의 효율성을 보였다.Abstract Detecting races is important in debugging shared-memory parallel programs which have ordered synchronization and nested parallelism, because the races result in unintended non- deterministic executions of the programs. The first races are important in debugging, because the removal of such races may make other races disappear. It is even possible that all races reported would disappear once the first races are removed. This paper presents a new two-pass on-the-fly algorithm to detect the first races in such parallel programs. The algorithm reported in this paper is an on-the-fly algorithm that detects the races that "occur first" in a particular execution of shared-memory parallel programs. The experiment has accomplished, where two certified benchmark programs which can be executed under High Performance Fortran environments to get some parameters which improve debugging performance with our algorithm. with our algorithm.

A Study on Efficient Executions of MPI Parallel Programs in Memory-Centric Computer Architecture

  • Lee, Je-Man;Lee, Seung-Chul;Shin, Dongha
    • 한국컴퓨터정보학회논문지
    • /
    • 제25권1호
    • /
    • pp.1-11
    • /
    • 2020
  • 본 논문에서는 프로세서 중심 컴퓨터 구조에서 개발된 MPI 병렬 프로그램을 수정하지 않고 메모리 중심 컴퓨터 구조에서 더 효율적으로 수행시키는 기술을 제안한다. 본 연구에서 제안하는 기술은 메모리 중심 컴퓨터 구조가 가지는 빠른 대용량 공유 메모리 특징을 이용하여 MPI 표준 라이브러리 함수가 수행하는 네트워크 통신을 통한 느린 데이터 전달을 공유 메모리를 통한 빠른 데이터 전달로 대체하여 효율성을 얻는다. 본 연구에서 제안한 기술은 두 개의 프로그램에 구현되었다. 첫 번째 프로그램은 MC-MPI-LIB라고 불리는 수정된 MPI 라이브러리인데 이는 기존 MPI 표준 라이브러리 함수의 의미를 유지하면서 메모리 중심 컴퓨터 구조에서 더 효율적으로 수행한다. 두 번째 프로그램은 MC-MPI-SIM이라고 불리는 시뮬레이션 프로그램인데 이는 프로세서 중심 컴퓨터 구조 상에서 메모리 중심 컴퓨터 구조의 수행을 시뮬레이션한다. 본 논문에서 제안한 기술은 도커 가상화 상에서 구현된 분산 시스템 환경에서 개발하고 시험하였다. 다수의 MPI 병렬 프로그램을 이용하여 제안한 기술의 성능을 측정한 결과 메모리 중심 컴퓨터 구조에서 더 높은 성능으로 수행 가능함을 보였으며, 특히 통신 오버헤드 비율이 높은 MPI 병렬 프로그램의 경우 매우 높은 성능으로 수행 가능하다는 점을 확인하였다.

리눅스 클러스터에서 MPI 기반 병렬 프로그램의 동적 동시 스케줄링 기법 (A Dynamic Co-scheduling Scheme for MPI-based Parallel Programs on Linux Clusters)

  • 김혁;이윤석
    • 한국컴퓨터정보학회논문지
    • /
    • 제13권1호
    • /
    • pp.29-35
    • /
    • 2008
  • 빈번한 메시지를 주고받는 MPI 기반의 병렬 프로그램에서 효과적으로 통신이 이뤄지기 위해서는 송수신 프로세스들이 각 노드에서 동시에 스케줄되어야 한다. 그러나, 일반적으로 클러스터 컴퓨터를 구성하는 각 노드는 범용시분할 운영체제를 기반으로 하며, 이 경우 병렬 프로그램을 구성하는 프로세스들은 각 스케줄러에 의해 자율적으로 관리되므로 이들을 동시에 함께 실행시키는 것은 쉽지 않다. 본 연구에서는 리눅스 클러스터에서 효과적으로 병렬 MPI 프로그램을 실행시키기 위해, 메시지 교환 정보를 활용하여 통신에 참여하는 프로세스들이 동시에 스케줄 되는 기법을 제안하고 실제 구현을 통해 성능을 살펴보았다. NPB 병렬 벤치마크의 수행을 통해 측정한 결과에 따르면, 통신량이 높은 프로그램에서 33-56%의 실행 시간 감소 효과를 보였다.

  • PDF

Building a Dynamic Analyzer for CUDA based System.

  • SALAH T. ALSHAMMARI
    • International Journal of Computer Science & Network Security
    • /
    • 제23권8호
    • /
    • pp.77-84
    • /
    • 2023
  • The utilization of GPUs on general-purpose computers is currently on the rise due to the increase in its programmability and performance requirements. The utility of tools like NVIDIA's CUDA have been designed to allow programmers to code algorithms by using C-like language for the execution process on the graphics processing units GPU. Unfortunately, many of the performance and correctness bugs will happen on parallel programs. The CUDA tool support for the parallel programs has not yet been actualized. The use of a dynamic analyzer to find performance and correctness bugs in CUDA programs facilitates the execution of sophisticated processes, especially in modern computing requirements. Any race conditions bug it will impact of program correctness and the share memory bank conflicts to improve the overall performance. The technique instruments the programs in a way that promotes accessibility of the memory locations accessed by different threads well as to check for any bugs in the code of a program. The instrumented source code will be used initiated directly in the device emulation code of CUDA to send report for the user about all errors. The current degree of automation helps programmers solve subtle bugs in highly complex programs or programs that cannot be analyzed manually.

A Parallel Algorithm for Large-Scale Linear Programs with a Special Structure

  • Oh, Seyoung
    • 충청수학회지
    • /
    • 제6권1호
    • /
    • pp.139-155
    • /
    • 1993
  • A new sequential algorithm and computational results for large-scale linear programs with a special structure were presented in the previous paper [9]. In this paper, a parallel version of the algorithm was developed for a hypercube multiprocessor architecture NCUBE2. Computational results using 128 processors are presented for a randomly generated large-scale sparse or dense problems with the number of variables up to 256 and constraints up to 5 million.

  • PDF

On-line Trace Based Automatic Parallelization of Java Programs on Multicore Platforms

  • Sun, Yu;Zhang, Wei
    • Journal of Computing Science and Engineering
    • /
    • 제6권2호
    • /
    • pp.105-118
    • /
    • 2012
  • We propose two new approaches that automatically parallelize Java programs at runtime. These approaches, which rely on run-time trace information collected during program execution, dynamically recompile Java byte code that can be executed in parallel. One approach utilizes trace information to improve traditional loop parallelization, and the other parallelizes traces instead of loop iterations. We also describe a cost/benefit model that makes intelligent parallelization decisions, as well as a parallel execution environment to execute parallelized programs. These techniques are based on Jikes RVM. Our approach is evaluated by parallelizing sequential Java programs, and its performance is compared to that of the manually parallelized code. According to the experimental results, our approach has low overheads and achieves competitive speedups compared to the manually parallelizing code. Moreover, trace parallelization can exploit parallelism beyond loop iterations.

이질적 계산 능력을 가진 NOW를 위한 공간 공유 스케쥴링 기법 (Space-Sharing Scheduling Schemes for NOW with Heterogeneous Computing Power)

  • 김진성;심영철
    • 한국정보과학회논문지:시스템및이론
    • /
    • 제27권7호
    • /
    • pp.650-664
    • /
    • 2000
  • NOW(Network of Workstations)는 병렬 프로그램들을 수행하기 위한 플랫폼으로 많이 고려되어지고 있다. NOW에서 병렬 프로그램이 좋은 성능으로 실행되기 위해 해결되어야할 기본적인 문제들 중 하나가 작업의 스케쥴링 문제를 효율적으로 결정하는 것이다. 현재 NOW에 관한 대부분의 연구는 NOW를 구성하는 모든 워크스테이션이 같은 처리 능력을 가지고 있다고 가정하고 있다. 본 논문에서는 NOW를 구성하는 워크스테이션들이 다른 계산 능력을 가지고 있는 것을 고려한다. 이질적인 계산 능력을 가지고 있는 워크스테이션들로 구성된 NOW에 적용할 수 있는 10가지 공간 분할 스케쥴링 방법을 제시하 고, 시뮬레이터를 통하여 이 스케쥴링 정책들을 비교한다. 시뮬레이터는 합성된 순차/병렬 부하를 입력으로 받아 병렬 작업의 응답 사간과 기다림 시간을 성능 지표로 발생시킨다. 실험 결과 워크스테이션의 계산 능력에 비례하여 병렬 프로그램을 이질적으로 분할하는 경우가 균등 분할하는 경우보다 성능이 우수함을 알 수 있었다. 병렬 프로세스를 수행하는 워크스테이션에 소유자가 돌아온 경우 병렬 프로세스를 새 유휴 워크스테이션에 이주하는 것보다는 단지 우선 순위를 낮추는 것이 높은 성능을 보여 주었다. 우선 순위 낮춤을 사용하는 이질적 분할의 경우 적응 할당 정책이 넓은 범위의 병렬 프로그램 도착시간에서 좋은 성능을 보이나 부하 불균형이 높아지는 경우 수정된 적응 할당 정책이 높은 성능을 보여준다 .

  • PDF

다중스레드 데이타 병렬 프로그램의 표현 : PCFG(Parallel Control Flow Graph) (A Representation for Multithreaded Data-parallel Programs : PCFG(Parallel Control Flow Graph))

  • 김정환
    • 한국정보과학회논문지:시스템및이론
    • /
    • 제29권12호
    • /
    • pp.655-664
    • /
    • 2002
  • 데이타 병렬 모델은 대규모 병렬성을 용이하게 얻을 수 있는 장점이 있지만, 데이타 분산으로 인한 통신 지연시간은 상당한 부담이 된다. 본 논문에서는 데이타 병렬 프로그램에 내재되어 있는 태스크 병렬성을 추출하여 이러한 통신 지연시간을 감추는데 이용할 수 있음을 보인다. 기존의 태스크 병렬성 추출은 데이타 병렬성을 고려하지 않았지만, 여기서는 데이타 병렬성을 그대로 유지하면서 태스크 병렬성을 활용하는 방법에 대해 설명한다. 데이타 병렬 루프를 포함할 수 있는 다수의 태스크 스레드들로 구성된 다중스레드 프로그램을 표현하기 위해 본 논문에서는 PCFG(Parallel Control Flow Graph)라는 표현 형태를 제안한다. PCFG는 단일 스레드인 원시 데이타 병렬 프로그램으로부터 HDG(Hierarchical Dependence Graph)를 통해 생성될 수 있으며, 또한 PCFG로부터 다중스레드 코드를 쉽게 생성할 수 있다.