디시인사이드 갤러리

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

갤러리 본문 영역

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

나르시갤로그로 이동합니다. 2025.08.12 04:48:26
조회 93 추천 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/18 - -
AD 전자제품 세일쇼! 운영자 25/08/19 - -
2881852 무제..ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 08.16 47 0
2881850 태연 ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 08.16 31 0
2881849 하루 한 번 헤르미온느 찬양 헤르 미온느갤로그로 이동합니다. 08.16 48 0
2881848 프론트보단 무조건 백엔드임? [4] 의식의문갤로그로 이동합니다. 08.16 139 0
2881846 육체노동보다 더 힘든 학습 노동 | 경쟁교육은 야만이다 ㅇㅇ(210.100) 08.16 40 0
2881844 ai도 써보면 ㅇㅇ(114.205) 08.16 77 0
2881842 님들 저 졸업작품 주제 추천좀 ㅠㅠㅠㅠㅠㅠㅠㅠ 공기역학갤로그로 이동합니다. 08.16 70 0
2881840 winapi는 ui책이 명성1등먹은게 말이안됨 공기역학갤로그로 이동합니다. 08.16 71 0
2881838 요즘 공부한 것들 구현한것들 yaml 명세로 넣는중 [2] ㅆㅇㅆ(124.216) 08.16 71 0
2881836 The Trum.. Show 발명도둑잡기갤로그로 이동합니다. 08.16 47 0
2881835 내일 노래방 관련 소설, 영화 실마리를 쓸 예정이다 발명도둑잡기갤로그로 이동합니다. 08.16 35 0
2881834 남자들이 치근대지 않는, 여성에게 적합한 직업 [1] 발명도둑잡기갤로그로 이동합니다. 08.16 88 0
2881832 성형외과에서 일했던 사람이 했었던 충격적인 업무 발명도둑잡기갤로그로 이동합니다. 08.16 48 0
2881831 트럼프의 달러 무기화 속에 전세계는 지금 달러와 이혼 중 발명도둑잡기갤로그로 이동합니다. 08.16 70 0
2881830 음기 충전 발명도둑잡기갤로그로 이동합니다. 08.16 54 0
2881829 영화 <웨폰> 인기래서 생각나는 예전 글 발명도둑잡기갤로그로 이동합니다. 08.16 36 0
2881828 유심없는 폰으로 테러글 올리면 어케잡냐는애 있었는데 밀우갤로그로 이동합니다. 08.16 50 0
2881827 DAVICHI '그걸 사랑이라고 말하지마' 발명도둑잡기갤로그로 이동합니다. 08.16 30 0
2881824 <기억의 미래> 발명도둑잡기갤로그로 이동합니다. 08.16 31 0
2881823 오늘의 작사 실마리: '트'란 제목의 노래 발명도둑잡기갤로그로 이동합니다. 08.16 39 0
2881821 음양론에 따른 노래 구분 발명도둑잡기갤로그로 이동합니다. 08.16 24 0
2881820 "새벽 5시40분 입장" 장범준, '미라클 모닝' 공연한다 발명도둑잡기갤로그로 이동합니다. 08.16 30 0
2881807 관심경제의 부작용과 자본주의 관계 발명도둑잡기갤로그로 이동합니다. 08.16 38 0
2881801 나는요. 24년 2월 24일 탈당했었어요. [1] 넥도리아(175.196) 08.16 79 0
2881800 요즘 코딩 배운다는게 이런거냐 [2] ㅇㅇ(220.89) 08.16 112 0
2881799 하루에 3경조줄 감사의 코딩 공기역학갤로그로 이동합니다. 08.16 73 0
2881798 스프링5 처음 시작하면 추천할만한 글 프갤러(121.133) 08.15 82 0
2881796 세대론, '노인을 위한 나라는 없다' 관련 생각나는 예전 글 발명도둑잡기갤로그로 이동합니다. 08.15 70 0
2881793 오늘 김치찜 먹었는데 맛있더라 ㅇㅅㅇㅋㅋ ㅇㅇ(223.39) 08.15 43 0
2881792 방금 전 트위터 자동 추천 발명도둑잡기갤로그로 이동합니다. 08.15 48 0
2881790 오늘의 소설, 영화 실마리: CIA 신고열풍 신고했다 간첩으로 포섭 [2] 발명도둑잡기갤로그로 이동합니다. 08.15 60 0
2881785 에구궁 허리야.. ♥냥덩이♥갤로그로 이동합니다. 08.15 64 0
2881783 챗티너무 느려서 코파일럿 제미나이쓰게된다 [2] 헬마스터갤로그로 이동합니다. 08.15 92 0
2881782 근데 지금 2030세대가 아버지 세대보다 [1] ㅇㅇ(211.234) 08.15 80 0
2881781 ♥냥덩이♥갤로그로 이동합니다. 08.15 54 0
2881779 일하는거 존나 쉬운데 프갤러(121.139) 08.15 76 1
2881778 변영주 감독 <낮은 목소리> 발명도둑잡기갤로그로 이동합니다. 08.15 47 0
2881777 광복과 이재명 [1] 발명도둑잡기갤로그로 이동합니다. 08.15 83 0
2881776 Java 전문가 마스터 봐라. [1] 프갤러(59.16) 08.15 88 0
2881773 양양 후기 ♥냥덩이♥갤로그로 이동합니다. 08.15 81 0
2881772 여름바다는 확실히 습하당 ♥냥덩이♥갤로그로 이동합니다. 08.15 56 0
2881771 도와주세용ㅠ 11갤로그로 이동합니다. 08.15 42 0
2881770 나님이 마시는 술⭐+ ♥냥덩이♥갤로그로 이동합니다. 08.15 56 0
2881769 유튜브 뮤직 알고리즘 너무 구리더라 [2] 헬마스터갤로그로 이동합니다. 08.15 71 0
2881768 썩은내 적은 쓰레기에서 극심한 쓰레기가 됩니다. 프갤러(220.84) 08.15 42 0
2881766 윤미향 비난의 상당수 원인은 성매수, 성추행에 대한 죄책감 때문이다 발명도둑잡기갤로그로 이동합니다. 08.15 46 0
2881765 신봉선과 냥덩이의 결혼을 허가합니다 [2] 발명도둑잡기갤로그로 이동합니다. 08.15 52 0
2881764 오늘의 소설 영화 실마리: FBI, CIA 등에 마약 수사로 포섭된 래퍼 발명도둑잡기갤로그로 이동합니다. 08.15 46 0
2881763 게임 개발 공부하려고 프리서버 뜯어보고 있는데 ㅇㅇ갤로그로 이동합니다. 08.15 58 0
2881762 AI 나오고 느끼는 것이 AI가 최고의 스승이다. [2] ㅆㅇㅆ(124.216) 08.15 96 0
뉴스 '톡파원 25시' 호주 시드니 & 미국 옐로스톤 국립공원, 뷰 맛집 완전 정복! 디시트렌드 08.18
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2