디시인사이드 갤러리

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

갤러리 본문 영역

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

나르시갤로그로 이동합니다. 2025.08.12 04:48:26
조회 109 추천 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/25 - -
AD 가전디지털, 신학기 페스타! 운영자 25/08/29 - -
2884829 도피 재현갤로그로 이동합니다. 08.26 58 0
2884826 나님 주무시전 통소⭐+ 문질받음☘+ ♥퇴마사냥덩♥갤로그로 이동합니다. 08.26 85 0
2884824 나님 음악 스펙트럼이 너무 넓어지니 방향을 잃은거 같다 [1] ♥퇴마사냥덩♥갤로그로 이동합니다. 08.26 63 0
2884820 참새 함부로 차지 마라 ♥퇴마사냥덩♥갤로그로 이동합니다. 08.26 51 0
2884819 Ada는 구린거 없는 줄 아냐? 나르시갤로그로 이동합니다. 08.26 54 0
2884818 파이선은 속도만 구린게 아니라 문법도 개구리다 ㅎㅎ [4] 나르시갤로그로 이동합니다. 08.26 104 0
2884817 보안전문가 <<--개발자보다 똑똑한거 맞음?? [1] 프갤러(1.213) 08.26 74 0
2884816 귀염 감수성이 높아야 한다 ♥퇴마사냥덩♥갤로그로 이동합니다. 08.26 86 0
2884815 헌혈 하면 안되는 이유 [5] 야옹아저씨갤로그로 이동합니다. 08.26 140 5
2884805 사내 프레임웤 쓰는 회사 많냐? [1] 프갤러(39.120) 08.26 84 0
2884803 에어컨을 켜놨는대도 뭔가 안시언 느낌? ♥퇴마사냥덩♥갤로그로 이동합니다. 08.26 79 0
2884799 '파이썬은 실행속도가 느려도 코드 작성이 빠르다' 프갤러(110.8) 08.26 83 0
2884798 파이썬은 왜케 좆구릴까 [3] 프갤러(106.101) 08.26 116 0
2884797 애플이 아패 로직,파컷을 구입이 아닌 구독제로 낸 이유 [1] ♥퇴마사냥덩♥갤로그로 이동합니다. 08.26 65 0
2884791 코린이의 코테분석 로갤러(118.235) 08.26 176 0
2884790 그날 새치기를 당하지 않아야했어요. gy갤로그로 이동합니다. 08.26 79 0
2884785 AI한테 따잇 당하기 싫으면 러스트Rust 해라 [4] 프갤러(211.235) 08.26 139 0
2884777 (개정)애널의달성 1./1//1 ♥퇴마사냥덩♥갤로그로 이동합니다. 08.26 89 0
2884776 웹앱땔깜련들은 욀케 깝치는지몰겠음 [2] 네오커헠(211.234) 08.26 152 1
2884775 러스트가 쓰레기인 이유 나르시갤로그로 이동합니다. 08.26 67 0
2884774 러스트 언어 진짜 꼴통같지 ㅋㅋ 나르시갤로그로 이동합니다. 08.26 69 0
2884773 확실히 엄마냥이 가장 위험에 민감한듯 ♥퇴마사냥덩♥갤로그로 이동합니다. 08.26 60 0
2884772 나님 프갤 오래했는데 아직도 프갤에 누구누구 있냐 하면 기억 안남 ♥퇴마사냥덩♥갤로그로 이동합니다. 08.26 67 0
2884771 러스트 언어 욕하니까 러빨러 완전 런했나보군 ㅎㅎ 나르시갤로그로 이동합니다. 08.26 49 0
2884768 AI가 웹앱목따고 윈도우임베 몰려올거생각하면 골치아프네 네오커헠(211.234) 08.26 79 0
2884766 찢재앙이 회담에서 쫓겨나듯 빤스런한 이유 ♥퇴마사냥덩♥갤로그로 이동합니다. 08.26 62 0
2884765 ❤✨☀⭐⚡☘⛩나님 시작합니당⛩☘⚡⭐☀✨❤ ♥퇴마사냥덩♥갤로그로 이동합니다. 08.26 45 0
2884763 10년 이상 됐는데 어떻게 사람 모음? 프갤러(106.102) 08.26 63 0
2884762 씨발 2025, 2026년 한국 경제 개 암울하네 프갤러(121.129) 08.26 72 0
2884761 클로드코드보다 Codex Cli가 더 좋은 듯? 프갤러(112.217) 08.26 74 0
2884756 웹앱 vs 임베디드 [1] 프갤러(175.112) 08.26 108 0
2884753 5천만국민이 개처럼 노예짓하고 r&d예산 좇나 올려도 성장률 마이너스누 뒷통수한방(1.213) 08.26 56 1
2884752 문재인 섹스톤 보유국가인데 갱생이 가능하겠냐?? ㅋㅋㅋㅋ 타이밍뒷통수한방(1.213) 08.26 77 0
2884750 스트레스 존나 받는다 진짜 [2] 주아갤로그로 이동합니다. 08.26 107 0
2884748 싸울려면 뉴프로에서 싸워라 [4] 헬마스터갤로그로 이동합니다. 08.26 119 0
2884744 윈도우/임베 초고수 시니어개발자입니다만!? 나님. [1] 네오커헠(211.234) 08.26 132 0
2884740 [애니뉴스] 귀인환등초 인기가 갈리는 이유 분석 프갤러(121.172) 08.26 51 0
2884737 밥그릇 하나에 4만원인데 살까 말까 [2] 나르시갤로그로 이동합니다. 08.26 103 0
2884733 일베 뿌리가 전라도 아님?? 뒷통수한방(1.213) 08.26 63 0
2884730 국힘은 문재인 이준석때부터 떡상함 뒷통수한방(1.213) 08.26 57 0
2884727 러스트 컴파일러는 결함이 심각합니다. 나르시갤로그로 이동합니다. 08.26 67 0
2884726 러스트는 진보된 언어가 아닙니다 나르시갤로그로 이동합니다. 08.26 61 0
2884725 [대한민국] 트럼프 이재명 만남- 프갤러(121.172) 08.26 65 0
2884723 다음 글 예고) 러스트는 나르시시즘 언어입니다. 나르시갤로그로 이동합니다. 08.26 54 0
2884722 러빨러가 설칠 수록 러스트 쓰레기임이 더 퍼지죠 나르시갤로그로 이동합니다. 08.26 56 0
2884721 러스트 헬로월드가 nimf를 욕하는 수준은.. ㅎㅎ 나르시갤로그로 이동합니다. 08.26 60 0
2884720 헉 뭐지 사전과제 합격했었네… 꼬치의달인갤로그로 이동합니다. 08.26 80 0
2884719 러스트의 설계 결함: unsafe위에 세워진 safe 신화 나르시갤로그로 이동합니다. 08.26 63 0
2884718 러스트는 근본적으로 설계가 잘못되었습니다 나르시갤로그로 이동합니다. 08.26 81 1
2884716 유데미 강의 추천해주싈? ㅇㅇ(121.137) 08.26 566 0
뉴스 전현무, SNS에 보아 신곡 설정…과거 ‘취중 라방’ 논란 재조명 디시트렌드 08.29
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2