디시인사이드 갤러리

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

갤러리 본문 영역

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

나르시갤로그로 이동합니다. 2025.08.12 04:48:26
조회 110 추천 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 - -
2884401 월급받아서 마음이 풍족해졌음 꼬치의달인갤로그로 이동합니다. 08.25 64 0
2884398 클로드 프로도 쓸만한가 프갤러(118.235) 08.25 55 0
2884397 뉴프로에 유용한 it 상식글 많이올라오네 [2] 헬마스터갤로그로 이동합니다. 08.25 70 0
2884396 [단독]주한미군 전 남친에게 교제 폭력, 검찰은 강간 빼고 기소 발명도둑잡기갤로그로 이동합니다. 08.25 49 1
2884395 vscode가 대세인가요? [4] 프갤러(61.85) 08.25 82 0
2884394 ❤✨☀⭐⚡☘⛩나님 시작합니당⛩☘⚡⭐☀✨❤ ♥지나가던냥덩이♥갤로그로 이동합니다. 08.25 52 0
2884392 수사기관 고위공직자범죄수사처에 전화함. 벽돌_Ria(119.195) 08.25 48 0
2884391 피궁하당.. ♥지나가던냥덩이♥갤로그로 이동합니다. 08.25 63 0
2884390 저기요 억울한 사실을 적으면 들어주셔야 하는거 아닌가요 무조건 삭제해요. 벽돌_Ria(119.195) 08.25 50 0
2884389 나참 어이가 없어서, 이제 김유식이끝까지 가보자 이거지? 국회앞에서 시위 넥돌_Ria(119.195) 08.25 61 0
2884387 北, 한일정상회담에 "백악관에 구애…자발적 친일 검증 행각" 발명도둑잡기갤로그로 이동합니다. 08.25 69 0
2884386 관세협상 주도한 美 러트닉, MBK 김병주 회장과 긴밀한 관계 발명도둑잡기갤로그로 이동합니다. 08.25 70 0
2884385 민주당 을지로위원회, 대검 찾아 MBK 김병주 구속수사 촉구 발명도둑잡기갤로그로 이동합니다. 08.25 70 0
2884384 윤석열 "이 정권 1년 채 넘기기 힘들 것" 트럼프가 발명도둑잡기갤로그로 이동합니다. 08.25 70 0
2884383 [단독] 연기날 때까지 밟아 한강 쓰레기통에‥잠복 수사에 덜미 발명도둑잡기갤로그로 이동합니다. 08.25 66 0
2884382 '아빠 육아'가 한국 소멸 막는 유일한 대안인 이유 발명도둑잡기갤로그로 이동합니다. 08.25 62 0
2884381 보석이 지가 잘 안다고 착각한 c에서 팩폭 맞으니 멘탈 털린듯요 프갤러(218.154) 08.25 67 0
2884380 2만 3000원에 20대 아내 얻은 사연은?... “인간보다 낫다” 발명도둑잡기갤로그로 이동합니다. 08.25 54 0
2884379 독재자 닮은 트럼프… “노 킹스” 분노의 함성 [세계는 지금] 발명도둑잡기갤로그로 이동합니다. 08.25 66 0
2884378 러스트가 고랑 묶일 레벨 아니지않냐? [1] ㅇㅇ(106.101) 08.25 86 0
2884377 "최악 치닫는 낙동강 녹조... 대통령이 직접 업무지시해야" 발명도둑잡기갤로그로 이동합니다. 08.25 80 0
2884376 졸리당.. ♥지나가던냥덩이♥갤로그로 이동합니다. 08.25 65 0
2884375 나님 이제부터 그레잇 바이브 코더가 되려해요. [2] 헬마스터갤로그로 이동합니다. 08.25 85 0
2884374 ❤✨☀⭐⚡☘⛩나님 시작합니당⛩☘⚡⭐☀✨❤ ♥지나가던냥덩이♥갤로그로 이동합니다. 08.25 46 0
2884371 나님이 일본에 환상이 없는 이유 ♥지나가던냥덩이♥갤로그로 이동합니다. 08.25 64 0
2884370 이실력으로 영어로 먹고살기가눙? ㅇㅇ(58.229) 08.25 57 0
2884369 나님 신의 한 수 ♥지나가던냥덩이♥갤로그로 이동합니다. 08.25 55 0
2884368 깃갤에도 러스트 빠는 글 올렸는데 뭔가 의미있는 비판은 없더군요 [1] 프갤러(218.154) 08.25 84 0
2884367 집중!! ♥지나가던냥덩이♥갤로그로 이동합니다. 08.25 70 0
2884366 난 무섭다 권력자가... 혐오범죄는 갤애들이 하면서 넥도리아(223.38) 08.25 57 0
2884365 김유식 대표하고 10년이나 띠개수 12개 만큼 차이 안날텐데 넥도리아(223.38) 08.25 54 0
2884364 박민준 너가 그럴 자격 있어? 넥도리아(223.38) 08.25 54 0
2884363 바빠서 러스트 전도사인 저는 가봐야겠군요. 알아서 반성하십시오. 프갤러(218.154) 08.25 58 1
2884362 작고 소중행..❤+ ♥지나가던냥덩이♥갤로그로 이동합니다. 08.25 69 0
2884361 보석이 저능함에 저능함을 더해가는군요. c로 oop할 수 있으면 프갤러(218.154) 08.25 59 0
2884360 예전엔 뭘 단체로 잘못 알고 있으면 어떤 씹새가 약을 잘못팔았나 싶었는데 ㅇㅇ갤로그로 이동합니다. 08.25 61 0
2884359 러스트는 현존하는 프로그래밍 언어 중 가장 진보된 언어입니다. 프갤러(218.154) 08.25 65 0
2884358 러빨러는 제 글을 보고도 허위사실을 유포하는군요 나르시갤로그로 이동합니다. 08.25 52 0
2884357 와우 보석이 계속 저능해지는군요. c도 oop 할 수 있습니다. 프갤러(218.154) 08.25 62 0
2884356 러빨러의 진정한 스코틀랜드 논리적 오류 나르시갤로그로 이동합니다. 08.25 69 0
2884355 러스트는 oop 언어가 아닌게 맞습니다. ㅎㅎ 나르시갤로그로 이동합니다. 08.25 56 0
2884354 러스트 배우면 ecs 아키텍처의 게임을 만들 수 있어요. [2] 프갤러(218.154) 08.25 66 0
2884353 깃갤에 올라온 러빨러의 헬로 월드 수준 나르시갤로그로 이동합니다. 08.25 60 0
2884352 국내에서 c# 백엔드 잘 안쓰는 이유가 머임? [6] 뉴진파갤로그로 이동합니다. 08.25 120 0
2884351 '러스트는 oop가 안된다' 저능함의 극치. 프갤러(218.154) 08.25 60 0
2884350 아이폴더폰에 펜 지원 안하면 사줄 이유가 없음 ♥지나가던냥덩이♥갤로그로 이동합니다. 08.25 64 0
2884349 나 보여주면 광고 발명도둑잡기갤로그로 이동합니다. 08.25 55 0
2884348 [대한민국] 김문수 - X를 자산으로 보는 그 눈깔 - 프갤러(121.172) 08.25 60 0
2884347 케데헌 삭제 장면 발명도둑잡기갤로그로 이동합니다. 08.25 66 0
2884346 러스트 배워서 어따씀 [1] 뉴진파갤로그로 이동합니다. 08.25 75 0
뉴스 ‘불후의 명곡-임영웅과 친구들’ 이적·로이킴 등, 장르불문 임영웅의 음악 친구들 총 출동! 디시트렌드 08.29
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2