디시인사이드 갤러리

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

갤러리 본문 영역

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

나르시갤로그로 이동합니다. 2025.08.12 04:48:26
조회 145 추천 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/20 - -
AD 할로윈 슈퍼위크~!! 운영자 25/10/23 - -
2882023 김성수 장대호는 전생에 살해당해서 좇센에서 태어난거임 프갤러(1.213) 08.16 136 0
2882022 이거 드랍 테이블 로직에 bias 보정을 안한거 같은데 해명하십시오 헬님 [2] ㅆㅇㅆ(124.216) 08.16 164 0
2882021 헬마님 카드뽑기에 헬마와 멍유 테이블을 만진것 같은데 맞습니까..? ㅆㅇㅆ(124.216) 08.16 129 0
2882020 클리앙 가끔 눈팅해야하는 이유 ) 인간이란 종족을 이해할수있음 ㅋㅋㅋ 프갤러(1.213) 08.16 115 0
2882018 개발귀 카드 뽑고 커피 기프트콘 타갈 용자 정말 없냐? [3] 헬마스터갤로그로 이동합니다. 08.16 190 0
2882017 파티원 모집 [2] 프갤러(156.59) 08.16 206 0
2882016 뿡야냄새 개구리넹 ♥냥덩이♥갤로그로 이동합니다. 08.16 131 0
2882014 나님 도착⭐+ ♥냥덩이♥갤로그로 이동합니다. 08.16 134 0
2882011 중국이 문제점이 산업 패키지가 한 국가 안에서만 실행되기때문에 ㅆㅇㅆ(124.216) 08.16 152 0
2882010 자바가 잣 같은 이유. 이번에 알았다. 프갤러(59.16) 08.16 121 0
2882009 중국 싫어하는 건 그럴 수 있는데 문제는 아무런 접점도 없이 [2] ㅆㅇㅆ(124.216) 08.16 145 0
2882005 ❤✨☀⭐⚡☘⛩나님 시작합니당⛩☘⚡⭐☀✨❤ ♥냥덩이♥갤로그로 이동합니다. 08.16 132 0
2882004 난 스레드 이런데서 중국 욕하는 세력들 이해가 안감 [2] 어린이노무현갤로그로 이동합니다. 08.16 190 0
2882003 채용공고 공통 사항, 융합 화합 소통 침목 동호회 프갤러(59.16) 08.16 139 0
2882002 에이핑크-노노노 발명도둑잡기갤로그로 이동합니다. 08.16 143 0
2882001 슬슬 컴퓨터 바꿔야겠는데 ㅆㅇㅆ찡갤로그로 이동합니다. 08.16 129 0
2881999 음기 충전 발명도둑잡기갤로그로 이동합니다. 08.16 93 0
2881998 과제 좀만 더 신경쓸걸.. ㅇㅅㅇ [2] 어린이노무현갤로그로 이동합니다. 08.16 200 0
2881997 국내 it 채용 특 ) 응 너없어도 외노자쓰면 돼~~응 ai쓰면돼~~ 뒷통수한방(1.213) 08.16 167 0
2881996 gpt로 코딩 어케함? ㅇㅇ(106.102) 08.16 142 0
2881995 [박진영의 사회심리학] 약자 혐오가 횡행하는 이유 발명도둑잡기갤로그로 이동합니다. 08.16 117 0
2881994 사치·부패의 왕국, 검찰은 ‘김건희 집사’였다 [논썰] 발명도둑잡기갤로그로 이동합니다. 08.16 122 0
2881993 코노가야징 [2] 어린이노무현갤로그로 이동합니다. 08.16 142 0
2881992 자칭 it강국인데 할게임도 없음 뒷통수한방(1.213) 08.16 120 0
2881991 님들 저 졸업작품 주제 추천 부탁드려요... 공기역학갤로그로 이동합니다. 08.16 112 0
2881990 외노자개발자들 쓰니깐 확실히 좇센이 it강국이누 ㅋㅋㅋ 뒷통수한방(1.213) 08.16 123 0
2881985 특이점 온다 노동해방시대 기본소득제도시대가 온다 ㅇㅇ [1] 뒷통수한방(1.213) 08.16 111 0
2881984 우린 모두 연결되어있어 [3] ♥냥덩이♥갤로그로 이동합니다. 08.16 145 0
2881983 실베 2시간보다가 정신병 생길 것 같음 ㅇㅅㅇ ㅇㅇ(223.39) 08.16 119 0
2881973 키 크면 위액도 많아서 소화 잘됨?? ㅇㅇ(223.39) 08.16 117 0
2881970 <밀양> 발명도둑잡기갤로그로 이동합니다. 08.16 88 0
2881969 오늘의 소설, 영화 실마리: 래퍼와 만화 캐릭터간의 디쓰전 발명도둑잡기갤로그로 이동합니다. 08.16 103 0
2881961 뽀뽀❤+는 맛잇당⭐+ [1] ♥냥덩이♥갤로그로 이동합니다. 08.16 134 0
2881958 내 스펙이면 여기라도 가는게 맞냐 [2] 프갤러(119.66) 08.16 272 0
2881954 어릴때 이 야구스티커 모으던 햏자들 정말없나요? 헬마스터갤로그로 이동합니다. 08.16 131 0
2881950 [대한민국] 광화문 대규모 집회 + 반국가 세력 개딸 프갤러(121.172) 08.16 103 0
2881949 콘넥터 발명도둑잡기갤로그로 이동합니다. 08.16 116 0
2881947 한단계 더 진화함 프갤러(61.79) 08.16 99 0
2881944 깃허브에있는 오픈소스는 어케실행하는건가요 [1] ㅇㅇ(211.37) 08.16 128 0
2881940 <사랑의 코딩법> 한대서 생각나는 예전 글 발명도둑잡기갤로그로 이동합니다. 08.16 133 0
2881939 누가 개발자 초봉 6천이래 발명도둑잡기갤로그로 이동합니다. 08.16 186 0
2881938 Ai가 다루는 컨텍스트가 인간이 다루는 컨텍스트용량을 뛰어넘으면 [1] ㅇㅇ(106.241) 08.16 127 0
2881933 압구정동 오렌지족의 이면 달동네 드라마 <서울의 달> 발명도둑잡기갤로그로 이동합니다. 08.16 138 0
2881932 안철수 “매국 사면 앞잡이들엔 정의봉이 약”…민주당 논평에 맞불 발명도둑잡기갤로그로 이동합니다. 08.16 118 0
2881931 멍청한 사람이 늘어나는건 그래야 권력자들이 쉽게 해처먹기 때문 프갤러(221.146) 08.16 118 0
2881929 가난해서 평생 유럽여행 한번 못가봄... 평생 동남아나 돌아다닐듯 ㅇㅇ(223.39) 08.16 153 0
2881928 "6개월 일하고 '1억' 훌쩍"… 삼성도 놀랄 신의 직장 어디 발명도둑잡기갤로그로 이동합니다. 08.16 163 0
2881927 "일본 순시선, 광복절에도 독도 인근 해상에 출몰" 발명도둑잡기갤로그로 이동합니다. 08.16 123 0
2881924 안양시청 건설과 에 간다. 넥도리아(223.38) 08.16 106 0
2881923 자기 개성이 뚜렷한 1998 압구정동 X세대 오렌지족 [1] 발명도둑잡기갤로그로 이동합니다. 08.16 128 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2