디시인사이드 갤러리

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

갤러리 본문 영역

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

나르시갤로그로 이동합니다. 2025.08.12 04:48:26
조회 115 추천 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/09/01 - -
AD 신학기 레벨업~!! 운영자 25/09/05 - -
2883354 멀티모달 AI가 대세임 프갤러(121.133) 08.21 90 0
2883352 요즘 도로에 공사 ㅈㄴ 많이하지안냐? [1] 야옹아저씨갤로그로 이동합니다. 08.21 109 0
2883351 전 외국인여친 소주먹이고 반응 ㅇㅇ(58.229) 08.21 131 0
2883349 프갤 최고 지성인 아스카님 독서하신다 아스카영원히사랑해갤로그로 이동합니다. 08.21 111 0
2883348 나님 주무시기전 소통⭐+ 질문받음☘+ ♥냥덩Art♥갤로그로 이동합니다. 08.21 118 0
2883347 배급견 욕 왜함??돈뿌리는새끼가 문제아님?? 타이밍뒷통수한방(1.213) 08.21 75 0
2883345 나님 피궁해서 글 쓰던거 저장하구 누엇어양⭐+ ♥냥덩Art♥갤로그로 이동합니다. 08.21 104 0
2883344 코딩하다보면 결국 모르는게 많고, 하다보면 잊혀지는게 너무 많다 [1] ㅆㅇㅆ(124.216) 08.21 120 0
2883343 svn 책 추천 좀 해주세요.. ㅇㅇ갤로그로 이동합니다. 08.21 75 0
2883342 케더헌은 일본애니다 ♥냥덩Art♥갤로그로 이동합니다. 08.21 96 0
2883340 모쏠 아다로 태어나서 [2] ㅆㅇㅆ찡갤로그로 이동합니다. 08.21 108 0
2883337 세상에서 돈 모으는 게 재일 재미있어 [8] 아스카영원히사랑해갤로그로 이동합니다. 08.21 157 0
2883336 냥덩이 [1] 발명도둑잡기갤로그로 이동합니다. 08.21 126 0
2883333 네트워크 고수 있음? [3] ㅇㅇ(106.241) 08.21 113 0
2883331 막상 글 쓰려구 하니깐 귀찮넹 [1] ♥냥덩Art♥갤로그로 이동합니다. 08.21 113 0
2883330 보수=한국인 , 극좌배급견 =조선인 ♥냥덩Art♥갤로그로 이동합니다. 08.21 86 0
2883329 러스트는 이미 도태되고 있어요. Ada 하십쇼. 나르시갤로그로 이동합니다. 08.21 91 0
2883328 노력이라는단어가 제일 좇같음 프갤러(1.213) 08.21 81 0
2883325 나님 확실히 뛰뛰를 자주 못하니 지능 떨어지는게 느껴짐 [3] ♥냥덩Art♥갤로그로 이동합니다. 08.21 120 0
2883324 냥덩이의 일본여행답사기 ♥냥덩Art♥갤로그로 이동합니다. 08.21 82 0
2883321 그냥 팀 지향성에 맞는 문법 선택해라 FP하는데 OOP 클래스 [2] ㅆㅇㅆ(124.216) 08.21 107 0
2883320 36계 빤스런~ ♥냥덩Art♥갤로그로 이동합니다. 08.21 76 0
2883319 LLM 랭그래프 궁금 ㅇㅅㅇ 어린이노무현갤로그로 이동합니다. 08.21 84 0
2883317 누가 나님 냥덩이 만진거야? ♥냥덩Art♥갤로그로 이동합니다. 08.21 73 0
2883316 내가 봤을때 한국 프로그래밍 커뮤니티는 자폐아 속성이 좀 있음 [2] ㅆㅇㅆ(124.216) 08.21 119 0
2883315 애널은 걍 망가보다 자야지 ♥냥덩Art♥갤로그로 이동합니다. 08.21 84 0
2883314 흠.. 분배문제로 봐야하나.. ♥냥덩Art♥갤로그로 이동합니다. 08.21 80 0
2883313 ❤✨☀⭐⚡☘⛩나님 시작합니당⛩☘⚡⭐☀✨❤ ♥냥덩Art♥갤로그로 이동합니다. 08.21 76 0
2883311 뭐든지 수면이 최우선이당 밤샘은 멍청한짓 ♥냥덩Art♥갤로그로 이동합니다. 08.21 72 0
2883310 왜 프로그래밍 커뮤니티는 만년 떡밥 밈이 같냐 [3] ㅆㅇㅆ(124.216) 08.21 143 0
2883309 뭔가 추가로 더 한다는개 ㄹㅇ 쉬운개 아님 ♥냥덩Art♥갤로그로 이동합니다. 08.21 79 0
2883307 고언어 echo 써볼까?. 프갤러(211.234) 08.21 86 0
2883306 ㅎㅡㅁ.. 나님 전략 수정 ♥냥덩Art♥갤로그로 이동합니다. 08.21 75 0
2883305 고양이 지하철 발명도둑잡기갤로그로 이동합니다. 08.21 63 0
2883304 머리카락은 진짜 어떻게 학습시킴? [1] ㅇㅇ(223.38) 08.21 88 0
2883303 ❤✨☀⭐⚡☘⛩나님 시작합니당⛩☘⚡⭐☀✨❤ ♥냥덩Art♥갤로그로 이동합니다. 08.21 61 0
2883302 32살 인생평가좀... ㅇㅇ(118.235) 08.21 99 0
2883301 와 근데 LLM 랭그래프 돌려서 10만줄 만드는거 일도 아닌데 [2] ㅆㅇㅆ(124.216) 08.21 112 0
2883300 파이썬은 하꼬작업에나 쓰는 토이 언어이고 cpp는 곧 도태됩니다. [2] 프갤러(27.172) 08.21 134 1
2883299 길냥이가족 사이좋개 놀다가 갑자기 부부싸움 났당 ㄷㅅㄷ ♥냥덩과바다♥갤로그로 이동합니다. 08.21 76 0
2883296 세계적인 기업들은 파이선, c/c++ 씁니다. 나르시갤로그로 이동합니다. 08.21 104 0
2883295 명품을 사야하는 진짜 이유 ♥냥덩과바다♥갤로그로 이동합니다. 08.21 78 0
2883294 러스트 어려워서 포기한 패배자의 변명따위 아무도 신경 안씁니다. 프갤러(223.54) 08.21 83 0
2883293 돈 벌려면 지금 TLT 사라 [1] 아스카영원히사랑해갤로그로 이동합니다. 08.21 127 0
2883292 러스트는 현업 사용 비중이 매우 낮아요. 나르시갤로그로 이동합니다. 08.21 83 0
2883291 코테보는데 [1] 프갤러(114.205) 08.21 76 0
2883289 러스트는 Ada, 어셈블리보다 사용 빈도가 낮아요 나르시갤로그로 이동합니다. 08.21 66 0
2883288 코딩 비전공이 공부하니깐 은근 어려움... ㅇㅇ(106.102) 08.21 83 0
2883287 러스트는 왜 실패했을까? 나르시갤로그로 이동합니다. 08.21 81 0
2883286 장동혁,안철수 ♥냥덩과바다♥갤로그로 이동합니다. 08.21 94 0
뉴스 배우 강형석, 생애 첫 시구로 야구 팬들과 특별한 만남! KT 위즈 승리 이끈 시구 “잊지 못할 경험” 디시트렌드 09.06
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2