디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

Ada 프로그래밍: 4.2.5 병렬 루프 (Ada 2022)

나르시갤로그로 이동합니다. 2025.08.12 04:48:26
조회 83 추천 0 댓글 0

4.2.5 병렬 루프 (Ada 2022)

Ada 2022는 병렬 루프를 도입하여, for 루프의 반복들이 여러 논리적 제어 스레드에 의해 동시에 실행될 수 있게 합니다. 이 기능은 루프의 작업 부하를 분산시켜 멀티코어 프로세서에서 계산 집약적인 작업의 성능을 크게 향상시킬 수 있습니다.

구현 참고: 병렬 루프 기능은 Ada 2022 표준에 추가된 사항입니다. GCC 15 기준으로, GNAT 컴파일러는 아직 parallel키워드를 지원하지 않습니다. 따라서 다음 구문과 예제들은 Ada 2022 명세에 기반한 것이며, 현재의 GNAT 버전으로는 컴파일되지 않을 수 있습니다.

병렬 루프는 표준 for 루프 구문 앞에 오는 parallel 키워드로 표시됩니다. 런타임 시스템은 루프의 반복들을 하나 이상의 청크(chunk)로 분할하며, 각 청크는 별도의 논리적 스레드에 의해 처리됩니다. 어떤 형태의 병렬 루프에서도 reverse 키워드는 허용되지 않는다는 점에 유의해야 합니다.

Ada 2022는 세 가지 주요 형태의 병렬 반복을 정의합니다.

1. 이산 범위에 대한 병렬 for 루프

이것은 병렬 루프의 가장 직접적인 형태로, 이산 범위(예: 정수 또는 열거형 범위)에 대한 반복이 병렬화됩니다.

구문:

parallel for loop_parameter in discrete_subtype_definition loop
  -- 일련의 문장들
end loop;

예제:

-- 각 인덱스에 대한 독립적인 계산을 병렬로 수행
parallel for i in 1 .. 100 loop
  process_data (i);
end loop;

2. 배열 및 컨테이너를 위한 병렬 반복자

이 형태는 배열의 원소나 병렬 반복자 인터페이스를 제공하는 모든 컨테이너 타입(특히, Ada.Iterator_Interfaces.Parallel_Iterator에서 파생된 타입)에 대한 병렬 반복을 허용합니다.

구문:

parallel for element of Iterable_Container loop
  -- 일련의 문장들
end loop;

예제 (병렬 컴포넌트 반복): 이 예제는 2차원 배열의 각 원소를 병렬로 두 배로 만듭니다.

-- Board는 Float 타입의 2차원 배열
parallel for element of Board loop
  element := element * 2.0;
end loop;

3. 병렬 절차적 반복자

이 고급 형태는 프로시저를 사용하여 반복을 제어합니다. 지정된 프로시저가 Parallel_Iterator => True 애스펙트를 가지고 있다면 루프는 병렬화됩니다. 이는 프로시저 자체가 여러 스레드에서 루프 본문을 안전하게 호출하도록 설계되었음을 나타냅니다.

구문:

parallel for (parameters) of Iterator_Procedure loop
  -- 일련의 문장들
end loop;

청크 명세 (Chunk Specification)

프로그래머는 chunk_specification을 제공하여 작업 부하가 어떻게 분할되는지에 영향을 줄 수 있습니다. 이는 병렬 실행의 세분성을 미세 조정할 수 있게 합니다. 청크를 명시하는 두 가지 방법이 있습니다.

  1. 최대 개수로: 정수 표현식이 최대 청크 수를 정의합니다.
  2. 청크 서브타입으로: 이산 서브타입이 청크의 집합을 정의합니다. 이 형태는 또한 루프 내에서 특정 청크를 식별하는 데 사용할 수 있는 청크 파라미터를 암묵적으로 선언하여, 결과를 분할하는 데 유용합니다.

예제 (서브타입을 사용한 청크 명세): 이 루프는 최대 8개의 청크를 사용하여 부분 계산을 병렬로 수행합니다. Chunk_Number 타입의 Chunk 파라미터는 루프 내에서 어떤 스레드가 데이터의 어느 부분을 작업하고 있는지 구별하는 데 사용할 수 있습니다.

declare
  subtype Chunk_Number is Natural range 1 .. 8;
  partial_sum : array (Chunk_Number) of Natural := (others => 0);
  grid        : array (1 .. 1_000) of Boolean;
  -- ... grid가 초기화됨
begin
  parallel (chunk in Chunk_Number)
  for i in grid'range loop
    if grid(i) then
      -- 이 연산은 스레드-안전해야 함. 예제는 간결함을 위해 '@'를 사용했지만,
      -- 실제 구현에서는 스레드-안전한 업데이트를 위해 원자적 연산이나
      -- 보호 객체가 필요할 것임
      partial_sum(chunk) := @ + 1;
    end if;
  end loop;
  -- ... partial_sum으로부터 최종 결과를 집계
end;



https://nimfsoft.art/ko/books/ada-programming/#425-%EB%B3%91%EB%A0%AC-%EB%A3%A8%ED%94%84-ada-2022

 



추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 생활고나 번아웃 고백이 와닿지 않는 스타는? 운영자 25/08/18 - -
AD 가전디지털, 휴대폰 액세서리 SALE 운영자 25/08/08 - -
공지 프로그래밍 갤러리 이용 안내 [92] 운영자 20.09.28 46394 65
2882297 영화 <숟가락 살인자> 있대서 생각나는 것 발명도둑잡기갤로그로 이동합니다. 00:47 7 0
2882295 참 살기좋은 아름다운 나라여 ㅋㅋ 뒷통수한방(1.213) 00:44 10 0
2882294 <토이 스토리4> 예고편 보고 생각나는 것 [1] 발명도둑잡기갤로그로 이동합니다. 00:32 7 0
2882292 C로 이것저것 만들다보면 어디라도 취직은 할까? 프갤러(59.24) 00:15 17 0
2882291 인공지능 시대 없어진 직업 드라마 발명도둑잡기갤로그로 이동합니다. 00:11 12 0
2882289 찬란하진 않지만 순방은 가능하자나? 프갤러(61.79) 00:07 15 0
2882287 냥덩이란 캐릭터는 참 편리하단 말이지.. 키킼 ♥냥덩이♥갤로그로 이동합니다. 08.17 24 0
2882286 오늘의 작명 실마리: 밴드명 숫가락, 멤버 금은동흙 발명도둑잡기갤로그로 이동합니다. 08.17 9 0
2882285 물리적으로 기억조작 가능 ♥냥덩이♥갤로그로 이동합니다. 08.17 25 0
2882284 오늘의.작명 실마리: 예명을 불우이웃으로 [2] 발명도둑잡기갤로그로 이동합니다. 08.17 11 0
2882281 명주실 뽑는 유상아 발명도둑잡기갤로그로 이동합니다. 08.17 11 0
2882278 음의 시간이 국부적으로 가능하면 나님만 제외시키면 ♥냥덩이♥갤로그로 이동합니다. 08.17 12 0
2882276 나님..우주의비밀을 탐구 ♥냥덩이♥갤로그로 이동합니다. 08.17 11 0
2882275 '컴백 D-8' 아이브, '아이브 시크릿' 콘셉트 포토 공개 발명도둑잡기갤로그로 이동합니다. 08.17 13 0
2882274 누가 나님 냥덩이 만진거야? ♥냥덩이♥갤로그로 이동합니다. 08.17 16 0
2882273 미 인권보고서, MBC ‘파란색 1’ 날씨예보 징계 지적 발명도둑잡기갤로그로 이동합니다. 08.17 13 0
2882272 1찍 고대 유물 발명도둑잡기갤로그로 이동합니다. 08.17 13 0
2882271 좃찐따새끼 ㅋㅅㅋ ♥냥덩이♥갤로그로 이동합니다. 08.17 24 0
2882270 홍대광-홍대에 가면 발명도둑잡기갤로그로 이동합니다. 08.17 11 0
2882269 잔나비-주저하는 연인들을 위해 발명도둑잡기갤로그로 이동합니다. 08.17 14 0
2882268 냥덩이 특징 [2] 발명도둑잡기갤로그로 이동합니다. 08.17 24 0
2882267 모모링~❤+ [1] ♥냥덩이♥갤로그로 이동합니다. 08.17 25 0
2882265 너의 IQ는 지평선만큼 높다 발명도둑잡기갤로그로 이동합니다. 08.17 17 0
2882264 여기에 게시글 제목 ㅇㅇ(175.198) 08.17 19 0
2882263 평소 욕을 자주 하는 사람 심리와 원인 발명도둑잡기갤로그로 이동합니다. 08.17 16 0
2882262 조동일의 4갈래설 발명도둑잡기갤로그로 이동합니다. 08.17 11 0
2882261 냥덩이 한국어 실력 ㅁㅌㅊ? ♥냥덩이♥갤로그로 이동합니다. 08.17 24 0
2882260 도로도로 도로롱!!!!! ♥냥덩이♥갤로그로 이동합니다. 08.17 19 0
2882259 소원)블라 it라운지에서 비공개안하고 글쓸수있는 회사가기 [2] 밀우갤로그로 이동합니다. 08.17 38 0
2882258 기괴 ㅌㅊ ♥냥덩이♥갤로그로 이동합니다. 08.17 14 0
2882257 ai도 모르면 모르겠다고 해야할텐데 ㅇㅇ(121.159) 08.17 26 0
2882256 ai가 진실보다는 그럴듯하게 거짓말하는게 목적 [1] ㅇㅇ(121.159) 08.17 31 0
2882255 정신병있는 프갤러들 보니 [1] 밀우갤로그로 이동합니다. 08.17 38 0
2882254 냥덩이두 이제 늙고 병들엇나바.. [1] ♥냥덩이♥갤로그로 이동합니다. 08.17 23 0
2882253 세 ai의 답변이 모두 다르구나 [3] 헬마스터갤로그로 이동합니다. 08.17 34 0
2882252 나님 영생 프로토콜 가도오옹~! ♥냥덩이♥갤로그로 이동합니다. 08.17 17 0
2882251 paddle 연동법 좀 개 빡친다 진짜 [1] 프갤러(116.47) 08.17 22 0
2882250 일하는 사람들에게 기운을 북돋아주는 음악 발명도둑잡기갤로그로 이동합니다. 08.17 18 0
2882249 나님 주무시기전 소통⭐+ 질문받음 ♥냥덩이♥갤로그로 이동합니다. 08.17 18 0
2882248 요즘 일이 많아서 좀 힘들다 [2] 아스카영원히사랑해갤로그로 이동합니다. 08.17 30 0
2882247 고양이와 염색체 수 같아서 교배 가능한 종 발명도둑잡기갤로그로 이동합니다. 08.17 21 0
2882246 한국 힙합가수가 퓰리처상을 받는다면 발명도둑잡기갤로그로 이동합니다. 08.17 11 0
2882245 오늘의 발명 실마리: 모든 이미지 집개 손가락으로 합성 발명도둑잡기갤로그로 이동합니다. 08.17 15 0
2882244 냥덩열전 ♥냥덩이♥갤로그로 이동합니다. 08.17 15 0
2882243 한동근 ‘이 소설의 끝을 다시 써보려 해’ [1] 발명도둑잡기갤로그로 이동합니다. 08.17 22 0
2882242 25살 고졸인데 인데 학원 없이는 웹개발자 불가능하지? [3] 프갤러(106.101) 08.17 53 0
2882241 M6 이상 모델 맥미니 풀옵션 사야징 [4/1] ♥냥덩이♥갤로그로 이동합니다. 08.17 38 1
2882240 저기 혹시 숫자를 암호화 하는거 중에서 [2] 감자쿤갤로그로 이동합니다. 08.17 31 0
2882239 수학을 암기 안하고 직접 증명한다고 하면 발명도둑잡기갤로그로 이동합니다. 08.17 15 0
뉴스 문원, ♥신지와 결혼 앞두고…기나긴 고민 끝에 ‘중대 발표’ 디시트렌드 08.16
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2