디시인사이드 갤러리

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

갤러리 본문 영역

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

나르시갤로그로 이동합니다. 2025.08.12 04:48:26
조회 113 추천 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 - -
2885462 Ada, Rust: '논리적 정확성' vs '메모리 무결성' 나르시갤로그로 이동합니다. 08.30 82 0
2885461 러스트 특) 자바가 널리 사용되기까지 불과 2년 걸렸습니다. 나르시갤로그로 이동합니다. 08.30 75 0
2885459 잠이 안 온당.. ♥냥덩이♥갤로그로 이동합니다. 08.30 93 0
2885458 나이 먹음 먹을수록 메이플이 질리고 재미없어지는듯... ㅇㅇ(223.38) 08.30 58 0
2885456 우크라이나 영토 마음대로 협의하는 트럼프와 푸틴, 한반도도 이렇게 당하나 발명도둑잡기갤로그로 이동합니다. 08.30 58 0
2885452 좆같네 진짜 ㅇㅅㅇ 잠이 왜 안오지 하... ㅇㅇ(223.38) 08.30 65 0
2885444 러스트는 게임 개발에 적합한 언어가 아닙니다. 나르시갤로그로 이동합니다. 08.30 90 0
2885441 . [1] ♥냥덩이♥갤로그로 이동합니다. 08.30 91 0
2885437 냥덩아 문재인 찢재명 김정숙은 욕안하누??? 뒷통수한방(1.213) 08.30 76 0
2885436 김건희 집사 게이트③ '사면초가' 카카오 모빌리티의 30억 투자 발명도둑잡기갤로그로 이동합니다. 08.30 66 0
2885434 쿠팡 대리점 내부 자료 입수 ③ "임원 상대로 유흥업소 접대" 녹취 발명도둑잡기갤로그로 이동합니다. 08.30 57 0
2885433 김건희 집사 게이트 : 카카오는 정말 몰랐나 발명도둑잡기갤로그로 이동합니다. 08.30 68 0
2885431 금주하면 인생 달라짐 ?? 피곤에서 벗어날 수 있음?? ㅇㅇ(223.38) 08.29 59 0
2885430 나님 탈갤합니당❤+ [6] ♥냥덩이♥갤로그로 이동합니다. 08.29 161 0
2885428 선거 두 번만 치르면 30대남 40대 되고 [1] 발명도둑잡기갤로그로 이동합니다. 08.29 79 0
2885426 내가 권력가지고 돈가지면 제일하고싶은게 권력자들 재벌들 썰어죽이는거 ㅇㅇ 뒷통수한방(1.213) 08.29 65 0
2885424 비가 와도 내 방은 덥다 발명도둑잡기갤로그로 이동합니다. 08.29 59 0
2885423 디아블로 개발자 노조 결성 발명도둑잡기갤로그로 이동합니다. 08.29 65 0
2885421 모기 있는듯.. ♥냥덩이♥갤로그로 이동합니다. 08.29 85 0
2885420 내란당은 실체가 없다는 것입니다. 공기가 마치 빈 것처럼. 넥도리아(220.74) 08.29 61 0
2885419 공기가 애매하게 축축한.. ♥냥덩이♥갤로그로 이동합니다. 08.29 83 0
2885418 기안84 수상한 건 프갤러(211.210) 08.29 68 0
2885417 벌렁벌렁 ♥냥덩이♥갤로그로 이동합니다. 08.29 98 0
2885416 김완선 - '가장무도회' 발명도둑잡기갤로그로 이동합니다. 08.29 58 0
2885415 빌게이츠 방한 [2] 발명도둑잡기갤로그로 이동합니다. 08.29 121 1
2885414 나님이 괴물을 만든걸까..? ♥냥덩이♥갤로그로 이동합니다. 08.29 65 0
2885410 뀨❤+ [1] ♥냥덩이♥갤로그로 이동합니다. 08.29 115 0
2885409 [애니뉴스] 귀인환등초 20화 스토리 감상 및 분석 프갤러(121.172) 08.29 55 0
2885408 나님 누엇어양❤+ [1] ♥냥덩이♥갤로그로 이동합니다. 08.29 117 0
2885405 [애니뉴스] 사이트 복구 안내 프갤러(121.172) 08.29 64 0
2885402 오늘의 발명 실마리: DOS에서 VESA VBE 2.0, 3.0 에뮬 [3] 발명도둑잡기갤로그로 이동합니다. 08.29 76 0
2885401 미국에도 러스트무지성 빠는놈들 많아? [4] 밀우갤로그로 이동합니다. 08.29 101 0
2885400 UEFI에서 CSM 없이 도스 지원 biefircate 발명도둑잡기갤로그로 이동합니다. 08.29 52 0
2885397 흠.. 절묘하군.. [2] ♥냥덩이♥갤로그로 이동합니다. 08.29 121 0
2885393 내가 rust 쓰는 이유 [6] 프갤러(119.201) 08.29 140 1
2885392 와 진짜 ai 맡기니깐 생산력이 말도안된다 [1] ㅇㅇ(221.146) 08.29 113 0
2885390 문재인 이재먕 보유국은 사용하는데 왜 이준석보유국은 사용안함??? [1] 뒷통수한방(1.213) 08.29 73 1
2885388 러스트 엄청 빠는 입장이지만 솔직히 추천할게 못됩니다. [2] 프갤러(27.172) 08.29 145 0
2885387 러스트 배우기 어려움? 프갤러(220.79) 08.29 73 0
2885386 r&d예산 세계최고 또 증액 경재성장률은 씹운지 ㅋㅋㅋㅋ 뒷통수한방(1.213) 08.29 62 0
2885385 후스넘버 개인정보 털렸다는게 무슨 말이죠? 발명도둑잡기갤로그로 이동합니다. 08.29 69 0
2885384 애널의달성 2./4// ♥냥덩이♥갤로그로 이동합니다. 08.29 78 0
2885382 아이유 이효리 손절 배척? 불화설? 진실은? [1] ♥냥덩이♥갤로그로 이동합니다. 08.29 121 0
2885381 오늘의 발명 실마리: 프리스타일 랩 실시간 시각화 장치 발명도둑잡기갤로그로 이동합니다. 08.29 51 0
2885377 내란세력이 반성하나 안하고 노동자들 일하는데 윤석열배신 [1] 넥도리아(223.38) 08.29 100 0
2885375 누가 더 유명함 저스틴 비버 네이마르 주니오르 디바(59.28) 08.29 75 0
2885374 내 여자친구 사진이다 어떠니 [1] 메쿠이료갤로그로 이동합니다. 08.29 126 0
2885369 좆됐다. 귀에 염증 찼다. [2] 프갤러(218.154) 08.29 85 0
2885368 캡챠인줄알았는데 [2] ㅇ.ㅇ(59.151) 08.29 98 0
2885366 19살에 실력 좋은 애들은 도대체 어케 하는거임? ㅇ ㅅㅇ; [1] 프갤러(60.196) 08.29 118 0
뉴스 신승훈, 데뷔 35주년 단독 콘서트 11월 개최 디시트렌드 10:00
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2