알고리즘 골격
Algorithmic skeleton컴퓨팅에서 알고리즘 스켈레톤 또는 병렬 패턴은 병렬 및 분산 컴퓨팅을 위한 고급 병렬 프로그래밍 모델입니다.
알고리즘 골격은 일반적인 프로그래밍 패턴을 이용하여 병렬 및 분산 애플리케이션의 복잡성을 숨깁니다.기본 패턴 세트(스케톤)부터 기본 패턴을 조합하여 보다 복잡한 패턴을 만들 수 있습니다.
개요
알고리즘 골격의 가장 뛰어난 특징은 병렬 액티비티의 조정과 동기화가 골격 패턴에 의해 암묵적으로 정의된다는 것입니다.프로그래머는 응용프로그램의 순차적 부분 간의 동기화를 지정할 필요가 없습니다.이것은 두 가지 의미를 가집니다.첫째, 통신/데이터 액세스 패턴을 미리 알고 있기 때문에 스케줄 스켈레톤 프로그램에 비용 모델을 적용할 수 있습니다.[1]둘째, 이 알고리즘 스켈레톤 프로그래밍은 기존의 하위 레벨 병렬 프로그래밍 모델(스레드, MPI)과 비교하여 오류 수를 줄입니다.
프로그램 예시
다음 예시는 병렬 프로그래밍용 Java Skandium 라이브러리를 기반으로 합니다.
목적은 분할 및 정복 패턴을 사용하여 QuickSort 알고리즘의 알고리즘 스켈레톤 기반 병렬 버전을 구현하는 것입니다.고급 접근 방식에서는 스레드 관리가 프로그래머로부터 숨겨집니다.
// 1. 스켈레톤 프로그램을 정의합니다. 스켈레톤< >범위, 범위> 종류 = 신규 DaC< >범위, 범위>( 신규 분할해야 한다(문턱값, 최대 시간), 신규 스플릿 리스트(), 신규 종류(), 신규 머지 리스트()); // 2. 입력 파라미터 미래.< >범위> 미래. = 종류.입력(신규 범위(생성하다(...))); // 3. 여기서 다른 일을 하세요. // ... // 4. 결과에 대한 블록 범위 결과 = 미래..얻다();
- 먼저 패턴을 채우는 기능 코드(ShouldSplit, SplitList, Sort, MergeList)를 사용하여 스켈레톤의 새 인스턴스를 정의합니다.기능 코드는 병렬에 대한 우려 없이 프로그래머에 의해 작성됩니다.
- 두 번째 단계는 계산을 트리거하는 데이터 입력입니다.이 경우 Range는 하나의 배열과 하나의 하위 배열을 표현할 수 있는 두 개의 인덱스를 포함하는 클래스입니다.프레임워크에 입력된 모든 데이터에 대해 새로운 미래 개체가 생성됩니다.둘 이상의 미래를 스켈레톤에 동시에 입력할 수 있습니다.
- 결과가 계산되는 동안 다른 작업을 수행할 수 있으므로 미래에서는 비동기 계산을 허용합니다.
- 계산 결과를 검색하여 필요한 경우 차단할 수 있습니다(즉, 아직 결과를 사용할 수 없음).
이 예의 기능 코드는 Condition, Split, Execute 및 Merge의 4가지 유형에 해당합니다.
일반의 학급 분할해야 한다 용구 조건.< >범위>{ 인트 문턱값, 최대 시간, 시대; 일반의 분할해야 한다(인트 문턱값, 인트 최대 시간){ 이것..문턱값 = 문턱값; 이것..최대 시간 = 최대 시간; 이것..시대 = 0; } @오버라이드 일반의 동기화된 부울 조건.(범위 r){ 돌아가다 r.맞다 - r.왼쪽 > 문턱값 & & 시대++ < > 이것..최대 시간; } }
ShouldSplit 클래스는 Condition 인터페이스를 구현합니다.함수는 입력(이 경우 범위 r)을 수신하고 true 또는 false를 반환합니다.이 함수를 사용하는 Divide and Concer의 컨텍스트에서는 서브 어레이를 다시 세분화할지 여부가 결정됩니다.
SplitList 클래스는 스플릿인터페이스를 실장합니다.이 경우 (서브) 어레이는 작은 서브 어레이로 분할됩니다.클래스는 도우미 기능을 사용합니다.partition(...)
이는 잘 알려진 QuickSort 피벗 및 스왑 스킴을 구현합니다.
일반의 학급 스플릿 리스트 용구 분열되다< >범위, 범위>{ @오버라이드 일반의 범위[] 분열되다(범위 r){ 인트 i = 칸막이(r.배열, r.왼쪽, r.맞다); 범위[] 인터벌 = {신규 범위(r.배열, r.왼쪽, i-1), 신규 범위(r.배열, i+1, r.맞다)}; 돌아가다 인터벌; } }
Sort 클래스는 인터페이스와 Execute 인터페이스를 구현하고 다음 명령에서 지정한 서브 어레이의 정렬을 담당합니다.Range r
이 경우 지정된 서브어레이에 대해 Java의 기본(Arrays.sort) 메서드를 호출합니다.
일반의 학급 종류 용구 실행< >범위, 범위> { @오버라이드 일반의 범위 실행하다(범위 r){ 한다면 (r.맞다 <=> r.왼쪽) 돌아가다 r; 어레이.종류(r.배열, r.왼쪽, r.맞다+1); 돌아가다 r; } }
마지막으로 서브어레이 세트가 정렬되면 Merge 인터페이스를 구현하는 MergeList 클래스와 함께 서브어레이 부품을 더 큰 배열로 병합합니다.
일반의 학급 머지 리스트 용구 머지< >범위, 범위>{ @오버라이드 일반의 범위 합병하다(범위[] r){ 범위 결과 = 신규 범위( r[0].배열, r[0].왼쪽, r[1].맞다); 돌아가다 결과; } }
프레임워크 및 라이브러리
돕다
ASSIST는[2][3] 프로그래머에게 구조화된 조정 언어를 제공하는 프로그래밍 환경입니다.조정 언어는 병렬 프로그램을 소프트웨어 모듈의 임의 그래프로 표현할 수 있습니다.모듈 그래프는 일련의 모듈이 일련의 입력된 데이터 스트림을 사용하여 서로 상호 작용하는 방법을 설명합니다.모듈은 순차 또는 병렬로 할 수 있습니다.순차 모듈은 C, C++ 또는 Fortran으로 쓸 수 있으며, 병렬 모듈은 특수 ASSISS 병렬 모듈(parmod)로 프로그래밍됩니다.
AdHoc은 [4][5]계층형 폴트 톨러런스 분산 공유 메모리(DSM) 시스템을 사용하여 저장소에서 get/put/remove/execut 조작을 제공함으로써 처리 요소 간에 데이터 스트림을 상호 연결합니다.AdHoc에 대한 연구는 데이터 저장소의 투명성, 확장성 및 내결함성에 초점을 맞추고 있습니다.
전통적인 스켈레톤 프레임워크는 아니지만, 스켈레톤이 제공되지 않는다는 점에서 ASS의 일반적인 파모드는 팜, 맵 등과 같은 클래식 스켈레톤에 특화할 수 있습니다.ASS는 또한 parmod의 자동 제어를 지원하며 사용되는 리소스 수를 동적으로 조정하여 성능 계약의 대상이 될 수 있습니다.
CO2P3S
CO2P3S(Correct Object-Oriented Pattern-Based Parallel Programming System)는 자바에서 스레드를 이용하여 병렬화를 실현하는 패턴 지향 개발 [6]환경입니다.
CO2P3S는 병렬 어플리케이션의 완전한 개발 프로세스와 관련되어 있습니다.프로그래머는 프로그래밍 GUI를 통해 상호작용하여 패턴과 그 구성 옵션을 선택합니다.그 후 프로그래머가 패턴에 필요한 훅을 채우고 어플리케이션의 병렬 실행을 위한 프레임워크로 새로운 코드가 Java에서 생성됩니다.생성된 프레임워크는 추상화 내림차순으로 패턴 레이어, 중간 코드 레이어 및 네이티브 코드 레이어의 세 가지 레벨을 사용합니다.따라서 고급 프로그래머는 생성된 코드를 여러 수준에서 개입시켜 응용 프로그램의 성능을 조정할 수 있습니다.생성된 코드는 슈퍼클래스의 확장이 필요 없는 프로그래머가 제공하는 타입을 사용하여 대부분 타입 세이프이지만 메시 패턴의 reduce(... Object reducer) 메서드와 같이 타입 세이프가 완전히 되지 않습니다.
CO2P3S에서 지원되는 패턴 세트는 메서드시퀀스, 디스트리뷰터, 메쉬 및 웨이브프런트에 대응합니다.오브젝트 참조를 사용하여 프레임워크를 구성함으로써 복잡한 애플리케이션을 구축할 수 있습니다.그러나 적절한 패턴이 없는 경우 MetaCO2P3S 그래픽 툴은 프로그래머가 패턴 디자인을 수정하고 CO2P3S에 새로운 패턴을 도입할 수 있도록 함으로써 확장성에 대처합니다.
CO2P3S에서의 분산 메모리 아키텍처 지원은 나중에 도입되었습니다.[7]분산 메모리 패턴을 사용하려면 프로그래머는 패턴의 메모리 옵션을 공유에서 분산으로 변경하고 새 코드를 생성해야 합니다.사용 관점에서 코드의 분산 메모리 버전에서는 원격 예외 관리가 필요합니다.
칼슘과 스칸듐
칼슘은 리튬과 머스켈에서 많은 영감을 얻었다.이와 같이 Java 라이브러리로 알고리즘 스켈레톤 프로그래밍을 제공합니다.작업 및 데이터 병렬 골격은 모두 완전히 중첩 가능하며 상속이 아닌 파라메트릭 골격 개체를 통해 인스턴스화됩니다.
칼슘은 인프라스트럭처와 같은 분산형 클러스터를 위해 ProActive 환경 상에서 스켈레톤 애플리케이션의 실행을 지원합니다.또한 칼슘에는 알고리즘 골격 프로그래밍에 대한 세 가지 특징이 있습니다.첫째, 성능 [8]버그의 원인이 되는 코드를 프로그래머가 식별할 수 있도록 지원하는 성능 튜닝 모델입니다.둘째, 서브젝트 감소 특성을 보증하는 것으로 입증된 네스트 가능한 골격의 유형 시스템이며 Java Generics를 [9]사용하여 구현됩니다.셋째, 투명한 알고리즘의 스켈레톤 파일 액세스 모델로, 데이터 집약적인 애플리케이션의 [10]스켈레톤을 실현합니다.
Skandium은 멀티코어 컴퓨팅을 위한 칼슘의 완전한 재실장입니다.Skandium에서 작성된 프로그램은 병렬 프로그래밍을 [11]단순화하기 위해 공유 메모리를 이용할 수 있습니다.
에덴
Eden은[12] Haskell을 확장하는 분산 메모리 환경을 위한 병렬 프로그래밍 언어입니다.프로세스는 병렬 프로그래밍을 달성하기 위해 명시적으로 정의되며, 그 통신은 암묵적으로 유지됩니다.프로세스는 단일 방향 채널을 통해 통신하며, 단일 채널은 한 라이터를 정확히 한 리더에 연결합니다.프로그래머는 프로세스가 의존하는 데이터만 지정하면 됩니다.Eden의 프로세스 모델은 프로세스의 세분성, 데이터 배포 및 통신 토폴로지를 직접 제어합니다.
에덴은 골격이 언어 구성체로 제공되지 않는다는 점에서 골격 언어가 아니다.대신 골격은 에덴의 하위 프로세스 추상화 위에 정의되어 작업 및 데이터 병렬화를 모두 지원합니다.그래서 대부분의 다른 접근법과는 달리 에덴은 골격을 동일한 언어로 정의하고 동일한 수준에서 골격 인스턴스화를 기술합니다.에덴 그 자체.에덴은 기능적 언어의 확장이기 때문에 에덴의 골격은 고차적 함수이다.Eden은 알고리즘 골격의 병렬 구현을 설명하는 아키텍처에 의존하지 않는 스킴인 구현 골격의 개념을 도입합니다.
e스켈
에든버러 스켈레톤 라이브러리(eSkel)는 C로 제공되며 MPI 위에서 실행됩니다.eSkel의 첫 번째 버전은 [13]에 설명되어 있으며 이후 버전은 [14]에 제시되어 있습니다.
그럼 [15]스켈레톤의 네스트 모드와 인터랙션모드가 정의되어 있습니다.네스트 모드는 일시 모드 또는 영속 모드 중 하나이며 인터랙션모드는 암묵 모드 또는 명시 모드 중 하나입니다.과도 네스트란 네스트된 스켈레톤이 각 호출에 대해 인스턴스화되어 그 후에 파기되는 것을 의미합니다.또한 영속적인 것은 스켈레톤이 한 번 인스턴스화되어 어플리케이션 전체에서 동일한 스켈레톤인스턴스가 호출되는 것을 의미합니다.암묵적 상호작용은 골격 간의 데이터 흐름이 골격 구성에 의해 완전히 정의되는 것을 의미하며, 명시적 상호작용은 골격 구성에 의해 지정되지 않은 방식으로 데이터를 생성하거나 흐름에서 제거할 수 있음을 의미합니다.예를 들어 입력을 수신하지 않고 출력을 생성하는 스켈레톤에는 명시적 상호 작용이 있습니다.
주로 파이프라인에 대한 스케줄링 및 자원 매핑에 대한 성능 예측은 Benoit 등에 의해 검토되었다.[16][17][18][19]그들은 프로세스 대수를 기반으로 각 매핑에 대한 성능 모델을 제공하고 모델의 결과에 따라 최적의 스케줄링 전략을 결정합니다.
보다 최근의 연구는 구조화된 병렬 프로그래밍,[20] 특히 파이프 [21][22]골격에 대한 적응 문제를 다루고 있다.
패스트플로우
FastFlow는 스트리밍 및 데이터 병렬 애플리케이션 개발을 목표로 하는 골격 병렬 프로그래밍 프레임워크입니다.처음에는 멀티코어 플랫폼을 대상으로 개발되었지만 NVidia GPGPU, Xeon Phi, Tilera TIL64 등의 컴퓨팅 액셀러레이터를 탑재한 공유 메모리 플랫폼의 [23][24]클러스터로 구성된 이기종 플랫폼을 대상으로 순차적으로 확장되었습니다.FastFlow의 주요 설계 이념은 애플리케이션 설계자에게 적절한 병렬 프로그래밍 추상화 및 신중하게 설계된 런타임 [25]지원을 통해 병렬 프로그래밍(예: 시장 투입 시간, 휴대성, 효율성 및 성능 이식성)을 위한 주요 기능을 제공하는 것입니다.FastFlow는 이종 병렬 플랫폼용 범용 C++ 프로그래밍 프레임워크입니다.인텔 TBB 및 OpenMP 등 다른 고급 프로그래밍 프레임워크와 마찬가지로 휴대용 병렬 애플리케이션의 설계와 엔지니어링을 단순화합니다.그러나 캐시 일관 공유 메모리 플랫폼에서의 세밀한 병렬 처리, 스트리밍 애플리케이션, 멀티코어와 액셀러레이터의 병용 등 특정 애플리케이션 시나리오에서의 다른 병렬 프로그래밍 프레임워크에 대한 표현력과 성능 면에서는 분명한 우위를 보이고 있습니다.FastFlow는 일반적으로 인텔 TBB, OpenMP, Cilk [26]등의 최첨단 병렬 프로그래밍 프레임워크에 필적합니다(또한 그 속도보다 약간 빠른 경우도 있습니다).
HDC
High-order Divide and Concer(HDC;[27] 고차분할 및 정복)는 기능 언어 Haskell의 서브셋입니다.기능 프로그램은 C/MPI로 컴파일하여 스켈레톤 구현과 연계할 수 있는 다형 고차 함수로 제시된다.언어는 분할과 정복 패러다임에 초점을 맞추고 일반적인 분할과 정복의 종류에서 출발하여 효율적인 구현이 가능한 보다 구체적인 사례가 도출된다.특정 케이스는 고정 재귀 깊이, 일정 재귀 정도, 다중 블록 재귀, 요소별 연산 및 통신에[28] 해당합니다.
HDC는 하위 문제의 정밀도와 사용 가능한 프로세서 수와의 관계에 특히 주의를 기울입니다.HDC는 프로그램의 각 부분에 대한 프로세서의 적절한 할당을 추정하기 위해 노력하므로 프로세서의 총 수는 스켈레톤 프로그램의 성능을 위한 핵심 매개 변수입니다.따라서 애플리케이션의 퍼포먼스는 서브 문제의 수를 초과하거나 사용 가능한 프로세서를 이용하기에 충분한 병렬화가 되지 않는 것으로 예상되는 프로세서 수와 밀접하게 관련되어 있습니다.
HOC-SA
HOC-SA는 Globus 인큐베이터 프로젝트입니다.
HOC-SA는 High-Order Components-Service Architecture 。고차 컴포넌트(HOC)는 그리드 애플리케이션 개발을 단순화하는 것을 목적으로 합니다.
HOC-SA의 목적은 Globus 미들웨어(GRAM RSL 문서, 웹 서비스 및 리소스 구성 등)의 모든 세부 정보를 알고 싶지 않은 Globus 사용자에게 핵심 Globus Toolkit보다 더 높은 수준의 그리드를 제공하는 HOC를 제공하는 것입니다.
HOC는 Globus Toolkit 위에 컴포넌트로 구현되며 웹 [29]서비스를 통해 원격으로 액세스할 수 있습니다.
자스켈
JaSkel은[30] 팜, 파이프 및 하트비트와 같은 골격을 제공하는 Java 기반 골격 프레임워크입니다.골격은 상속을 사용하여 특수화됩니다.프로그래머는 애플리케이션 고유의 코드를 제공하기 위해 각 스켈레톤에 대해 추상적인 메서드를 구현합니다.JaSkel의 스켈은 순차, 동시 및 동적 버전으로 제공됩니다.예를 들어 동시 팜은 공유 메모리 환경(스레드)에서는 사용할 수 있지만 분산 팜을 사용해야 하는 분산 환경(클러스터)에서는 사용할 수 없습니다.한 버전에서 다른 버전으로 변경하려면 프로그래머는 다른 스켈레톤에서 상속하도록 클래스의 서명을 변경해야 합니다.스켈레톤 네스트에는 기본 Java Object 클래스가 사용되므로 스켈레톤 구성 중에는 유형 시스템이 적용되지 않습니다.
계산의 분배 측면은 AOP, 구체적으로는 AspectJ 구현을 사용하여 JaSkel에서 처리된다.따라서 [31]JaSkel은 인프라와 같이 클러스터와 그리드 모두에 배포할 수 있습니다.그럼에도 불구하고 JaSkel 접근법의 단점은 골격의 중첩이 배치 인프라와 엄격히 관련되어 있다는 것입니다.따라서 계층형 인프라스트럭처의 단일 팜보다 팜을 이중으로 중첩하면 성능이 향상됩니다.이는 스켈레톤 프로그램의 배포와 기능상의 문제를 분리하기 위해 AOP를 사용하는 목적을 달성하지 못합니다.
리튬 & 머스켈
리튬과[32][33][34] 그 후속 제품인 Muskel은 이탈리아 피사 대학에서 개발된 골격 구조이다.둘 다 자바 라이브러리로 프로그래머에게 네스트 가능한 골격을 제공합니다.스켈레톤 애플리케이션의 평가는 Aldinucci와 Danelutto에 [35][36]의해 도입된 운영 시멘틱스의 정식 정의를 따르며, 작업 및 데이터 병렬화를 모두 처리할 수 있다.의미론은 라벨이 부착된 전이 시스템을 사용하여 스켈레톤 언어의 기능적 동작과 병렬 동작을 모두 기술합니다.또한 스켈레톤 개서 기술[18, 10], 태스크 룩어헤드, 서버 간 지연 바인딩 [37]등의 여러 가지 퍼포먼스 최적화가 적용됩니다.
구현 레벨에서 리튬은 매크로[38][39] 데이터 플로우를 이용하여 병렬화를 실현합니다.입력 스트림이 새로운 파라미터를 수신하면 스켈레톤 프로그램이 처리되어 매크로 데이터 흐름 그래프가 취득됩니다.그래프의 노드는 프로그래머가 제공하는 일련의 코드 조각을 나타내는 매크로 데이터 흐름 명령(MDFi)입니다.태스크는 여러 MDFi를 그룹화하기 위해 사용되며 태스크 풀의 유휴 처리 요소에 의해 사용됩니다.그래프 연산이 완료되면 결과는 출력 스트림에 배치되어 사용자에게 전달됩니다.
또한 Muskel은 분산 실행 프레임워크인 Java/Jini Parallel Framework(JJPF)[43]와 인터페이스하면 Quality of Service(QoS),[40] 태스크 풀과 [41][42]인터프리터 간의 보안, 리소스 검출, 로드 밸런싱 및 폴트 톨러런스 등의 비기능적 기능도 제공합니다.또한 Muskel은 구조화된 프로그래밍과 구조화되지[44] 않은 프로그래밍의 결합에 대한 지원을 제공하고 있으며, 최근 연구는 확장성에 [45]대해 다루고 있습니다.
말바
Mallba는[46] 정확하고 휴리스틱한 하이브리드 검색 [47]전략을 지원하는 조합 최적화를 위한 라이브러리입니다.각 전략은 Mallba에서 필요한 코드를 제공함으로써 사용할 수 있는 일반적인 골격으로 구현됩니다.정확한 검색 알고리즘에서 Mallba는 분기 및 경계 및 동적 최적화 골격을 제공합니다.Mallba가 지원하는 로컬 검색 휴리스틱스: 언덕 오르기, 메트로폴리스, 시뮬레이션 어닐링 및 타부 검색. 또한 유전 알고리즘, 진화 전략 등의 진화 알고리즘에서 파생된 모집단 기반 휴리스틱스(CHC)도 지원합니다.하이브리드 골격은 유전 알고리즘과 시뮬레이션 어닐링의 혼합물인 GASA와 CHC와 ES를 결합한 CHCCES와 같은 전략을 결합합니다.
스켈레톤은 C++ 라이브러리로 제공되며 네스트할 수 없지만 타입 세이프입니다.커스텀 MPI 추상화 레이어 NetStream이 사용되며, 이 레이어는 원시 데이터 타입의 마샬링, 동기화 등을 처리합니다.스켈레톤에는 타깃아키텍처(시퀀셜, LAN 및 WAN)에 따라 여러 하위 레벨의 병렬 구현이 있을 수 있습니다.예를 들어 centralized master-slave, distributed master-slave 등입니다.
Mallba는 검색 스켈레톤 상태를 유지하는 상태 변수도 제공합니다.상태는 검색을 환경과 연결하며, 검색의 진화를 검사하고 향후 작업을 결정하기 위해 액세스할 수 있습니다.예를 들어 지금까지 발견된 최선의 용액 또는 분기 [48]및 결합 가지치기에 대한 α, β 값을 저장하기 위해 이 상태를 사용할 수 있다.
다른 프레임워크와 비교하여 Mallba의 스켈레톤 컨셉 사용법은 독특합니다.스켈레톤은 파라메트릭 병렬화 패턴이 아닌 파라메트릭 검색 전략으로 제공됩니다.
골수
Marrow는 이기종 멀티 GPU 환경에서 OpenCL 계산을 조정하기 위한 C++ 알고리즘 스켈레톤 프레임워크입니다[49][50].복합 계산을 구축하기 위해 중첩을 통해 구성할 수 있는 작업 및 데이터 병렬 골격 세트를 제공합니다.결과 합성 트리의 리프 노드는 GPU 계산 커널을 나타내고 나머지 노드는 중첩된 하위 트리에 적용된 골격을 나타냅니다.이 프레임워크는 데이터 전송 및 실행 요청의 적절한 순서, 트리의 노드 간 통신 등 이기종 멀티 GPU 환경에서 이러한 트리를 올바르게 실행하기 위해 필요한 전체 호스트 측 조정을 처리합니다.
Marrow의 가장 구별하기 쉬운 기능으로는 이전에는 GPU 컨텍스트에서 사용할 수 없었던 일련의 스켈레톤과 스켈레톤 네스트 기능이 있습니다.이것은 이 컨텍스트에서도 새로운 기능입니다.게다가 이 프레임워크는 통신과 계산이 겹치는 최적화를 도입하기 때문에 PCIe 버스에 의해 발생하는 지연을 마스킹합니다.
여러 GPU에 의한 골수 구성 트리의 병렬 실행은 데이터 병렬 분해 전략을 따릅니다. 이 전략은 입력 데이터 세트의 다른 파티션에 전체 계산 트리를 동시에 적용합니다.어떤 커널 파라미터를 분해할 수 있는지, 그리고 필요에 따라 부분적인 결과를 어떻게 병합해야 하는지를 정의하는 것 외에 프로그래머는 기본 다중 GPU 아키텍처에서 완전히 추상화됩니다.
소스 코드뿐만 아니라 자세한 정보는 Marrow 웹 사이트에서 확인할 수 있습니다.
뮤즐리
Muenster Strone Library Muesli는[51][52] Skill에서 소개된 많은 아이디어와 개념을 다시 구현하는 C++ 템플릿 라이브러리입니다. 예를 들어, 고차 함수, 카레링 및 다형 유형 [1].MPI 1.2와 OpenMP 2.5를 기반으로 구축되었으며 다른 많은 스켈레톤 라이브러리와 달리 작업과 데이터 병렬 스켈레톤을 모두 지원합니다.골격 중첩(구성)은 P3L의 2계층 접근법과 유사하다. 즉, 작업 병렬 골격은 임의로 중첩될 수 있지만 데이터 병렬 골격은 그렇지 않지만 작업 병렬 중첩 [53]트리의 잎에서 사용될 수 있다.C++ 템플릿은 스켈레톤 다형 렌더링에 사용되지만 유형 시스템은 적용되지 않습니다.그러나 라이브러리는 표준 MPI 데이터 타입에 더해 임의의 사용자 정의 데이터 타입을 스켈레톤 내에서 사용할 수 있도록 영감을[54] 받은 자동 시리얼라이제이션 메커니즘을 구현한다.지원되는 태스크의 병렬[55] 스켈레톤은 Branch & [56]Bound, Divide [57][58]& Conker,[59][60] Farm 및 Pipe이며 보조 스켈레톤은 Filter, Final 및 Initial입니다.폴드(축소), 맵, 퍼머트, zip 등의 데이터 병렬 골격과 그 바리안트는 분산 데이터 구조의 상위 멤버 함수로 구현된다.현재 Muesli는 배열, 행렬 및 스파스 [61]행렬에 대한 분산 데이터 구조를 지원합니다.
고유한 기능으로서 Muesli의 데이터 병렬 스켈레톤은 싱글코어 및 멀티노드 클러스터 [62][63]아키텍처 모두에서 자동으로 확장됩니다.여기서는 MPI와 OpenMP를 각각 동시에 사용함으로써 노드와 코어에 걸친 scalability가 확보됩니다.단, 이 기능은 Muesli로 작성된 프로그램이 소스 코드를 변경하지 않고 싱글코어 멀티노드 클러스터 컴퓨터에서 컴파일 및 실행된다는 점에서 옵션입니다.즉, 하위 호환성이 보증됩니다.이는 프로그램을 컴파일할 때 OpenMP 컴파일러 플래그를 제공 또는 생략하는 것만으로 멀티코어 아키텍처의 지원을 켜거나 끌 수 있도록 매우 얇은 OpenMP 추상화 레이어를 제공함으로써 보증됩니다.이렇게 하면 런타임에 오버헤드가 거의 발생하지 않습니다.
P3L, SkIE, SKElib
P3L[64](Pisa Parallel Programming Language)은 스켈레톤 기반의 조정 언어입니다.P3L은 C 코드의 병렬 또는 순차 실행을 조정하기 위해 사용되는 스켈레톤 구조를 제공합니다.이 언어에는 아나클토라는[65] 이름의 컴파일러가 제공됩니다.Anacleto는 구현 템플릿을 사용하여 P3 L 코드를 대상 아키텍처로 컴파일합니다.따라서 스켈레톤은 각각 다른 아키텍처에 최적화된 여러 템플릿을 가질 수 있습니다.템플릿은 특정 아키텍처에 스켈레톤을 구현하고 성능 모델을 포함한 파라메트릭 프로세스 그래프를 제공합니다.그런 다음 성능 모델을 사용하여 성능 [66]최적화로 이어질 수 있는 프로그램 변환을 결정할 수 있습니다.
P3L 모듈은 입력 스트림과 출력 스트림 및 기타 서브 모듈 또는 순차 C 코드를 사용하여 적절하게 정의된 스켈레톤 구성에 대응합니다.모듈은 2계층 모델을 사용하여 중첩할 수 있으며, 여기서 외부 수준은 작업 병렬 골격으로 구성되며, 데이터 병렬 골격은 내부 수준에서 사용될 수 있습니다 [64].타입 검증은 프로그래머가 입력 스트림과 출력 스트림의 타입을 명시적으로 지정하고 서브 모듈 간의 데이터 플로우를 지정함으로써 데이터 플로우레벨에서 실행됩니다.
SKIE[67](Skeleton-based Integrated Environment)는 P3L과 유사하지만 디버깅 툴, 성능 분석, 시각화, 그래픽 사용자 인터페이스 등 고급 기능을 제공한다.프로그래머는 코디네이션 언어를 직접 사용하는 대신 그래픽 툴과 상호작용합니다.그래픽 툴에서는 스켈레톤에 기반한 병렬 모듈을 구성할 수 있습니다.
SKLib는[68] P3L과 Sk의 공헌을 바탕으로 구축됩니다.특히 템플릿 시스템을 상속함으로써 IE를 지원합니다.조정 언어는 더 이상 사용되지 않지만, 대신 스켈레톤이 C에서 라이브러리로 제공되며, 성능은 P3L에서 달성된 것과 유사합니다.스켈레톤 프레임워크와 같은 또 다른 C형인 Skill과는 달리, 타입 안전성은 SKLib에서 다루지 않는다.
PAS 및 EPAS
PAS(Parallel Architectural Frametes)는 C++와 [69][70]MPI에서 개발된 스켈레톤 프로그래밍의 프레임워크입니다.프로그래머는 스켈레톤 어플리케이션을 작성하기 위해 C++의 확장을 사용합니다1.그런 다음 Perl 스크립트를 통해 코드가 순수 C++로 확장되고 여기서 스켈레톤은 상속을 통해 특화됩니다.
PAS에서 모든 스켈레톤에는 프로그래머가 제공해야 하는 대표(Rep) 개체가 있으며 스켈레톤 실행을 조정하는 역할을 합니다.스켈레톤은 Rep 객체를 통해 계층적으로 네스트할 수 있습니다.스켈레톤 실행 외에도, Rep은 상위 스켈레톤으로부터의 데이터 수신 및 서브 스켈레톤으로의 데이터 전송도 명시적으로 관리합니다.파라미터화된 통신/동기화 프로토콜은 부모 및 서브스케톤 간에 데이터를 송수신하기 위해 사용됩니다.
SuperPas, 나중에[71] EPAS로 라벨이 붙은 PAS의 확장은[72] 스켈레톤 확장성 문제에 대처합니다.EPAS 도구를 사용하여 새로운 골격을 PAS에 추가할 수 있습니다.스켈레톤 기술 언어(SDL)는 가상 프로세서 그리드에 관한 토폴로지를 지정함으로써 스켈레톤 패턴을 기술하기 위해 사용됩니다.다음으로 SDL을 다른 스켈레톤으로 사용할 수 있는 네이티브 C++ 코드로 컴파일할 수 있습니다.
스바스코
SBASCO(Skeleton-BASED Scientific Co Components)는 병렬 및 분산된 [73]수치 애플리케이션의 효율적인 개발을 지향하는 프로그래밍 환경입니다.SBASCO는 스켈레톤과 컴포넌트, 커스텀 컴포넌트의 2가지 프로그래밍 모델을 통합하는 것을 목표로 하고 있습니다.컴포넌트의 어플리케이션뷰는 인터페이스(입출력 타입)에 대한 설명을 제공하며, 컨피규레이션뷰는 컴포넌트의 내부 구조 및 프로세서 레이아웃에 대한 설명을 제공합니다.컴포넌트의 내부 구조는 팜, 파이프 및 멀티 블록의 세 가지 골격을 사용하여 정의할 수 있습니다.
SBASCO는 멀티 블록 골격을 통해 도메인 분해 가능 애플리케이션에 대처합니다.도메인은 배열(주로 2차원)을 통해 지정되며, 이러한 배열은 겹치는 경계가 있을 수 있는 하위 배열로 분해됩니다.그런 다음 계산은 반복적인 BSP와 같은 방식으로 수행됩니다.첫 번째 단계는 로컬 계산으로 구성되며, 두 번째 단계는 경계 교환을 수행합니다.에서는 반응 확산 문제에 대한 사용 사례가 제시되어 있습니다.[74]
에는 2종류의 컴포넌트가 있습니다.[75]기능 코드를 제공하는 Scientific Components(SC; 과학 컴포넌트) 및 통신, 디스트리뷰션 프로세서의 레이아웃, 레플리케이션 등의 비기능 동작을 캡슐화하는 Communication Aspect Components(CAC; 통신 애스펙트 컴포넌트)입니다.예를 들어 SC 컴포넌트는 SC에 할당된 프로세서를 동적으로 재매핑함으로써 런타임에 매니저로서 기능할 수 있는 CAC 컴포넌트에 접속됩니다.에 CAC 컴포넌트 사용 시 퍼포먼스가 향상되었음을 나타내는 사용 예를 나타냅니다.[76]
SCL
SCL([77]Structured Coordination Language)은 최초의 스켈레톤 프로그래밍 언어 중 하나입니다.소프트웨어 컴포넌트에 대한 스켈레톤 프로그래밍을 위한 조정 언어 접근 방식을 제공합니다.SCL은 기본 언어로 간주되며 순차 소프트웨어 컴포넌트 개발에 사용되는 Fortran이나 C 등의 호스트 언어와 통합되도록 설계되었습니다.SCL에서 골격은 구성, 기본 및 계산의 3가지 유형으로 분류됩니다.구성 골격은 분산 어레이(ParArray)와 같이 일반적으로 사용되는 데이터 구조의 패턴을 추상화합니다.기본 골격은 지도, 스캔 및 접기와 같은 데이터 병렬 골격에 해당합니다.제어 흐름을 추상화하고 주로 팜, SPMD 및 반복 기간과 같은 태스크 병렬 골격에 대응하는 계산 골격입니다.조정 언어 접근방식은 기존의 병렬 머신 프로그래밍을 위한 성능 모델 및 각 프로세싱 [78]노드에 여러 개의 코어가 있는 병렬 이기종 머신과 함께 사용되었습니다.
스큐PU
SkePU[79] SkePU는 멀티코어 CPU 및 멀티 GPU 시스템을 위한 스켈레톤 프로그래밍 프레임워크입니다.6개의 데이터 패럴렐과1개의 태스크 패럴렐 골격, 2개의 컨테이너 타입을 가진 C++ 템플릿라이브러리이며 CUDA와 OpenCL을 모두 사용하는 멀티 GPU 시스템에서의 실행을 지원합니다.최근에는 StarPU 런타임 시스템의 백엔드를 구현하여 하이브리드 실행, 성능 인식 동적 스케줄링 및 로드 밸런싱을 SkePU에서 지원하고 있습니다.GPU 클러스터에 대해 SkePU가 확장되고 있습니다.
SKiPER & QuAFF
SKiPPER는 CAML에서 스켈레톤을 제공하는 비전 어플리케이션용[80] 도메인 고유의 스켈레톤 라이브러리이므로 CAML에 의존하여 타입의 안전을 확보합니다.스켈레톤은 선언적 방식과 조작적 방식의 두 가지 방식으로 표시됩니다.선언적 골격은 프로그래머가 직접 사용하는 반면 운영 버전은 아키텍처별 대상 구현을 제공합니다.런타임 환경, CAML 스켈레톤 사양 및 애플리케이션 고유의 함수(프로그래머에 의해 C에 제공됨)에서 새로운 C 코드가 생성되어 타깃아키텍처 상에서 애플리케이션을 실행하기 위해 컴파일 됩니다.SKiPPER의 흥미로운 점 중 하나는 스켈레톤 프로그램을 순차적으로 실행하여 디버깅할 수 있다는 것입니다.
SKiPPER에서는 동작 스켈레톤을 기술하기 위해 정적 데이터 흐름 그래프, 파라메트릭프로세스 네트워크, 계층형 태스크 그래프 및 태그 부착 토큰 데이터 흐름 [81]그래프 등 다양한 접근법이 검토되고 있습니다.
QUAFF는[82] C++ 및 MPI로 작성된 최신 스켈레톤 라이브러리입니다.QUAFF는 템플릿 기반 메타 프로그래밍 기술을 사용하여 런타임 오버헤드를 줄이고 컴파일 시 스켈레톤 확장 및 최적화를 수행합니다.골격은 중첩될 수 있으며 순차 함수는 상태 저장입니다.타입 체크 외에 QUAFF는 C++ 템플릿을 사용하여 컴파일 시에 새로운 C/MPI 코드를 생성합니다.QUAFF는 CSP 모델을 기반으로 합니다.여기서 스켈레톤 프로그램은 프로세스 네트워크 및 생산 규칙(싱글, 시리얼, 파, 조인)[83]으로 기술됩니다.
스키토
SkeTo[84] 프로젝트는 MPI를 사용하여 병렬화를 실현하는 C++ 라이브러리입니다.SkeTo는 네스트 가능한 병렬화 패턴을 제공하는 대신 다음과 같은 [85][86][87]병렬 데이터 구조를 위한 병렬 골격을 제공하기 때문에 다른 스켈레톤 라이브러리와 다릅니다.데이터 구조는 템플릿을 사용하여 입력되며 여러 병렬 연산을 호출할 수 있습니다.예를 들어 목록 구조는 맵, 축소, 스캔, zip, shift 등의 병렬 작업을 제공합니다.
SkeTo에 대한 추가 연구에서도 변환별 최적화 전략, 최근에는 도메인별 [88]최적화에 초점을 맞추고 있습니다.예를 들어, SkeTo는 두 개의 연속된 함수 호출을 하나의 호출로 병합하는 퓨전 변환을[89] 제공하여 함수 호출 오버헤드를 줄이고 함수 간에 전달되는 중간 데이터 구조가 생성되지 않도록 합니다.
스킬
Skill은[90] 스켈레톤 프로그래밍에 필수적인 언어입니다.스켈레톤은 언어의 직접적인 일부가 아니라 스켈레톤과 함께 구현됩니다.Skill은 C 언어의 서브셋을 사용하여 고차 함수, 커링, 다형성 유형 등의 기능적 언어를 제공합니다.Skill을 컴파일하면 이러한 기능이 제거되고 일반 C 코드가 생성됩니다.따라서 Skill은 다형성 고차 함수를 단형성 1차 C 함수로 변환합니다.Skill은 골격의 둥지 구성을 지원하지 않습니다.데이터 병렬화는 사용 가능한 프로세서 간에 어레이를 분산하는 등 특정 데이터 병렬 구조를 사용하여 이루어집니다.필터 스켈레톤을 사용할 수 있습니다.
STAPL 스켈레톤 프레임워크
STAPL Strone Framework에서는 스켈레톤을 파라미터 데이터 흐름 그래프로 정의하여 100,000 코어 이상으로 확장할 수 있습니다.또한 이 프레임워크는 포트 개념을 통해 대응하는 데이터 흐름 그래프의 포인트 투 포인트 구성으로서 골격 구성을 다루므로 새로운 골격을 프레임워크에 쉽게 추가할 수 있습니다.그 결과, 이 프레임워크는 구성된 골격에서 재실행 및 글로벌 동기화의 필요성을 배제합니다.STAPL 스켈레톤 프레임워크는 중첩된 구성을 지원하며 각 중첩 수준에서 병렬 실행과 순차 실행 간에 전환할 수 있습니다.이 프레임워크는 STAPL 병렬[93] 컨테이너의 확장 가능한 구현의 이점을 제공하며 벡터, 다차원 어레이, 목록 등 다양한 컨테이너에서 스켈레톤을 실행할 수 있습니다.
T4P
T4P는 스켈레톤 [94]프로그래밍에 최초로 도입된 시스템 중 하나입니다.이 시스템은 함수 프로그래밍 속성에 크게 의존했으며, 5개의 스켈레톤을 고차 함수로 정의했습니다.Divide-and-Conquer, Farm, Map, Pipe 및 RaMP. 프로그램은 각각 다른 골격의 조합을 사용하여 여러 구현을 가질 수 있습니다.또한 각 골격은 다른 병렬 구현을 가질 수 있습니다.스켈레톤의 성능 모델에 의해 유도되는 기능적 프로그램 변환에 기초한 방법론은 [95]스켈레톤의 가장 적절한 구현뿐만 아니라 프로그램에 사용되는 가장 적절한 스켈레톤을 선택하기 위해 사용되었다.
프레임워크 비교
- 액티비티 연도는 알려진 액티비티 연도의 범위입니다.이 칼럼에 기재된 날짜는 관련 기사가 과학저널 또는 학술회의에 처음 게재된 날과 마지막 날입니다.프로젝트가 액티비티 범위를 넘어도 아직 활성화되어 있을 수 있으며, 지정된 날짜 이후에도 게시물을 찾지 못했습니다.
- 프로그래밍 언어는 프로그래머가 스켈레톤 어플리케이션을 코드화하기 위해 상호작용하는 인터페이스입니다.이러한 언어는 기능 언어, 조정 언어, 마크업 언어, 명령 언어, 객체 지향 언어, 그래픽 사용자 인터페이스 등 다양한 패러다임을 포함합니다.프로그래밍 언어 내에서 스켈레톤은 언어 구성체 또는 라이브러리로 제공되어 왔습니다.언어 구성으로서 골격을 제공하는 것은 커스텀 도메인 고유의 언어와 그 컴파일러의 개발을 의미합니다.이것은 골격 연구 초기에 분명히 더 강한 추세였다.최근의 경향은 골격을 라이브러리로 제공하는 것이며, 특히 C++나 Java와 같은 객체 지향 언어에서 그렇습니다.
- 실행 언어는 스켈레톤 응용 프로그램이 실행 또는 컴파일되는 언어입니다.프로그래밍 언어(특히 기능적인 경우)가 스켈레톤 프로그램을 실행하기에 충분히 효율적이지 않다는 것은 매우 일찍부터 인지되었다.따라서 스켈레톤 프로그래밍 언어는 다른 언어에서 스켈레톤 애플리케이션을 실행함으로써 단순화되었습니다.변환 프로세스가 도입되어 스켈레톤 어플리케이션(프로그래밍 언어로 정의)을 타겟 실행 언어 상에서 동등한 어플리케이션으로 변환했습니다.실행 언어로 라이브러리와 상호작용할 수 있는 하위 수준의 골격(일명 운영 골격)의 코드 생성 또는 인스턴스화와 같은 다양한 변환 프로세스가 도입되었습니다.또한 변환된 애플리케이션은 성능에 맞게 맞춤형 타깃 아키텍처 코드를 변환된 애플리케이션에 도입할 수 있는 기회를 제공했습니다.표 1은 실행 언어에서 가장 선호하는 언어가 C 언어임을 보여줍니다.
- 분산 라이브러리는 병렬/분산 계산을 수행하는 기능을 제공합니다.그런 의미에서 가장 선호되는 것은 MPI입니다.MPI는 C언어와 잘 통합되어 있으며 클러스터 컴퓨팅에서 병렬 처리에 가장 많이 사용되는 도구입니다.물론 배포 라이브러리를 사용하여 직접 프로그래밍하는 것의 위험은 배포 라이브러리와 상호 작용하지 않는 프로그래머로부터 안전하게 숨겨집니다.최근에는 여러 배포 라이브러리와 상호 작용할 수 있는 골격 프레임워크를 개발하는 경향이 있습니다.예를 들어, CO2 P3 S는 스레드, RMI 또는 소켓을 사용할 수 있습니다.Mallba는 Netstream 또는 MPI를 사용할 수 있습니다.또한 다른 스켈레톤 프레임워크에서 스켈레톤 애플리케이션을 실행하기 위해 AspectJ를 사용할 수 있습니다.
- 타입 세이프티란 스켈레톤 프로그램에서 타입 비호환성 오류를 검출하는 기능을 말합니다.최초의 스켈레톤 프레임워크는 해스켈과 같은 기능적 언어를 기반으로 구축되었기 때문에, 형식 안전성은 단순히 호스트 언어로부터 계승되었다.그럼에도 불구하고, 스켈레톤 프로그래밍을 위해 커스텀 언어가 개발되었기 때문에, 컴파일러는 타입 체크를 고려하기 위해 작성되어야 했습니다.스켈레톤 네스팅이 완전히 지원되지 않았기 때문에 그렇게 어렵지 않았습니다.그러나 최근 개체 지향 언어에 대한 스켈레톤 프레임워크를 풀네스팅으로 호스팅하기 시작하면서 유형 안전성 문제가 다시 대두되고 있다.유감스럽게도 타입 체크는 (QUAFF를 제외하고) 대부분 간과되어 왔습니다.특히 Java 기반의 스켈레톤 프레임워크에서는요.
- 스켈레톤 네스팅은 스켈레톤 패턴의 계층적 구성 능력입니다.스켈레톤 네스팅은 처음부터 스켈레톤 프로그래밍의 중요한 기능으로 확인되었습니다. 왜냐하면 스켈레톤 네스팅은 단순한 패턴의 기본 집합에서 시작하는 보다 복잡한 패턴을 구성할 수 있기 때문입니다.그럼에도 불구하고 스케줄링과 유형 검증의 어려움 때문에 커뮤니티가 스켈레톤의 임의 네스트를 완전히 지원하는 데 오랜 시간이 걸렸습니다.최근의 스켈레톤 프레임워크가 스켈레톤을 완전히 내포하는 것을 지원하는 경향은 분명하다.
- 파일 액세스는 응용 프로그램에서 파일에 액세스하고 조작하는 기능입니다.과거 스켈레톤 프로그래밍은 적은 양의 데이터를 처리하는 데 많은 시간이 소요되는 계산 부하가 높은 애플리케이션에 주로 유용한 것으로 입증되었습니다.그럼에도 불구하고 많은 분산 애플리케이션은 계산 중에 대량의 데이터를 요구하거나 생성합니다.천체물리학, 입자물리학, 생물정보학 등이 이에 해당된다.따라서 스켈레톤 프로그래밍과 통합된 파일 전송 지원을 제공하는 것은 가장 간과되어 온 주요 관심사입니다.
- 스켈레톤 세트는 지원되는 스켈레톤 패턴 목록입니다.스켈레톤 세트는 프레임워크마다 크게 다르며, 더 충격적인 것은 같은 이름의 스켈레톤이 다른 프레임워크에서 다른 의미를 가지고 있다는 것입니다.문헌에서 가장 일반적인 스켈레톤 패턴은 아마도 농장, 파이프, 지도일 것이다.
액티비티 연도 | 프로그래밍 언어 | 실행 언어 | 배포 라이브러리 | 타입 세이프 | 스켈레톤 네스트 | 파일 액세스 | 스켈레톤 세트 | |
---|---|---|---|---|---|---|---|---|
돕다 | 2004–2007 | 커스텀 제어 언어 | C++ | TCP/IP + ssh/scp | 네. | 아니요. | 명시적 | seq, parmod |
SBSACO | 2004–2006 | 커스텀 컴포지션 언어 | C++ | MPI | 네. | 네. | 아니요. | 팜, 파이프, 멀티 블록 |
e스켈 | 2004–2005 | C | C | MPI | 아니요. | ? | 아니요. | 파이프라인, 농장, 딜, 버터플라이, hallowSwap |
HDC | 2004–2005 | 해스켈 부분집합 | C | MPI | 네. | ? | 아니요. | dcA, dcB, dcD, dcE, dcF, 맵, 빨간색, 스캔, 필터 |
스켈리브 | 2000-2000 | C | C | MPI | 아니요. | 아니요. | 아니요. | 팜, 파이프 |
SkiPER | 1999–2002 | 캠 | C | SynDex | 네. | 한정된 | 아니요. | scm, df, tf, intermem |
SKIE | 1999-1999 | GUI/커스텀 제어 언어 | C++ | MPI | 네. | 한정된 | 아니요. | 파이프, 팜, 맵, 축소, 루프 |
에덴 | 1997–2011 | 해스켈 확장 | 하스켈 | PVM/MPI | 네. | 네. | 아니요. | 맵, 팜, 워크풀, nr, dc, 파이프, iterEntil, torus, 링 |
P3L | 1995–1998 | 커스텀 제어 언어 | C | MPI | 네. | 한정된 | 아니요. | 지도, 축소, 스캔, 컴프, 파이프, 팜, seq, 루프 |
스킬 | 1995–1998 | C 서브셋 | C | ? | 네. | 아니요. | 아니요. | pardata, 지도, 접기 |
SCL | 1994–1999 | 커스텀 제어 언어 | 포트란/C | MPI | 네. | 한정된 | 아니요. | 지도, 검색, 접기, 팜, SPMD, 반복할 때까지 |
T4P | 1990–1994 | 희망+ | 희망+ | CSTools | 네. | 한정된 | 아니요. | D&C(Divide-and-Conquer), 맵, 파이프, RaMP |
액티비티 연도 | 프로그래밍 언어 | 실행 언어 | 배포 라이브러리 | 타입 세이프 | 스켈레톤 네스트 | 파일 액세스 | 스켈레톤 세트 | |
---|---|---|---|---|---|---|---|---|
스칸듐 | 2009–2012 | 자바 | 자바 | 스레드 | 네. | 네. | 아니요. | seq, 파이프, 팜, for, while, map, d&c, fork |
패스트플로우 | 2009– | C++ | C++11 / CUDA / OpenCL | C++11 스레드 / Posix 스레드 / TCP-IP / OFED-IB / CUDA / OpenCL | 네. | 네. | 네. | 파이프라인, Farm, ParallelFor, ParallelForReduce, MapReduce, StencilReduce, PoolEvolution, MacroDataFlow |
칼슘 | 2006–2008 | 자바 | 자바 | 프로 액티브 | 네. | 네. | 네. | seq, 파이프, 팜, for, while, map, d&c, fork |
쿼프 | 2006–2007 | C++ | C | MPI | 네. | 네. | 아니요. | seq, 파이프, 팜, scm, pardo |
자스켈 | 2006–2007 | 자바 | Java/AspectJ | MPP/RMI | 아니요. | 네. | 아니요. | 팜, 파이프라인, 하트비트 |
무슈켈 | 2005–2008 | 자바 | 자바 | RMI | 아니요. | 네. | 아니요. | 팜, 파이프, seq, + 커스텀 MDF 그래프 |
HOC-SA | 2004–2008 | 자바 | 자바 | 글로버스, 코알라 | 아니요. | 아니요. | 아니요. | 팜, 파이프라인, Wavefront |
스키토 | 2003–2013 | C++ | C++ | MPI | 네. | 아니요. | 아니요. | 목록, 매트릭스, 트리 |
말바 | 2002–2007 | C++ | C++ | NetStream/MPI | 네. | 아니요. | 아니요. | 정확, 휴리스틱, 하이브리드 |
골수 | 2013– | C++ | C++++OpenCL | (없음) | 아니요. | 네. | 아니요. | 데이터 병렬: 맵, 맵-패럴렐.태스크 병렬: 파이프라인, 루프, 용 |
뮤즐리 | 2002–2013 | C++ | C++ | MPI/OpenMP | 네. | 네. | 아니요. | data parallel: 폴드, 맵, 퍼머트, 스캔, zip 및 바리안트.태스크 병행: 브랜치&바운드, 분할&정복, 팜, 파이프.보조: 필터, 최종, 초기 |
알트 | 2002–2003 | Java/GworkflowDL | 자바 | 자바 RMI | 네. | 아니요. | 아니요. | 지도, zip, 축소, 스캔, dh, 복제, 적용, 정렬 |
(E) PAS | 1999–2005 | C++ 확장 | C++ | MPI | 아니요. | 네. | 아니요. | 싱글톤, 레플리케이션, 컴포지션, 파이프라인, divideconer, dataparallele |
리튬 | 1999–2004 | 자바 | 자바 | RMI | 아니요. | 네. | 아니요. | 파이프, 지도, 팜, 축소 |
CO2P3S | 1999–2003 | GUI/자바 | Java(생성) | 스레드 / RMI / 소켓 | 부분적 | 아니요. | 아니요. | 메서드 시퀀스, 디스트리뷰터, 메시, 웨이브프런트 |
스테이플 | 2010– | C++ | C++11 | STAPL 런타임 라이브러리(MPI, OpenMP, PThreads) | 네. | 네. | 네. | 지도, zip<, arity>, 줄이고 스캔, 농장,(reverse-)butterfly,(reverse-)tree<, k-ary>, 연쇄, 치환, recursive-doubling stencil<, n-dim>, wavefront<, n-dim>, allreduce, allgather, 모여, 산란, 방송. 연산자: compose, repeat, do-while, do-all, do-across |
「 」를 참조해 주세요.
레퍼런스
- ^ K. Hammond와 G. 마이클슨, 편집자들."병렬 기능 프로그래밍에서 방향 검색"Springer-Verlag, 영국 런던, 1999년
- ^ Vanneschi, M. (2002). "The programming model of ASSIST, an environment for parallel and distributed portable applications". Parallel Computing. 28 (12): 1709–1732. CiteSeerX 10.1.1.59.5543. doi:10.1016/S0167-8191(02)00188-6.
- ^ M. Aldinucci, M. Coppola, M. Danelutto, N. Tonellotto, M. Vanneschi, C. 조콜로"ASS에 의한 고급 그리드 프로그래밍." Computational Methods in Science and Technology, 12 (1):21–32, 2006.
- ^ 알디누치와 M.토르카티.확장 가능한 애드혹 분산 개체 저장소를 통해 Apache 팜 가속화제10국립대검사에서요Euro-Par 2004 Parallel Processing, LNCS 제3149권, 596~605쪽.Springer, 2004.
- ^ Aldinucci, M.; Danelutto, M.; Antoniu, G.; Jan, M. (2008). "Fault-Tolerant Data Sharing for High-level Grid: A Hierarchical Storage Architecture". Achievements in European Research on Grid Systems. p. 67. doi:10.1007/978-0-387-72812-4_6. ISBN 978-0-387-72811-7.
- ^ S. 맥도날드, J. 안빅, S. 브롬링, J. 섀퍼, D. 사프론, K.탄.' '패턴에서 프레임워크, 병렬 프로그램까지.Parallel Comput., 28(12): 1663~1683, 2002.
- ^ K. Tan, D. Szafron, J. Shaeffer, J. Anvik, S. 맥도날드."생성적인 설계 패턴을 사용하여 분산 메모리 환경을 위한 병렬 코드를 생성합니다."PPoPP '03: 병렬 프로그래밍의 원칙과 실천에 관한 제9회 ACM SIGPLAN 심포지엄 진행, 페이지 203-215, 뉴욕, 뉴욕, 미국, 2003.ACM.
- ^ D. Caromel과 M. 레이튼."알고리즘 골격 미세 조정"제13회 국제 유로파 회의: 병렬 처리, 컴퓨터 과학 강의 노트 제4641권, 72-81쪽.Springer-Verlag, 2007년
- ^ D. Caromel, L. Henrio, M. 레이튼."유형 안전 알고리즘 골격"병렬, 분산 및 네트워크 기반 프로세싱에 관한 제16회 유로미크로 회의의 진행(Presidings on Parallel, Distributed and Network-based Processing), 프랑스 툴루즈, 2008년 2월.IEEE CS 프레스
- ^ D. Caromel과 M. 레이튼."알고리즘 골격에 대한 투명한 비침습 파일 데이터 모델입니다."제22회 International Parallel and Distributed Processing Symposium (IPDPS) (미국 마이애미, 2008년 3월)1 ~ 8페이지).IEEE 컴퓨터 협회
- ^ 마리오 레이튼, 호세 M. 피커"스칸듐:알고리즘 스켈레톤을 사용한 멀티코어 프로그래밍", IEEE Euro-micro PDP 2010.
- ^ Rita Loogen, Yolanda Ortega-Mallen 및 Ricardo Pena-Marie. "에덴에서의 병렬 함수 프로그래밍", 함수 프로그래밍 저널 15(2005), 3, 431-475페이지
- ^ 머레이 콜."비공개: 골격 병렬 프로그래밍을 위한 실용적인 선언"병행 컴퓨팅, 30(3): 389~406, 2004.
- ^ A. Benoit, M. Cole, S. Gilmore 및 J. Hillston."eskel로 유연한 골격 프로그래밍"J.C.에서Cunha와 P. D. Medeiros, 편집자, Euro-Par, 컴퓨터 과학 강의 노트 3648권, 761-770쪽.Springer, 2005.
- ^ A. Benoit와 M. 콜 "골격 병렬 프로그래밍의 두 가지 기본 개념"V. 선덜람, D. van Albada, P. Sloot 및 J. Dongara 편집자, The International Concence on Computational Science (ICCS 2005), Part II, LNCS 3515, 764~771페이지.Springer Verlag, 2005.
- ^ A. Benoit, M. Cole, S. Gilmore 및 J. Hillston.스켈레톤 기반의 고급 병렬 프로그램의 성능 평가.M. Bubak, D. van Albada, P. Sloot 및 J. Dongara 편집자, The International Conference on Computational Science (ICCS 2004), Part III, LNCS 3038, 289-296 페이지.Springer Verlag, 2004.
- ^ A. Benoit, M. Cole, S. Gilmore 및 J. Hillston."스켈레톤과 프로세스 대수로 파이프라인 구조화된 병렬 프로그램의 성능을 평가한다."스케일러블 컴퓨팅: 연습과 경험, 6(4):1~16, 2005년 12월
- ^ A. Benoit, M. Cole, S. Gilmore 및 J. Hillston."페파 및 nws를 사용하여 스켈레톤 기반 그리드 애플리케이션 스케줄링"컴퓨터 저널, 그리드 성능 모델링 및 측정에 관한 특별호, 48(3):369–378, 2005.
- ^ A. Benoit와 Y. 로버트."파이프라인의 골격을 이종 플랫폼에 매핑합니다."ICCS 2007, 제7회 컴퓨터 과학 국제 회의, LNCS 4487, 591-598페이지.Springer Verlag, 2007년
- ^ G. Yaikhom, M. Cole, S. Gilmore, J. Hillston."골격을 이용한 시스템의 성능을 모델링하기 위한 구조적 접근법"전기.노트 이론컴퓨터Sci., 190(3):167~183,2007.
- ^ H. 곤잘레스 벨레즈와 M. Cole. "이질적인 분산 환경에서 완전히 적응 가능한 파이프라인 병렬화를 지향합니다."병렬 및 분산 처리 및 응용 프로그램, 제4회 국제 심포지엄(ISPA), 컴퓨터 과학 강의 노트(916~926페이지)Springer-Verlag, 2006.
- ^ H. 곤잘레스 벨레즈와 M. 콜, "계산 그리드에 대한 적응적 구조 병렬화"PPoPP '07: 병렬 프로그래밍의 원칙과 실천에 관한 제12회 ACM SIGPLAN 심포지엄의 진행, 140-141, 뉴욕, 뉴욕, 미국, 2007.ACM.
- ^ Aldinucci, M.; Campa, S.; Danelutto, M.; Kilpatrick, P.; Torquati, M. (2013). "Targeting Distributed Systems in FastFlow" (PDF). Euro-Par 2012: Parallel Processing Workshops. Euro-Par 2012: Parallel Processing Workshops. Lecture Notes in Computer Science. Vol. 7640. pp. 47–56. doi:10.1007/978-3-642-36949-0_7. ISBN 978-3-642-36948-3.
- ^ Aldinucci, M.; Spampinato, C.; Drocco, M.; Torquati, M.; Palazzo, S. (2012). "A parallel edge preserving algorithm for salt and pepper image denoising". 2012 3rd International Conference on Image Processing Theory, Tools and Applications (IPTA). 3rd International Conference on Image Processing Theory, Tools and Applications (IPTA). pp. 97–104. doi:10.1109/IPTA.2012.6469567. hdl:2318/154520.
- ^ Aldinucci, M.; Danelutto, M.; Kilpatrick, P.; Meneghin, M.; Torquati, M. (2012). "An Efficient Unbounded Lock-Free Queue for Multi-core Systems". Euro-Par 2012 Parallel Processing. Euro-Par 2012 Parallel Processing. Lecture Notes in Computer Science. Vol. 7484. pp. 662–673. doi:10.1007/978-3-642-32820-6_65. ISBN 978-3-642-32819-0.
- ^ Aldinucci, M.; Meneghin, M.; Torquati, M. (2010). "Efficient Smith-Waterman on Multi-core with Fast Flow". 2010 18th Euromicro Conference on Parallel, Distributed and Network-based Processing. IEEE. p. 195. CiteSeerX 10.1.1.163.9092. doi:10.1109/PDP.2010.93. ISBN 978-1-4244-5672-7. S2CID 1925361.
- ^ C. A. Herrmann과 C. 렝가워"HDC: 분할 및 정복을 위한 고차 언어." Parallel Processing Letters, 10(2-3): 239~250, 2000.
- ^ C. A. 허먼분할 및 정복 재귀의 스켈레톤 기반 병렬화.박사 논문, 2000년ISBN 3-89722-556-5.
- ^ J. Dunnweber, S. Gorlatch"그리드 프로그래밍을 위한 고차 컴포넌트.그리드의 가용성 향상.". Springer-Verlag, 2009.ISBN 978-3-642-00840-5
- ^ J. F. 페레이라, J. L. 소브랄, A. J. 프로엔카.재스켈:구조화된 클러스터 및 그리드 컴퓨팅을 위한 Java 스켈레톤 기반 프레임워크입니다."CCGRID '06: 클러스터 컴퓨팅과 그리드에 관한 제6회 IEEE 국제 심포지엄의 계속(P.31-304페이지), 워싱턴 DC, 미국, 2006.IEEE 컴퓨터 협회
- ^ J. 소브랄과 A. 프로엔카"클러스터 및 계산 그리드에 대한 재스켈 골격 활성화"IEEE 클러스터 내IEEE Press, 9 2007.
- ^ 알디누치와 M. 다넬루토."스트림 병렬 스켈레톤 최적화"PDCS의 Proc. 내: 국제.병렬 및 분산 컴퓨팅 및 시스템에 관한 컨퍼런스(955 ~962페이지), 미국 매사추세츠주 케임브리지, 1999년 11월IASTED, ACTA 프레스
- ^ Aldinucci, M.; Danelutto, M.; Teti, P. (2003). "An advanced environment supporting structured parallel programming in Java". Future Generation Computer Systems. 19 (5): 611. CiteSeerX 10.1.1.59.3748. doi:10.1016/S0167-739X(02)00172-3.
- ^ M. Danelutto. 테티. "리튬:Java의 구조화된 병렬 프로그래밍 환경입니다."ICCS의 Proc.: 국제 컴퓨터 과학 회의, LNCS 제2330권, 844-853쪽.Springer Verlag, 2002년 4월
- ^ 알디누치와 M. 다넬루토."스켈레톤에 대한 운영 의미론"병렬 컴퓨팅 편집자인 G. R. Joubert, W. E. Nagel, F. J. Peters 및 W. V. Walter:Software Technology, Algorithms, Architecture and Applications, PARCO 2003, Parallel Computing의 어드밴스 13권, 63~70쪽, 독일 드레스덴, 2004.엘세비어
- ^ Aldinucci, M.; Danelutto, M. (2007). "Skeleton-based parallel programming: Functional and parallel semantics in a single shot☆". Computer Languages, Systems & Structures. 33 (3–4): 179. CiteSeerX 10.1.1.164.368. doi:10.1016/j.cl.2006.07.004.
- ^ M. 알디누치, M. 다넬루토, J. 던웨버."그리드 환경에서 병렬 골격을 구현하기 위한 최적화 기술"S. Gorlatch, CMPP의 편집자: 국제.병렬 프로그래밍의 건설적 방법에 관한 워크숍(영국 스코틀랜드 스털링, 35~47페이지), 2004년 7월.먼스터 대학교, 독일
- ^ 다넬루토 씨워크스테이션 클러스터의 스켈레톤을 효율적으로 지원합니다.병렬 처리 서신, 11 (1):41 ~ 56, 2001.
- ^ 다넬루토 씨"스켈레톤에 대한 동적 런타임 지원"기술 보고서, 1999.
- ^ 다넬루토 씨"어플리케이션 매니저를 통해 병렬 프로그래밍을 할 수 있습니다.PDP '05: 병렬, 분산 및 네트워크 기반 프로세싱에 관한 제13회 유로미크로 회의(PDP'05), 282~289쪽, 워싱턴 DC, 미국, 2005.IEEE 컴퓨터 협회
- ^ 알디누치와 M. 다넬루토."골격 시스템의 보안 비용"P. D'Ambra와 M. R. Guaracino의 편집자, 국제 대리.Euromicro PDP 2007: 병렬 분산 및 네트워크 기반 처리, 213 ~ 220페이지, 이탈리아 나폴리, 2007년 2월IEEE.
- ^ 알디누치와 M. 다넬루토."제한적인 성능 저하로 골격 시스템 확보: 머스켈 경험"시스템 아키텍처 저널, 2008.
- ^ M. Danelutto와 P. Dazzi."스트림 병렬 계산을 지원하는 Java/Jini 프레임워크입니다."국제법 대리인.PARCO 2005: Parallel Computing, 2005년 9월
- ^ M. Danelutto와 P. Dazzi."데이터 흐름을 통한 구조화/비구조화 병렬화 공동 이용"ICCS의 편집자인 V. Alexandrov, D. van Albada, P. Sloot 및 J. Dongara 편집자: 국제 컴퓨터 과학 회의, 고급 병렬 프로그래밍의 실제 측면에 관한 워크숍, LNCS, Reading, UK, 2006년 5월.스프링거 벨락.
- ^ M. Aldinucci, M. Danelutto, P. Dazzi."머스켈: 확장 가능한 골격 환경입니다."스케일러블 컴퓨팅: 연습과 경험, 8(4): 325–341, 2007년 12월
- ^ E. 알바, F. 알메이다, M. J. Blesa, J. Cabeza, C. 코타, M. 디아즈, I. 도르타, J. 가바로, C. 레온, J. 루나, L. M. 모레노, C. 파블로스, J. 쁘띠, A. 로하스와 에프 자파"말바: 조합 최적화를 위한 스켈레톤 라이브러리 (연구 노트)Euro-Par '02: 제8회 병렬처리에 관한 국제 Euro-Par 회의의 진행(927–932페이지), 영국 런던, 2002.스프링거-벨라그.
- ^ E. 알바, F.알메이다, M. Blesa, C.코타, M. 디아즈, I. 도르타, J. 가바로, C.레온, G. 루크, J. 쁘띠, C. 로드리게스, A. 로하스, F. 자파.최적화를 위한 효율적인 병렬 lan/wan 알고리즘: mallba 프로젝트.패럴렐 컴퓨팅, 32(5): 415~440, 2006.
- ^ E. 알바, G. 루크, J. 가르시아-니토, G. 오르도네즈, G. 레기자몬."Malba는 효율적인 최적화 알고리즘을 설계하기 위한 소프트웨어 라이브러리입니다."International Journal of Innovative Computing and Applications, 1 (1) : 74 ~85, 2007.
- ^ "리카르도 마르케스, 에르베 파울리노, 페르난도 알렉산드르, 페드로 D.Medeiros. "GPU 연산 조정을 위한 알고리즘 스켈레톤 프레임워크"Euro-Par 2013: 874-885
- ^ "Fernando Alexandre, Ricardo Marques, Hervé Paulino." "멀티 GPU 컴퓨팅을 위한 태스크 병렬 알고리즘 골격 지원에 대하여"ACM SAC 2014: 880 – 885
- ^ H. 쿠첸과 J. 스트리그니츠"C++ 스켈레톤 라이브러리를 위한 기능 프로그래밍의 특징"동시성 – Practice and Experience, 17(7-8): 739–756, 2005.
- ^ 필립 시차노비치, 마이클 폴드너, 허버트 쿠첸."Muenster 스켈레톤 라이브러리 Muesli – 포괄적인 개요" ERCIS 작업 문서 제7호, 2009년
- ^ H. 쿠첸과 M. Cole. "태스크와 데이터 병렬 골격의 통합." Parallel Processing Letters, 12(2): 141~155, 2002.
- ^ A. 알렉산드레스쿠"현대 C++ 디자인:범용 프로그래밍 및 설계 패턴 적용"애디슨 웨슬리, 2001년
- ^ 마이클 폴드너."태스크 병렬 알고리즘 골격"2008년 뮌헨 대학교 박사학위 논문.
- ^ 마이클 폴드너와 허버트 쿠첸."가지와 경계를 위한 알고리즘 골격"제1회 소프트웨어 및 데이터 테크놀로지 국제회의(ICSOFT), 2006년 1:291~300회의의 속행.
- ^ 마이클 폴드너와 허버트 쿠첸.「분할과 정복에 있어서의 골격 스트림 처리의 최적화」제3회 소프트웨어 및 데이터 테크놀로지 국제회의의 진행, 181~189년, 2008년.
- ^ 마이클 폴드너와 허버트 쿠첸."분할과 정복에 관한 스켈튼." 병렬 및 분산 컴퓨팅 및 네트워크에 관한 국제표준회의(IASTED) 진행, 181-188, 2008.
- ^ 마이클 폴드너와 허버트 쿠첸."확장 가능한 농장"국제 병렬 처리 회의(ParCo) 33:795–802, 2006.
- ^ 마이클 폴드너와 허버트 쿠첸.「농장의 골격의 실장에 대해서」Parallel Processing Letters, 18 (1) : 117 ~131, 2008.
- ^ 필립 시차노비치."일반 희박 행렬에 대한 알고리즘 골격"제20회 병렬 및 분산 컴퓨팅 시스템 국제회의(PDCS), 188~197년, 2008년.
- ^ 필립 시차노비치, 필립 케겔, 마라이케 셸만, 세르게이 고라크, 헤르베르트 쿠첸."멀티코어 클러스터에서의 LM OSEM 이미지 재구성의 병렬화" 병렬 컴퓨팅:멀티코어 및 GPU에서 Petascale, 19: 169 ~176, 2010.
- ^ 필립 시차노비츠와 헤르베르트 쿠첸."멀티코어 컴퓨터 아키텍처를 위한 Muesli의 데이터 병렬 스켈레톤 강화"하이 퍼포먼스 컴퓨팅 및 커뮤니케이션에 관한 국제회의(HPCC), 108~113, 2010.
- ^ Bacci, B.; Danelutto, M.; Orlando, S.; Pelagatti, S.; Vanneschi, M. (1995). "P3L: A structured high-level parallel language, and its structured support". Concurrency: Practice and Experience. 7 (3): 225. CiteSeerX 10.1.1.215.6425. doi:10.1002/cpe.4330070305.
- ^ S. Ciarpaglini, M. Danelutto, L. Folchi, C. 만코니, 그리고 S. 펠라가티."ANACLETO: 템플릿 기반 p3l 컴파일러"1997년 8월 캔버라 호주국립대학교, 제7차 병렬컴퓨팅 워크숍(PCW '97)의 진행.
- ^ M. 알디누치, M. 코폴라, M.다넬루토.스켈레톤 프로그램을 다시 쓰는 중:데이터-병렬 스트림-병렬 트레이드오프를 평가하는 방법S. Gorlatch, 편집자, CMPP의 Proc: Interl.병렬 프로그래밍을 위한 건설적 방법에 대한 워크숍, 44-58페이지.1998년 5월 독일 파사우 대학교
- ^ B. Bacci, M. Danelutto, S. Pelagatti 및 M. Vanneschi."Skie: HPC 애플리케이션을 위한 이기종 환경." Parallel Compute, 25(13–14): 1827–1852, 1999.
- ^ M. Danelutto. 스티글리아니"Skelib: C의 골격을 가진 병렬 프로그래밍." Euro-Par 00: 제6회 병렬처리에 관한 국제 유로파 회의에서의 의사록, 1175-1184, 영국 런던, 2000.스프링거-벨라그.
- ^ D. 고스와미, A. 싱, 그리고 B. R. 프리이스"설계 패턴에서 병렬 아키텍처 골격까지." J. Parallel Distribute.계산, 62(4): 669~695, 2002.
- ^ D. 고스와미, A. 싱, 그리고 B. R. 프리이스"객체 지향 기술을 사용하여 병렬 아키텍처 골격을 실현합니다."ISCOPE '99: 객체 지향 병렬 환경에서의 컴퓨팅에 관한 제3회 국제 심포지엄의 진행, 컴퓨터 과학에서의 강의 노트, 130~141쪽, 영국 런던, 1999년.스프링거-벨라그.
- ^ M. M. Akon, D. 고스와미, H.F. 리. "슈퍼파스:확장성과 스켈레톤 구성을 지원하는 병렬 아키텍처 스켈레톤 모델입니다."병렬 및 분산 처리 및 응용 제2차 국제 심포지엄, ISPA, 컴퓨터 과학 강의 노트, 985~996페이지.Springer-Verlag, 2004년
- ^ M. M. Akon, A. 싱, D. 고스와미, H.F. 리. "확장 가능한 병렬 건축 골격"하이 퍼포먼스 컴퓨팅 HiPC 2005, 제12회 국제회의, 컴퓨터 사이언스 강의 노트 제3769권, 290~301쪽, 인도, 고아, 2005년 12월.스프링거-벨라그.
- ^ M. 디아즈, B. 루비오, E. Soler, J.M. 트로야 "SBASCO: 골격 기반 과학 부품"PDP의 경우 318– 페이지.IEEE Computer Society, 2004.
- ^ M. 디아즈, S. 로메로, B.루비오, E. Soler, J.M.트로야 "SBASCO를 사용하여 2차원 불규칙 영역에서 반응-확산 방정식을 푼다"ICS(International Conference on Computational Science)에 부속된 PPP(High-Level Parallel Programming)의 실용적인 측면, 컴퓨터 과학 강의 노트 3992권, 912-919페이지.Springer, 2006.
- ^ M. 디아즈, S. 로메로, B. 루비오, E. Soler, J.M. Troya "과학적 요소 개발을 위한 측면 지향적 프레임워크"PDP '05: 병렬, 분산 및 네트워크 기반 처리에 관한 제13회 Euromicro Conference of Parallel, Distributed and Network-Based Processing, 290–296페이지, 워싱턴 DC, USA, 2005.IEEE 컴퓨터 협회
- ^ M. 디아즈, S. 로메로, B. 루비오, E. Soler, J.M. Troya. "Aspect Oriented Programming을 사용한 과학 컴포넌트의 동적 재구성: 사례 연구"R. 머먼 앤 Z에서요편집자 Tari, On the Move to Sense Internet Systems 2006: CoopIS, DOA, GADA 및 ODBASE, 컴퓨터 과학 강의 노트 제4276권, 1351-1360쪽. Springer-Verlag, 2006년.
- ^ J. Darlington, Y. ke Guo, H. W. To, J. Yang."구조화된 구성을 위한 평행 골격"PPOPP '95: 병렬 프로그래밍의 원칙과 실천에 관한 제5회 ACM SIGPLAN 심포지엄 진행, 19-28페이지, 뉴욕, 뉴욕, 미국, 1995.ACM.
- ^ John Darlinton; Moustafa Ghanem; Yike Guo; Hing Wing To (1996), "Guided Resource Organisation in Heterogeneous Parallel Computing", Journal of High Performance Computing, 4 (1): 13–23, CiteSeerX 10.1.1.37.4309
- ^ http://www.ida.liu.se/~httpu/httpu
- ^ J. Serot, D. 긴학, 그리고 J. 데루틴."SKiPPER: 실시간 이미지 처리 애플리케이션을 위한 스켈레톤 기반의 병렬 프로그래밍 환경입니다."제5회 병렬 컴퓨팅 기술에 관한 국제 회의(PaCT-99)의 편집자인 V. Malyshkin은 LNCS 1662권을 296-305페이지에 게재하고 있습니다.Springer, 1999년 9월 6-10일
- ^ J. Serot과 D. 긴핵."병렬 이미지 처리를 위한 스키톤: SKiPPER 프로젝트의 개요"병행 컴퓨팅, 28(12): 1785–1808, 2002년 12월
- ^ J. Falcou, J. Serot, T. 샤토, 그리고 J. T. 라프레스티.Quaff: 병렬 스켈레톤을 위한 효율적인 c++ 설계.Parallel Computing, 32(7): 604–615, 2006.
- ^ J. Falcou와 J. Serot."스켈레톤 기반 병렬 프로그래밍 라이브러리의 구현에 적용되는 형식 의미론입니다."G.R. 주버트, C.Bischof, F. J. Peters, T. Lippert, M. Bcker, P. Gibbon 및 B.Mohr, 편집자, 병렬 컴퓨팅:아키텍처, 알고리즘 및 애플리케이션(PARCO 2007 Proc., Julich, 독일), NIC 제38권, 243~252쪽, 독일, 2007년 9월John von Neumann 컴퓨터 연구소.
- ^ K. 마츠자키, H. 이와사키, K. 이모토, Z. "순차적인 병렬 프로그래밍 스타일을 위한 구성적인 골격의 라이브러리"InfoScale '06: 확장 가능한 정보 시스템에 관한 제1회 국제 회의의 진행(P.13), 뉴욕, 뉴욕, 미국, 2006.ACM.
- ^ K. 마츠자키, Z. 후, 그리고 M. 타케이치."나무 골격과의 평행화"Euro-Par, 컴퓨터 과학 강의 노트 2790권, 789-798페이지.Springer, 2003.
- ^ K. 마츠자키, Z. 후, 그리고 M. 타케이치."일반 나무를 조작하기 위한 병렬 골격." 병렬 계산, 32(7): 590–603, 2006.
- ^ K. 이모토, Z. Hu, K. Kakehi, M. 타케이치."2차원 배열에서 병렬 프로그램을 개발하기 위한 구성 프레임워크입니다."기술 보고서, 도쿄 대학 수리정보학부, 2005.
- ^ K. 에모토, K. 마츠자키, Z. 후, 그리고 M. 타케이치."스켈레톤 프로그램을 위한 도메인별 최적화 전략"Euro-Par, 컴퓨터 과학 강의 노트 4641권, 705-714페이지.Springer, 2007년
- ^ K. 마츠자키, K. 가케히, H. 이와사키, Z. 후, 그리고 Y. 아카시."퓨전 내장 스켈레톤 라이브러리"M. Danelutto, M. Vanneschi 및 D.Laforenza 편집자, Euro-Par, 컴퓨터 과학 강의 노트 제3149권, 644~653쪽.Springer, 2004.
- ^ G. H. 보토로그와 H. 쿠첸"효율적인 고급 병렬 프로그래밍"이론. 컴퓨터.196(1~2):71~107, 1998.
- ^ Zandifar, Mani; Abduljabbar, Mustafa; Majidi, Alireza; Keyes, David; Amato, Nancy; Rauchwerger, Lawrence (2015). Composing Algorithmic Skeletons to Express High-Performance Scientific Applications. Proceedings of the 29th ACM on International Conference on Supercomputing. pp. 415–424. doi:10.1145/2751205.2751241. ISBN 9781450335591. S2CID 13764901.
- ^ Zandifar, Mani; Thomas, Nathan; Amato, Nancy M.; Rauchwerger, Lawrence (15 September 2014). Brodman, James; Tu, Peng (eds.). Languages and Compilers for Parallel Computing. Lecture Notes in Computer Science. Springer International Publishing. pp. 176–190. doi:10.1007/978-3-319-17473-0_12. ISBN 9783319174723.
- ^ "G. Tanase, et.al." "STAPL 병렬 컨테이너 프레임워크" 병렬 프로그래밍의 원칙과 실천에 관한 제16회 ACM 심포지엄의 PPoPP '11 진행 235-246페이지
- ^ J. 달링턴, A. J. 필드, P. G. 해리슨, P. H. J. 켈리, D. W. N. 샤프, Q. 우. "스켈레톤 함수를 이용한 병렬 프로그래밍"PARLE '93: 제5회 병렬 아키텍처와 언어에 관한 국제 PARLE 회의의 진행, 146~160페이지, 영국 런던, 1993년.스프링거-벨라그.
- ^ J. Darlinton; M. Ghanem; H. W. To (1993), "Structured Parallel Programming", In Programming Models for Massively Parallel Computers. IEEE Computer Society Press. 1993: 160–169, CiteSeerX 10.1.1.37.4610