디시인사이드 갤러리

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

갤러리 본문 영역

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

나르시갤로그로 이동합니다. 2025.08.12 04:48:26
조회 97 추천 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 전자제품 세일쇼! 운영자 25/08/19 - -
2882174 님들 저 졸업하고싶습니다 [1] 공기역학갤로그로 이동합니다. 08.17 57 0
2882173 정통성 없다는 열등감이 셀프왕따인증 대참사로 나타남 [1] ♥냥덩이♥갤로그로 이동합니다. 08.17 67 0
2882168 [대한민국][충격] 선관위 'C 컴파일러'! 믿을 수 없는 전산조작! 프갤러(121.172) 08.17 55 0
2882167 동생이 맡긴 도마뱀 발명도둑잡기갤로그로 이동합니다. 08.17 47 0
2882166 산출할수 없는걸 산출하려 하지말라 By 나님 ♥냥덩이♥갤로그로 이동합니다. 08.17 44 0
2882163 컨설팅 회사 RA 인턴 어떰? 프갤러(211.36) 08.17 59 0
2882162 연출력 미쳣당 ㄷㅅㄷ 감각 ㅆㅅㅌㅊ ♥냥덩이♥갤로그로 이동합니다. 08.17 42 0
2882160 외주받으려고 숨고 써봤는데 이거 절대 쓰지마라 [2] 프갤러(106.101) 08.17 88 0
2882159 나님은 심리학을 마스터햇당 [1] ♥냥덩이♥갤로그로 이동합니다. 08.17 68 0
2882157 회사에다 그만두고싶다고 했더니 [3] ㅇㅇ(160.238) 08.17 93 0
2882156 아무리 자세하게 명세 짜도 한계가 있네 LLM 구현은 [3] ㅆㅇㅆ(124.216) 08.17 70 0
2882155 부모가 절묘한 수렁에 낳아주셨죠. 프갤러(220.84) 08.17 54 0
2882154 인지과학조져라 손발이시립디다갤로그로 이동합니다. 08.17 44 0
2882152 “맥도날드도 안 뽑아준다” AI에 밀려난 코딩 전공자들 절규 프갤러(218.50) 08.17 167 0
2882151 ❤✨☀⭐⚡☘⛩나님 시작합니당⛩☘⚡⭐☀✨❤ ♥냥덩이♥갤로그로 이동합니다. 08.17 56 0
2882150 코딩으로 먹고살려면 심리학 공부하는게 맞는듯 [1] ㅇㅇ(14.51) 08.17 95 0
2882149 나님 피규어 삿어양❤+ ♥냥덩이♥갤로그로 이동합니다. 08.17 62 0
2882147 좋았어 발명도둑잡기갤로그로 이동합니다. 08.17 55 0
2882144 [해방80년특집: 숭미의 기원①] 광화문 성조기는 어디서 왔나 발명도둑잡기갤로그로 이동합니다. 08.17 54 0
2882142 냥덩 만화상 이 만화가 대단하당⭐ 14회 수상작 ♥냥덩이♥갤로그로 이동합니다. 08.17 55 0
2882141 한일 협정 반대 여론을 막아라…미국의 심리전 발명도둑잡기갤로그로 이동합니다. 08.17 44 0
2882140 컴공이 미술학 전공자보다 실업률 2배 높아 [2] ㅇㅇ(182.210) 08.17 393 0
2882136 냥덩이 ㅋㅋㅋㅋㅋ 발명도둑잡기갤로그로 이동합니다. 08.17 43 0
2882135 더불어짱깨단 몰래 중공 만남 ♥냥덩이♥갤로그로 이동합니다. 08.17 51 0
2882132 대통령놀이 무능극좌 이재명을 탄핵해라 ♥냥덩이♥갤로그로 이동합니다. 08.17 74 0
2882131 요즘 전공타령하는 개발자 한심하긴 함 [3] 밀우갤로그로 이동합니다. 08.17 136 0
2882130 해산물로 2틀 채웟으니 애널은 육고기❤+ ♥냥덩이♥갤로그로 이동합니다. 08.17 49 0
2882129 점심 발명도둑잡기갤로그로 이동합니다. 08.17 47 0
2882128 헬마 씹새끼야 [2] 아스카영원히사랑해갤로그로 이동합니다. 08.17 97 1
2882127 아 돈 벌어서 미국 나가서 살고 싶다- 프갤러(121.172) 08.17 55 0
2882126 아침 롤빵 발명도둑잡기갤로그로 이동합니다. 08.17 41 0
2882125 분산도 좋지만 가끔은 몰빵도 끌리는 법 ♥냥덩이♥갤로그로 이동합니다. 08.17 55 0
2882124 일본 속 깊숙이 스며있는 백제의 흔적 발명도둑잡기갤로그로 이동합니다. 08.17 47 0
2882123 ❤✨☀⭐⚡☘⛩나님 시작합니당⛩☘⚡⭐☀✨❤ ♥냥덩이♥갤로그로 이동합니다. 08.17 49 0
2882122 오늘 점심.jpg [1] 야옹아저씨갤로그로 이동합니다. 08.17 69 0
2882121 시월은되야 시원해질듯 ♥냥덩이♥갤로그로 이동합니다. 08.17 55 0
2882118 국민임명식 x 왕따인증식 O ♥냥덩이♥갤로그로 이동합니다. 08.17 60 0
2882116 퐁퐁 받으러 간다. 넥도리아(223.38) 08.17 44 0
2882115 짱깨와 장애아로 채워지는 한국상황 ㄹㅇ;; ♥냥덩이♥갤로그로 이동합니다. 08.17 70 0
2882113 아직도 일욜이니 좋지아니한가 ♥냥덩이♥갤로그로 이동합니다. 08.17 43 0
2882112 틱톡이 유일하게 유튭에 비빌만하지 ㅇㅅㅇ ♥냥덩이♥갤로그로 이동합니다. 08.17 42 0
2882111 와 시발 vpn이 https 범용버전이였음??? ㅇㅇ(211.210) 08.17 68 0
2882110 ❤✨☀⭐⚡☘⛩나님 시작합니당⛩☘⚡⭐☀✨❤ ♥냥덩이♥갤로그로 이동합니다. 08.17 51 0
2882109 내일부터 운동 다시 들어가자 프갤러(61.79) 08.17 44 0
2882108 요즘 아침조차 뛰뛰하기엔 넘 더움 ♥냥덩이♥갤로그로 이동합니다. 08.17 51 0
2882107 집으로.. ♥냥덩이♥갤로그로 이동합니다. 08.17 47 0
2882106 내 글 왜 실베감??? [4] 아스카영원히사랑해갤로그로 이동합니다. 08.17 93 0
2882105 왕따 소녀를 지켜준 훈남의 정체 <보디가드의 비밀 계약> 발명도둑잡기갤로그로 이동합니다. 08.17 45 0
2882104 난 더 진화한건가... 프갤러(61.79) 08.17 40 0
2882103 특이점 온다 노동해방시대 기본소득제도시대가 온다 ㅇㅇ 뒷통수한방(1.213) 08.17 38 0
뉴스 이도현, ‘네스카페 돌체구스토 네오’ 출시 행사 참석 디시트렌드 08.21
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2