디시인사이드 갤러리

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

갤러리 본문 영역

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

나르시갤로그로 이동합니다. 2025.08.12 04:48:26
조회 142 추천 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/10/20 - -
2881173 니들이면 자격증/학위중에 머땀 [9] 밀우갤로그로 이동합니다. 08.13 295 0
2881172 요즘 이상하게 답주면 마지막에 쏴주는 프롬프트 프갤러(49.165) 08.13 104 0
2881171 메이플 2달즐기구 20마넌 벌구나옴 ㅇㅅㅇ ㅇㅇ(223.39) 08.13 72 0
2881167 지피티 5 이새끼도 아첨 존나 심하네 ㅆㅇㅆ(124.216) 08.13 101 0
2881153 후 크롤러 다 만들었다 [1] 루도그담당(211.184) 08.13 149 0
2881148 인프런이랑 유데미 가격차이 너무 심하지않나 [3] ㅇㅇ(125.182) 08.13 1444 0
2881146 나트륨찡 친구입니다 [9] Ecstasy갤로그로 이동합니다. 08.13 162 0
2881145 [한컴]ChatGPT 한계를 넘는 실전 AI 프로그래밍 교육시작!!! [3] 한컴아카데미(14.53) 08.13 156 0
2881144 메이플을 대체할만큼 성장하는 재미 가득한 활동이 뭐임 ㅇㅅㅇ?? ㅇㅇ(223.39) 08.13 110 0
2881141 프로그래밍 언어 ㅈ나쉽습니다. 이그마그레제(118.235) 08.13 143 0
2881139 왜 팀노바 출신들은 [1] 프갤러(118.235) 08.13 253 3
2881138 크롤러 개발 생각보다 귀찮으시다 [4] 루도그담당(118.235) 08.13 171 0
2881135 IT업계 날먹 개꼰대 상사 면접관 특징.txt [7] ㅇㅇ(211.234) 08.13 1724 0
2881134 메이플은 왜 재미있는데 하다가 질릴까 ㅇㅅㅇ ㅇㅇ(223.39) 08.13 103 0
2881124 [멋쟁이사자처럼] 현대모비스가 제공하는 모빌리티 부트캠프 1기 (~9/5 [1] 프갤러(14.32) 08.13 388 1
2881122 많은거 바라는거 아님 연봉 4천받고싶다 ㅇㅇ갤로그로 이동합니다. 08.13 135 0
2881111 400 -> 580 대박 이직 성공했다 ㅋㅋ [3] ㅇㅇ갤로그로 이동합니다. 08.13 241 3
2881110 특이점 온다 노동해방시대 온다 ㅇㅇ 뒷통수한방(1.213) 08.13 109 0
2881107 마스터플랜의 망령 ㅇㅇ(210.100) 08.13 118 0
2881102 비가 많이 오네 좀 우울한 날이다. [1] 넥도리나(220.74) 08.13 101 0
2881099 opencv 이거 ai이미지 생성할때도 쓰이는거임 ㅇㅇ(220.116) 08.13 130 0
2881085 인지과학조져라 손발이시립디다갤로그로 이동합니다. 08.13 120 0
2881084 나는내향적이야 손발이시립디다갤로그로 이동합니다. 08.13 77 0
2881083 호로미제매국통베폭동간첩견아 손발이시립디다갤로그로 이동합니다. 08.13 133 0
2881066 하루에 0=99줄 감사의 코딩 공기역학갤로그로 이동합니다. 08.13 97 0
2881064 좆소라 연봉낮은 애들만 지원하는건가 [1] 프갤러(222.239) 08.13 215 0
2881059 요즘 조직관리론에 빠짐 프갤러(61.79) 08.13 114 0
2881051 권은비 레전드 과거사진 프갤러(106.101) 08.13 151 1
2881039 ai쪽으로 취업 어케하노 [4] ㅇㅇ(1.235) 08.13 321 0
2881035 보여주는 것이 다가 아니다 ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 08.13 126 0
2881034 태연 ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 08.13 124 0
2881033 하루 한 번 헤르미온느 찬양 헤르 미온느갤로그로 이동합니다. 08.13 146 0
2881011 와 갤 똥내 씨발 [1] 박민준갤로그로 이동합니다. 08.13 150 0
2881006 이게 바로 법치주의고 정의지 [8] 야옹아저씨갤로그로 이동합니다. 08.13 328 7
2880966 우리 모두 사랑해요 [5] 개멍청한유라갤로그로 이동합니다. 08.12 152 0
2880963 회사 오너가 개 빡쳐 있는 이유. [1] 프갤러(59.16) 08.12 224 0
2880961 왜 임베디드 취업은 ai영향이 적은거임 ㅇㅇ(175.119) 08.12 234 0
2880959 요즘 너무 바빠서 [2] 아스카영원히사랑해갤로그로 이동합니다. 08.12 166 0
2880955 넥도리아 야식 콩국물 + 오뚜기 라면 사리 [2] 넥도리아(220.74) 08.12 155 0
2880953 전한길씨가 그래도 차단은 안하더라 [4] 헬마스터갤로그로 이동합니다. 08.12 159 0
2880948 김건희 구속 드가자 야옹아저씨갤로그로 이동합니다. 08.12 164 0
2880947 코딩과 개발은 은 프로그래밍이 아니다. 프갤러(121.139) 08.12 147 1
2880946 네이버는 그나마 사람 새끼들 집합이겠지. 프갤러(211.234) 08.12 175 0
2880945 코딩은 알고리즘실력보다 중요한건 프갤러(118.219) 08.12 152 0
2880943 내가 비록 호주인으로 국적이 바뀌지만 미래에 한국 전쟁에 참전은 하겠다. [4] Kyle(103.21) 08.12 183 0
2880942 네이버 토스 종결 프갤러(121.139) 08.12 229 1
2880937 집에 5공화국 쉴드치는 돼지가 살아요. 넥도리아(223.38) 08.12 116 0
2880935 클리우드 엔지니어쪽 생각하고 있는데 프갤러(211.235) 08.12 129 0
2880931 대규모시스템설계기초책 재밌네 [1] 밀우갤로그로 이동합니다. 08.12 130 0
2880929 찐윤이랑 윤석열이 국민 삶 의료질 다 망쳐나서.. [1] 넥도리아(223.38) 08.12 144 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2