디시인사이드 갤러리

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

갤러리 본문 영역

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

나르시갤로그로 이동합니다. 2025.08.12 04:48:26
조회 99 추천 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 - -
2881722 노력 루피 사진 원본 찾았다 발명도둑잡기갤로그로 이동합니다. 08.15 50 0
2881721 신경망 설계 책 읽고 있는중 [2] ㅆㅇㅆ(124.216) 08.15 90 0
2881719 의외로 건강에 안 좋은 스포츠 [2] 발명도둑잡기갤로그로 이동합니다. 08.15 87 0
2881718 저장용 [2] ♥냥덩이♥갤로그로 이동합니다. 08.15 79 0
2881716 5성급 호텔 불편한점 ♥냥덩이♥갤로그로 이동합니다. 08.15 63 0
2881715 오늘도 프붕이와 대한민국 아저씨들의 안전과 평화를 기원합니다. [3] 넥도리아(223.38) 08.15 65 0
2881713 류큐 류류 봇 확실 넥도리아(223.38) 08.15 51 0
2881712 존잘 류류의 멋진 인생⭐+ ♥냥덩이♥갤로그로 이동합니다. 08.15 63 0
2881710 나님이 좋아하는 회 종류 [1] ♥냥덩이♥갤로그로 이동합니다. 08.15 71 0
2881709 류류 니애미 윤미향 ㅅㄱ [1] ♥냥덩이♥갤로그로 이동합니다. 08.15 86 0
2881707 나님 애널 저녁은 해산물❤+ 경포대 ㅌㅊ ♥냥덩이♥갤로그로 이동합니다. 08.15 55 0
2881706 다큐3일 안동역 엔딩 뭐노 [2] 아스카영원히사랑해갤로그로 이동합니다. 08.15 119 0
2881702 갓철수⭐+ [1] ♥냥덩이♥갤로그로 이동합니다. 08.15 58 0
2881700 이건 어느 만화에 나오는 츠자일까..ㅇㅅㅇ [2] 헤르 미온느갤로그로 이동합니다. 08.15 71 0
2881699 태연 ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 08.15 63 0
2881698 하루 한 번 헤르미온느 찬양 헤르 미온느갤로그로 이동합니다. 08.15 80 0
2881696 다들 빨간날을 어찌보내시고있나요 [1] 루도그담당(118.235) 08.15 71 0
2881695 광복80주년 기념프로젝트 뮤지컬 <우키시마마루> 발명도둑잡기갤로그로 이동합니다. 08.15 60 0
2881694 AI가 쉽게 설명 못하는거 AI도 그 개념 이해 못한거지? [6] 재현갤로그로 이동합니다. 08.15 96 0
2881693 나님 어그로 끌려고 모모 괴롭히는거ㅜ유치해 [3] ♥냥덩이♥갤로그로 이동합니다. 08.15 86 0
2881692 선관위 부정조작선거 프로그램 발견 [1] ♥냥덩이♥갤로그로 이동합니다. 08.15 95 0
2881690 모모 존못 프갤러(211.246) 08.15 58 0
2881689 rs232 통신이 자꾸 끊김 [4] 프갤러(221.167) 08.15 142 0
2881686 광복절이다 발명도둑잡기갤로그로 이동합니다. 08.15 52 0
2881685 개발자 초봉 6천 진짜냐 [6] 프갤러(121.185) 08.15 149 0
2881684 여름 바다 인증⭐+ ♥냥덩이♥갤로그로 이동합니다. 08.15 76 0
2881683 오덕페이트 근황으로 보는 자본주의 발명도둑잡기갤로그로 이동합니다. 08.15 71 0
2881682 챗티씨 왜케 느려터졌냐 [2] 헬마스터갤로그로 이동합니다. 08.15 80 0
2881680 님들아 이 2개 어떻게 하는거임? [1] ㅇㅇ갤로그로 이동합니다. 08.15 79 0
2881678 러스트도 모르면서 러스트 찬양하는 사람들 아직 많?? 나르시갤로그로 이동합니다. 08.15 75 0
2881677 편쿨섹좌 현충원 방문 ♥냥덩이♥갤로그로 이동합니다. 08.15 62 0
2881676 냥덩이를 키워야하는 이유❤+ ♥냥덩이♥갤로그로 이동합니다. 08.15 61 0
2881675 술좀 조절해야겠어요;; 일상생활이 피곤하고 힘드네요... ㅇㅇ(223.39) 08.15 53 0
2881674 ❤✨☀⭐⚡☘⛩나님 시작합니당⛩☘⚡⭐☀✨❤ ♥냥덩이♥갤로그로 이동합니다. 08.15 69 0
2881673 나님 시간날때 이재명 심리분석글 하나 써줌 ♥냥덩이♥갤로그로 이동합니다. 08.15 83 0
2881672 나님 앙⭐+ 했어양❤+ ♥냥덩이♥갤로그로 이동합니다. 08.15 66 0
2881671 더불어민주당 불법정치자금 특검,전수조사 필요 ♥냥덩이♥갤로그로 이동합니다. 08.15 68 0
2881670 더불어민주당 이춘석 차명거래 부정비리의혹 전격 소환 조사 ♥냥덩이♥갤로그로 이동합니다. 08.15 63 0
2881669 평소 정치성향 아예 안 드러내는 사람들도 이재명 손절침 ㄷㅅㄷ ♥냥덩이♥갤로그로 이동합니다. 08.15 78 0
2881668 2찢명 범죄자 사면남용 사태 ㄹㅇ 여파 존나 심상치 않네 ♥냥덩이♥갤로그로 이동합니다. 08.15 75 0
2881629 지금 이상태가 최상. 넥도리아(220.74) 08.15 87 0
2881594 역시 랩 메모리 보조기억장치? 주기억장치는 아닐듯 넥도리아(220.74) 08.15 76 0
2881589 와 이거 Bolt.diy 이거 상당히 잘만들었네 ㅆㅇㅆ(124.216) 08.15 92 0
2881584 고장나서 샀어. 근데 단선된걸러 연결하고 있었어 혹시 넥도리아(220.74) 08.15 63 0
2881579 화면 부팅안 되고 새 랜선 설치해서 물어볼건데 911테러 의심 넥도리아(220.74) 08.15 67 0
2881578 내란지원금으로 내 젠폰4 살리고 싶다. 넥도리아(220.74) 08.15 78 0
2881575 러스트는 지능의 문제가 아니라 설계 철학의 문제이다. [3] 나르시갤로그로 이동합니다. 08.15 137 0
2881574 나님 깻당? ♥냥덩이♥갤로그로 이동합니다. 08.15 84 0
2881572 술 진탕 마셨는데 루도그담당(118.235) 08.15 83 0
2881571 음기 충전 발명도둑잡기갤로그로 이동합니다. 08.15 78 0
뉴스 웹드라마 '최애가 나타났다!' 아이돌 김강민과 열혈팬 박진우의 아찔한 로맨스! 메인 예고·포스터 공개! 디시트렌드 08.22
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2