디시인사이드 갤러리

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

갤러리 본문 영역

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

나르시갤로그로 이동합니다. 2025.08.12 04:48:26
조회 132 추천 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/06 - -
AD 프로게이머가 될테야!! 운영자 25/10/01 - -
공지 프로그래밍 갤러리 이용 안내 [96] 운영자 20.09.28 47792 65
2895192 지진 나기전에 출국 했음 ㅅㄱ 류류(61.218) 16:00 12 0
2895191 이재명이 대통령된 후로 공산주의 같은 정책을 못 펼치는구나 ㅎㅎ 나르시갤로그로 이동합니다. 15:01 22 0
2895190 현 정부 경제 정책을 시스템 아키텍처 관점에서 보니 드는 생각 나르시갤로그로 이동합니다. 14:58 29 1
2895189 주가, 환율 착시 효과 나르시갤로그로 이동합니다. 14:47 38 0
2895188 일본 지진때문에 정상화 당하고 있네 [3] 루도그담당(58.239) 14:14 62 0
2895187 앱히키는 씨발놈임 프갤러(118.235) 13:52 20 0
2895185 자료구조를 직접 구현할 일은 별로 없긴 하지만 개념은 중요함 [3] 프갤러(223.39) 13:38 65 0
2895184 스프링 같은 씹좆좆쓰지말고 [2] 루도그담당(58.239) 13:36 51 0
2895183 웹하는데 리액트 앱 라우터 방법도 모르면서 [2] ㅆㅇㅆ찡갤로그로 이동합니다. 13:28 44 0
2895182 C 공부세팅 완 [7] ㅇㅇ갤로그로 이동합니다. 13:27 54 0
2895181 딥시크 야무진데? [3] ㅇㅇ갤로그로 이동합니다. 13:19 35 0
2895180 항상 느끼지만 호기심을 가지는 건 좋다만 그 호기심을 타인에게 강요를 [5] ㅆㅇㅆ(124.216) 13:10 52 0
2895179 예전에 대학원서 리눅스 배울때 느꼈지만 리눅스의 공짜는 공짜는 아님 ㅆㅇㅆ(124.216) 13:05 35 0
2895178 자료구조 거의 쓸 데 없긴하지. 쓸데 있다는 애들은 저수준 하는애들이고 [2] ㅆㅇㅆ(124.216) 13:02 56 0
2895177 IPEA 정보처리기사협회 전산실 면접보러오라는데 프갤러(220.65) 12:33 20 0
2895176 자료구조란걸 배웠는데 그래서 뭐 어쩌란거고 제가 뭘 배운건가요?? [4] ㅇㅇ(223.38) 12:23 57 0
2895175 짱깨들이 관광으로 한국에 도움이 된다고? [2] ♥덩냥이♥갤로그로 이동합니다. 12:22 25 0
2895174 넷플릭스도 유튜브 정도의 검색기능이 없군요 [2] 헬마스터갤로그로 이동합니다. 12:19 22 0
2895172 요즘 리눅스 데스크톱은 오히려 능지가 떨어지는거같음 [4] 파란빤스갤로그로 이동합니다. 11:55 39 0
2895168 극우추적단을 알아보쟈⭐+ ♥덩냥이♥갤로그로 이동합니다. 11:22 32 0
2895167 ❤✨☀⭐⚡☘⛩나님 시작합니당⛩☘⚡⭐☀✨❤ [2] ♥덩냥이♥갤로그로 이동합니다. 11:14 38 0
2895160 아잇씨팔 또 쓰레기 같은 타입스크립트 보려니 속이 울렁거립니다. 프갤러(218.154) 09:03 39 0
2895159 대추 ㅇㅅㅇ [1] 헤르 미온느갤로그로 이동합니다. 08:55 27 0
2895158 태연 ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 08:53 28 1
2895157 아침부터 움직이니까 속이 안좋네요 프갤러(218.154) 08:52 20 0
2895156 하루 한 번 헤르미온느 찬양 [2] 헤르 미온느갤로그로 이동합니다. 08:52 41 0
2895154 ai 를 무시하는 사람과 의존하는 사람 모두 위험합니다 [4] 프갤러(223.39) 07:36 59 1
2895151 오오 마인드 적페 브레이버갤로그로 이동합니다. 05:05 26 0
2895149 우리은행에 통합된 민족계열 동일은행 발명도둑잡기(118.216) 02:58 20 0
2895147 77개 해외 무관사무실 68% 도청 등 보안장비 미흡 발명도둑잡기(118.216) 02:40 21 0
2895146 박혁거세 [1] 발명도둑잡기(118.216) 02:37 68 0
2895145 Z-A 일주일 기다리자 꽃길 포켓몬스터레전드 Z-A... 오늘 저녘이면 넥도리아2025(220.74) 02:14 20 0
2895143 피크민 아기 발명도둑잡기(118.216) 02:00 18 0
2895142 아 개씨발 모기 [2] ♥덩냥이♥갤로그로 이동합니다. 01:51 85 0
2895141 트레이더로 20조 번 러시아 수학자 발명도둑잡기(118.216) 01:50 27 0
2895134 오늘 출근 하시는 분 부자 되실 듯 발명도둑잡기(118.216) 01:25 26 0
2895124 음악 책과 SAT 점수 [3] 발명도둑잡기(118.216) 01:10 38 0
2895122 안예은 AHN YE EUN - 열 달 아흐레 1009 [1] 발명도둑잡기(118.216) 00:37 30 0
2895121 노시계도 놀란 찢시계 논란 ㄷㅅㄷ [1] ♥덩냥이♥갤로그로 이동합니다. 00:36 40 0
2895120 23억 로또 당첨되고 실제 사용처 정리해봤음... [1] ㅇㅇ(223.38) 00:36 46 0
2895118 murmulator 발명도둑잡기(118.216) 00:05 19 0
2895116 PICO-56 65c02 컴퓨터 발명도둑잡기(118.216) 00:04 19 0
2895114 라스베리파이 피코로 286 만들기 발명도둑잡기(118.216) 00:02 27 0
2895111 주 4.5일제를 왜 반대하는거임? [1] 야옹아저씨갤로그로 이동합니다. 10.09 59 1
2895110 성소수자는 미인계에 약한 것 같아 보인다. [1] 발명도둑잡기(118.216) 10.09 46 0
2895108 글 쓰고 자거 싶은데.. 이미 체력이.. [2] ♥덩냥이♥갤로그로 이동합니다. 10.09 90 0
2895107 오랜만에 왔는데 갤이 더 씹창이 나있구나 [5] 아스카영원히사랑해갤로그로 이동합니다. 10.09 73 1
2895106 날벌레들은 모기약으로 안 죽넹.. [3] ♥덩냥이♥갤로그로 이동합니다. 10.09 88 0
2895099 [냥덩칼럼] 삶은 죽음으로 시작된다 [5] ♥덩냥이♥갤로그로 이동합니다. 10.09 92 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2