디시인사이드 갤러리

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

갤러리 본문 영역

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

나르시갤로그로 이동합니다. 2025.08.12 04:48:26
조회 103 추천 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 - -
이슈 느린 여행으로 삶의 속도를 찾는 유튜버 꾸준 운영자 25/08/26 - -
AD MD's pick 상반기 인기 노트북 운영자 25/08/26 - -
2882518 런닝 열심인 냥덩이 발명도둑잡기갤로그로 이동합니다. 08.18 60 0
2882517 폭행 당하구 싶당.. ♥냥덩이♥갤로그로 이동합니다. 08.18 63 0
2882515 연봉 2 억 인증. [1] 프갤러(59.16) 08.18 133 0
2882514 유재석·세븐틴·아이유 등 “좌파 연예인 신고하자” 블랙리스트 확산 발명도둑잡기갤로그로 이동합니다. 08.18 106 0
2882512 쇼츠 존나 다크패턴 깔아놓은 새끼들 좃같네 ♥냥덩이♥갤로그로 이동합니다. 08.18 80 0
2882511 .. ♥냥덩이♥갤로그로 이동합니다. 08.18 60 0
2882509 흠.. 담 컨셉 멀루하지? ♥냥덩이♥갤로그로 이동합니다. 08.18 72 0
2882508 근본이 중요함 ♥냥덩이♥갤로그로 이동합니다. 08.18 76 0
2882505 ㅅㅂ 모기도 막는데 날벌레가 왠말이냐 ♥냥덩이♥갤로그로 이동합니다. 08.18 69 0
2882504 갤 수질 에바네 [1] 박민준갤로그로 이동합니다. 08.18 85 0
2882502 4050 썩은물로 부패하는 한국 [1] ♥냥덩이♥갤로그로 이동합니다. 08.18 69 0
2882501 美, FTA 협상 때 주미대사에 “中 손아귀서 살아봐” 폭언 발명도둑잡기갤로그로 이동합니다. 08.18 54 0
2882499 뉴프로 카드앨범 이벤트 참여 ㄱㄱ [2] 헬마스터갤로그로 이동합니다. 08.18 99 0
2882496 ㅅㅂ 날벌레 잇낭? ♥냥덩이♥갤로그로 이동합니다. 08.18 53 0
2882495 야동 ㅊㅊ ♥냥덩이♥갤로그로 이동합니다. 08.18 71 0
2882492 영화 ‘버닝’ 속 종수(유아인)와 벤(스티븐연)의 심리 전격해부 발명도둑잡기갤로그로 이동합니다. 08.18 57 0
2882490 베트남 여행하는데 팁 안주는중 ㅇㅅㅇ ㅇㅇ(223.118) 08.18 65 0
2882488 악플러들 심리 ♥냥덩이♥갤로그로 이동합니다. 08.18 62 0
2882486 아 대형 에러 너무 힘들어요 [7] 아스카영원히사랑해갤로그로 이동합니다. 08.18 123 0
2882484 로봇올림픽에서 본 중국 과학기술의 진짜 힘 발명도둑잡기갤로그로 이동합니다. 08.18 42 0
2882483 나님의 길이 곧 정답이당 ♥냥덩이♥갤로그로 이동합니다. 08.18 66 0
2882482 정답은 없당 나님만의 방식이 있을뿐 ♥냥덩이♥갤로그로 이동합니다. 08.18 50 0
2882480 애널의달성 1./1./2 ♥냥덩이♥갤로그로 이동합니다. 08.18 60 0
2882479 깜박햇넹 ♥냥덩이♥갤로그로 이동합니다. 08.18 60 0
2882477 아스카 DBA와의 찐한 술한잔 하다 [5] 아스카영원히사랑해갤로그로 이동합니다. 08.18 93 0
2882475 게임 계속 만들어야하는데 ㅆㅇㅆ찡갤로그로 이동합니다. 08.18 53 0
2882474 고작 기능하나 만들겠다고 컨트롤러 서비스 dto dao 다새로만들것이냐 [2] 밀우갤로그로 이동합니다. 08.18 76 0
2882471 지금 하고 있는게 뭐냐면 [2] 루도그담당(58.239) 08.18 87 0
2882469 코드쓰는법은 그냥 글 쓰기랑 같다 생각해라 [2] ㅆㅇㅆ(124.216) 08.18 85 0
2882467 하지만 막상 외주에 쫓기다보면 개좆같이 하나의 스크립트에 코드 몰아넣음 [2] ㅆㅇㅆ(124.216) 08.18 77 0
2882466 욕 잘 하는 법 발명도둑잡기갤로그로 이동합니다. 08.18 46 0
2882465 한국에는 아무래도 영어권 자료를 직접 읽기 어렵기때문에 특정 강사의 [2] ㅆㅇㅆ(124.216) 08.18 79 0
2882464 ❤✨☀⭐⚡☘⛩나님 시작합니당⛩☘⚡⭐☀✨❤ ♥냥덩이♥갤로그로 이동합니다. 08.18 51 0
2882462 나도 예전에 저럴 때 가 있었지 루도그담당(58.239) 08.18 62 0
2882461 파이써닉 하다=파이썬은 동적언어라 좆되로 짜면 수정 안되니까 원리따라라 [5] ㅆㅇㅆ(124.216) 08.18 113 0
2882459 세상에서 제일 병신같은 용어가 파이써닉 아닐까? [4] 밀우갤로그로 이동합니다. 08.18 81 0
2882457 파이썬 기초 공부중인데 공부법 ㄱㅊ은지 봐줄사람 [12] ㅇㅇ갤로그로 이동합니다. 08.18 138 0
2882454 JWT <- 이거 발음 '좆'으로 부르는거 맞음? [6] 프갤러(125.131) 08.18 82 0
2882452 하다보면 느끼는게 프론트보다 백엔드가 더 공부할게 적다. [2] ㅆㅇㅆ(124.216) 08.18 112 0
2882451 킹리적 갓심. [2] 넥도리아(119.195) 08.18 78 0
2882450 강선우 보고 딸쳤다 [3] 대림3우성아파트주광(211.209) 08.18 87 0
2882448 ba직무가뭐냐 [2] 프갤러(106.102) 08.18 72 0
2882447 재형 X 민수 Sea of Love 2025 [Remastered] 발명도둑잡기갤로그로 이동합니다. 08.18 57 0
2882446 윤인성 작가 파이선 봤다 프갤러(211.209) 08.18 49 0
2882444 나님 누엇어양..⭐+ ♥냥덩이♥갤로그로 이동합니다. 08.18 57 0
2882443 뻑킹USA 2025 [1] 발명도둑잡기갤로그로 이동합니다. 08.18 59 0
2882436 5년차 백엔드 프붕이 연봉 2천이상 올려서 이직 성공했다... [1] 프갤러(14.12) 08.18 120 0
2882434 나씻주준.. ♥냥덩이♥갤로그로 이동합니다. 08.18 56 0
2882432 언론 징벌적 손해 우려점 발명도둑잡기갤로그로 이동합니다. 08.18 52 0
2882431 냥덩이가 뽑은 2023 올해의 만화 대상 ♥냥덩이♥갤로그로 이동합니다. 08.18 72 0
뉴스 윤민수 ‘이혼 후 동거’ 터진 뒤…아들 윤후, 엄마에게 한 말 디시트렌드 08.27
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2