디시인사이드 갤러리

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

갤러리 본문 영역

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

나르시갤로그로 이동합니다. 2025.08.12 04:48:26
조회 111 추천 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/09/01 - -
AD 가전디지털, 신학기 페스타! 운영자 25/08/29 - -
2883225 떳냐?! [6] 개멍청한유라갤로그로 이동합니다. 08.21 106 0
2883224 나는 MCP 붙여서 원서 책 pdf 넣고 질문함 [3] ㅆㅇㅆ(124.216) 08.21 104 0
2883221 Mcp 좀 붙이면 [1] 루도그담당(118.235) 08.21 105 0
2883220 북한이나 남한이나 민족성이 왜그럴까 ㅋㅋ 커뮤 꾸준히 눈팅하면서 연구하자 뒷통수한방(1.213) 08.21 63 0
2883218 아 씨발 [1] 루도그담당(118.235) 08.21 75 0
2883217 진짜 MCP 직접 만들어서 붙이니까 일이 조오오오온나 편하다 [1] ㅆㅇㅆ(124.216) 08.21 97 0
2883216 빌게이츠도 이재명부류였네 퐁퐁남 ㅋㅋㅋㅋㅋㅋㅋ 뒷통수한방(1.213) 08.21 73 0
2883215 제미나이 MCP 붙이니까 조오오오온나 편하네 [2] ㅆㅇㅆ(124.216) 08.21 112 0
2883214 뉴프로 기프트콘 복귀 ㅅㅅ [9] 헬마스터갤로그로 이동합니다. 08.21 102 0
2883212 어제 몸살나서 진짜 죽는줄암... 얼마만에 아픈건지 모르겠네... ㅇㅇ(114.201) 08.21 66 0
2883210 자러간당~~ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 08.21 56 0
2883206 오늘은 딱 6주년 되는 날입니다.. ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 08.21 77 0
2883205 지피티 이거 너무 쓰레기같음 [1] 루도그담당(58.239) 08.21 99 0
2883203 비행기 ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 08.21 61 0
2883202 태연 ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 08.21 57 0
2883201 하루 한 번 헤르미온느 찬양 헤르 미온느갤로그로 이동합니다. 08.21 75 0
2883196 AI 문제가 코드 크기가 커질수록 애새끼가 병신이라 그런듯 [6] ㅆㅇㅆ(124.216) 08.21 144 0
2883195 인지과학조져라 손발이시립디다갤로그로 이동합니다. 08.21 84 0
2883194 코드 짜고 잘 준비하는데 MIT 보고서에 기업중에 AI로 돈버는곳 5% ㅆㅇㅆ(124.216) 08.21 92 0
2883151 오늘 허탕이네 진짜 아쉽다. 업워크 첫 외주 propasal이거 ㅆㅇㅆ(124.216) 08.21 101 0
2883148 나무위키 이번에 유저 이탈 받아먹으려는 떡밥위키보는데 ㅆㅇㅆ(124.216) 08.21 104 0
2883146 이번에 나무위키 터지더라 그래서 위키 하나 새로 팔려고 업자들이 ㅆㅇㅆ(124.216) 08.21 105 0
2883141 일단 이번에 영어권 외주하는 사람이랑 대화하는데 업워크 여기 봇쓰는듯 ㅆㅇㅆ(124.216) 08.21 71 0
2883140 저스틴 비버가 가장 유명한 연예인 탑 10안에 들어감? 디바(59.28) 08.21 97 0
2883139 요즘 느끼는게 프로그래밍 커뮤니티는 어린애건 늙은이건 정신못차리는듯 ㅆㅇㅆ(124.216) 08.21 95 0
2883138 23년 기준 박사연봉 현실적으로 4200만 선임 [2] ㅆㅇㅆ(124.216) 08.21 138 0
2883133 지금 한국 쉬었음 청년이전에 박사 졸업생 역대급이라 박사급 싸게 [7] ㅆㅇㅆ(124.216) 08.21 123 0
2883131 취준 하는 백수인데 [2] ㅇㅇ(104.28) 08.21 129 0
2883130 인생이란 뭘까 도전하는 재미가 아닐까 ㅆㅇㅆ(124.216) 08.21 70 0
2883128 실베에 환경 미화원인데 돈 벌어서 시기질투하는 사람 저 사람 욕먹은게 [1] ㅆㅇㅆ(124.216) 08.21 119 0
2883126 대부분 저 사람도 늙기전에 어렸을땐 이렇지 않았을텐데 ㅆㅇㅆ(124.216) 08.21 76 0
2883124 내가 느끼는게 대부분 별 볼일 없는 코더로 끝나는구나 10년차 20년차도 [2] ㅆㅇㅆㅆ(124.216) 08.21 124 1
2883120 나 대학 정보보안과 원서 넣을건대 코딩공부 뭐부터 해야해? ㅇㅇ(221.161) 08.21 87 0
2883110 요즘 엠지들 유행패션이라는데 [1] ㅇㅇ(14.5) 08.20 127 0
2883099 부트캠프히는 중인데 여기 애들 학벌이 왜이럼? [2] ㅇㅇ(220.85) 08.20 149 0
2883098 얼마나 할 일이 없으면 프갤러(59.16) 08.20 73 0
2883095 ㅋㅋㅋㅋ나 공기업간다니깐 놀리던 새끼들 ㅋㅋㅋ 프갤러(106.102) 08.20 121 0
2883094 고1 심심해서 만들어본거 공유한다 [1] 프갤러(116.121) 08.20 119 3
2883092 업 워크쪽 이거 씨발 어이가 없노 인도 새끼들 저가중에 저가고 [1] ㅆㅇㅆ(124.216) 08.20 92 0
2883082 게임클라 자주나오는 코테문제 아는사람있나? [2] 프갤러(114.205) 08.20 90 0
2883081 클로드 코드와 함께 쓰는 5가지 필수 MCP 프갤러(121.133) 08.20 93 0
2883079 바이브 코딩만 깔짝댈줄 아는 범부의 질문이 있습니다. 프갤러(210.98) 08.20 104 0
2883073 ` 주님께서 곧 오십니다 -(180.64) 08.20 85 0
2883069 ai 영상 쇼츠 하나로 5천만원 벌수있다던데 [2] zian갤로그로 이동합니다. 08.20 118 0
2883068 이제 경기가 좀 풀리려나보네 ㅇㅇ(122.43) 08.20 83 0
2883067 대통령 사면 이게 말이되냐 [2] 프갤러(61.79) 08.20 101 0
2883066 피할수없다면 합류해라 프갤러(61.79) 08.20 58 0
2883065 헬조센에서 살아남기 프갤러(61.79) 08.20 66 0
2883064 뉴스보니까 돈있고 빽있는 애들 왜 다 명문대인지 알겠더라 프갤러(61.79) 08.20 71 0
2883063 홈서버에 블록체인 노드 운영해볼까 [1] 어린이노무현갤로그로 이동합니다. 08.20 88 0
뉴스 신예 걸그룹 디바엑스(DIVA-X), '케이팝업 차트쇼' 출연 디시트렌드 08.29
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2