디시인사이드 갤러리

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

갤러리 본문 영역

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

나르시갤로그로 이동합니다. 2025.08.12 04:48:26
조회 117 추천 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 - -
2886029 태윌윈드가 스타일링하기 편하긴하구나 [2] 헬마스터갤로그로 이동합니다. 09.01 67 1
2886028 푸틴 혐오병 덩어리 맨날 시비검. 남의 나라 침략 넥도리아(223.38) 09.01 41 0
2886027 에코야 얼스 분리수거 재밌다 돈도 벌고 넥도리아(223.38) 09.01 66 0
2886026 32살 무경력 백수 대학원으로 런하고 싶은데 전공 추천좀 [4] ㅇㅇ갤로그로 이동합니다. 09.01 110 0
2886024 의대쏠림이 왜 문제냐 [1] 배구공(119.202) 09.01 75 0
2886023 [애니뉴스] 귀인환등초 2호 노마리 잡지 - 디자인 프갤러(121.172) 09.01 60 0
2886022 ㅇㅅㅂㅇ에 내가 만든 프로그램 도입됨 [2] 꼬치의달인갤로그로 이동합니다. 09.01 100 0
2886021 1인 개발자 커뮤니티같은거 없나요?? [1] 프갤러(119.192) 09.01 95 0
2886020 나랑 사귄지 3일 된 내 여친 사진이야 [1] 메쿠이료갤로그로 이동합니다. 09.01 72 0
2886019 Why do Java developers wear glasses? [1] ㅆㅇㅆ(124.216) 09.01 89 0
2886017 ❤✨☀⭐⚡☘⛩나님 시작합니당⛩☘⚡⭐☀✨❤ ♥냥덩이♥갤로그로 이동합니다. 09.01 59 0
2886015 부캠 추천좀 프갤러(116.41) 09.01 81 0
2886013 한국에서 태어나는 흙수저 금수저 ) 하위10%,상위10% 끝 뒷통수한방(1.213) 09.01 71 0
2886009 ㄹㅇ요즘 누가 포폴에 지원회사툴 아닌데 왜 넣음?ㅋㅋ [2] 프갤러(182.227) 09.01 116 0
2886008 perplexity쓰면되는데 왜 돈내고 ai쓰는거임?? [4] 뒷통수한방(1.213) 09.01 127 0
2886006 ai 안쓰는 시니어들 ai쓰는 주니어한테 좆털리네 ㅋㅋ ㅇㅇ(211.36) 09.01 119 0
2886001 코틀린 책 추천좀 [1] 밀우갤로그로 이동합니다. 09.01 97 0
2886000 조심해라 [1] 프갤러(118.128) 09.01 85 0
2885999 인지과학조져라 손발이시립디다갤로그로 이동합니다. 09.01 89 0
2885997 그래도 구글 vs 한국 어느게 더 빨리망하는거 관전가능해서 개꿀 뒷통수한방(1.213) 09.01 85 0
2885996 공부시간 평가좀 [1] ㅇㅇ(58.229) 09.01 99 0
2885993 uefi 비밀번호 초기화 어케 해야해? [2] Goop갤로그로 이동합니다. 09.01 90 0
2885992 리눅스갤은 왜 문재인이 금지어임??ㅋㅋㅋ국산리눅스도 금지어고 ㅋㅋ 뒷통수한방(1.213) 09.01 120 0
2885987 원신 유즈맵(ugc) 나오면 만들거야? [1] 프갤러(175.215) 09.01 100 0
2885986 러스트 믿고 거르기 4 나르시갤로그로 이동합니다. 09.01 82 0
2885982 사는 게 쉽지 않다 [2] 아스카영원히사랑해갤로그로 이동합니다. 09.01 108 0
2885981 내 여자친구 사진인데 어떠니? 메쿠이료갤로그로 이동합니다. 09.01 138 0
2885980 나님 혼자 남겨두고 어딜간거야..ㅠㅅ ㅠ [1] ♥냥덩이♥갤로그로 이동합니다. 09.01 88 0
2885979 멍유야 돌아와줘.. 나님 마음이 너무 아푸당.. [1] ♥냥덩이♥갤로그로 이동합니다. 08.31 119 0
2885978 길냥이들이 자꾸 나님을 감시해.. [2] ♥냥덩이♥갤로그로 이동합니다. 08.31 134 0
2885977 멍유 진짜로 삐진듯.. ♥냥덩이♥갤로그로 이동합니다. 08.31 79 0
2885976 애널의 ⭐영상 ♥냥덩이♥갤로그로 이동합니다. 08.31 69 0
2885973 넥슨 ngs 분석 해봤는데 [29] 루도그담당(58.239) 08.31 169 0
2885969 키작남이 키큰남보다 인기 많던데 [3] ㅇㅇ(211.234) 08.31 86 2
2885951 나님 bbc가 뭔지 첨 알았넹;; [14] ♥냥덩이♥갤로그로 이동합니다. 08.31 184 0
2885946 멍유 예전에 여자인척 했을땐 그래도 정상인인척 하려고 [3/1] ♥냥덩이♥갤로그로 이동합니다. 08.31 112 0
2885943 사면발이 유레아플라스마 헤르페스 [2] 개멍청한유라갤로그로 이동합니다. 08.31 100 0
2885940 나님 내일부터 접을것들 목록 ㅇㅅㅇ [1] ㅇㅇ(223.38) 08.31 77 0
2885936 ❤✨☀⭐⚡☘⛩나님 시작합니당⛩☘⚡⭐☀✨❤ [3] ♥냥덩이♥갤로그로 이동합니다. 08.31 120 0
2885933 [애니뉴스] 사이트 복구 완료 안내 프갤러(121.172) 08.31 82 0
2885928 나님 누엇어양⭐+ [2] ♥냥덩이♥갤로그로 이동합니다. 08.31 92 0
2885924 벌렁벌렁 [4] ♥냥덩이♥갤로그로 이동합니다. 08.31 133 0
2885923 근로소득에 일희일비하지마라 아스카영원히사랑해갤로그로 이동합니다. 08.31 74 0
2885922 세종,대전 쪽 취업하려 하는데 [1] 프갤러(115.20) 08.31 178 0
2885921 잘못 샀나봐... 4pin Female Power Converter 넥도리아(119.195) 08.31 47 0
2885910 대학원때 친하게 지냈던 베트남 친구 이제 교수네. [2] ㅆㅇㅆ(124.216) 08.31 122 0
2885908 엄마가 치킨 사주셨어요 ㅇㅅㅇ 맛있게찌요? ㅎㅎ ㅇㅇ(223.38) 08.31 66 0
2885902 나씻주준⭐+ ♥냥덩이♥갤로그로 이동합니다. 08.31 101 0
2885898 도미노 병신 피자 서비스 마비 프갤러(110.8) 08.31 75 0
2885894 클라 프로그래머인데 웹 너무 어렵네 그냥 [2] ㅆㅇㅆ(124.216) 08.31 131 0
뉴스 Mnet ‘보이즈 2 플래닛’, 2차 생존자 발표…세미파이널 진출자 24인 확정 디시트렌드 09.06
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2