디시인사이드 갤러리

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

갤러리 본문 영역

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

나르시갤로그로 이동합니다. 2025.08.12 04:48:26
조회 68 추천 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/11 - -
AD 가전디지털, 휴대폰 액세서리 SALE 운영자 25/08/08 - -
공지 프로그래밍 갤러리 이용 안내 [92] 운영자 20.09.28 46306 65
2881450 윤석열이랑 김건희 위치 넥도리아(223.38) 14:51 6 0
2881449 치과 때문에 점심 못 먹었다 발명도둑잡기갤로그로 이동합니다. 14:48 4 0
2881448 면접 보고 왔는데 면접이 걍 의식의 흐름이네 ㅇㅇ갤로그로 이동합니다. 14:46 9 0
2881447 한글 프로그래밍 언어 호랑 발명도둑잡기갤로그로 이동합니다. 14:46 9 0
2881446 해석능력이 중요함 ♥냥덩이♥갤로그로 이동합니다. 14:38 5 0
2881445 쉬는청년, 청년빈곤 << 이거 진짜임 ㅇㅅㅇ?? [2] ㅇㅇ(223.39) 14:34 14 0
2881444 코파일럿씨가 챗티씨보다 낳은것같기도? 헬마스터갤로그로 이동합니다. 14:29 8 0
2881443 ❤✨☀⭐⚡☘⛩나님 시작합니당⛩☘⚡⭐☀✨❤ ♥냥덩이♥갤로그로 이동합니다. 14:29 6 0
2881442 아패 발열 넘 심향 ♥냥덩이♥갤로그로 이동합니다. 14:23 6 0
2881441 ebs 다큐보는데 왜 기초수급자가 저축못하는걸 얘기하는거임?? [4] ㅇㅇ(223.39) 14:20 22 0
2881440 2024년 9급 국어3개영어4개 틀렸는데 ㅇㅇ(14.32) 14:16 13 0
2881439 골치아픈 문제네요. 프갤러(220.84) 13:58 12 0
2881438 오타쿠는 왜 개발을 잘할까 [3] ㅇㅇ(106.101) 13:49 34 0
2881437 개나 소나 다 하는 언어면 그렇게 대단할게 있을까? [2] 프갤러(218.154) 13:36 24 0
2881436 쇼핑몰 만들때 환불기능 꼭 넣어야됨? [1] ㅇㅇ(211.235) 13:29 25 0
2881435 러스트는 왜 저럼? [4] 프갤러(49.165) 13:28 28 0
2881434 개발자 취업 안되는거 ok [1] 프갤러(222.116) 13:27 33 0
2881433 한국노인들이 전세계에 이루어낸게 뭐있길래 남의나라욕하는거임?? 뒷통수한방(1.213) 13:19 13 0
2881432 노인들의 열등감 어떻하누 뒷통수한방(1.213) 13:17 11 0
2881431 부성애 모성애도 존재하는데 '효'라는 단어는 왜 안씀?? 뒷통수한방(1.213) 13:07 16 0
2881430 ❤✨☀⭐⚡☘⛩나님 시작합니당⛩☘⚡⭐☀✨❤ ♥냥덩이♥갤로그로 이동합니다. 13:06 11 0
2881429 누가 나님 냥덩이 만진거야? [1/1] ♥냥덩이♥갤로그로 이동합니다. 13:01 23 0
2881428 휴가쓰고 사천놀러옴 [2] 밀우갤로그로 이동합니다. 12:57 30 0
2881427 오늘 쉬는사람이 승자 [1] ㅇ.ㅇ(122.199) 12:52 30 0
2881426 다음 납품은 중학교 방과후 수업용 유니티 게임 납품. ㅆㅇㅆ(124.216) 12:42 20 0
2881425 R이 학부생~석사 초입 상대로 그래프 장사하니까 돈이 됨 ㅆㅇㅆ(124.216) 12:34 16 0
2881424 지금은 닥치는대로 다 하는데 범위를 좀 줄여야하는데 ㅆㅇㅆ(124.216) 12:31 19 0
2881423 게임,클라,웹,통계 안받는 분야가 없는데 ㅆㅇㅆ(124.216) 12:26 30 0
2881422 일어났다 또 작업 해야한다.. [2] ㅆㅇㅆ(124.216) 12:25 29 0
2881421 의외의 사실: [4] 아스카영원히사랑해갤로그로 이동합니다. 12:24 43 0
2881420 폭풍전야 개멍청한유라갤로그로 이동합니다. 12:21 14 0
2881419 [대한민국] 트럼프 정책 관련되어서- 프갤러(121.172) 12:21 10 0
2881417 인공지능 시대가 이끌어낸 성장산업분야 정리 [1] ♥냥덩이♥갤로그로 이동합니다. 11:51 23 0
2881416 찢재앙 때문에 국가 -5% 이상 국가부도 예상한다 [3] ♥냥덩이♥갤로그로 이동합니다. 11:46 33 1
2881415 새우튀김❤+ ♥냥덩이♥갤로그로 이동합니다. 11:23 14 0
2881414 여행지에 사전조사 / 볼거리들 다 알아보고 가야 잘 즐길 수 있음?? ㅇㅇ(223.39) 11:18 12 0
2881413 알고 있다는 착각 ♥냥덩이♥갤로그로 이동합니다. 11:12 19 0
2881412 ❤✨☀⭐⚡☘⛩나님 시작합니당⛩☘⚡⭐☀✨❤ ♥냥덩이♥갤로그로 이동합니다. 11:07 18 0
2881411 C++로 개발 입문하는거 가능함? [1] ㅇㅇ(106.101) 10:51 47 0
2881410 PwC 삼일회계법인 인턴 하는것에 대해 프갤러(117.111) 10:51 25 0
2881409 그 약이라는게 그렇게 끊기가 힘듬?? 계속 생각나?? [1] ㅇㅇ(223.39) 09:33 39 0
2881408 개발이 근데 그렇게 힘듬? [3] 프갤러(106.101) 08:53 71 0
2881407 시골 터미널 ㅇㅅㅇ [1] 헤르 미온느갤로그로 이동합니다. 08:29 36 0
2881406 태연 ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 08:26 19 0
2881405 하루 한 번 헤르미온느 찬양 헤르 미온느갤로그로 이동합니다. 08:25 30 0
2881404 AI 가 답해주는 포럼 웹사이트 만듬 프갤러(211.55) 08:18 40 0
2881403 무능극좌 찢재앙이 나라를 매국하니 하늘도 분노하는구낭 ♥냥덩이♥갤로그로 이동합니다. 08:14 24 0
2881402 게임 1인 개발 성공하니까 단나더 생각나네 ㅇㅇ(125.182) 06:25 70 1
2881401 ❤✨☀⭐⚡☘⛩나님 시작합니당⛩☘⚡⭐☀✨❤ ♥냥덩이♥갤로그로 이동합니다. 06:18 36 0
뉴스 “작은 엉덩이가 이상형”…최홍만, 여친 이야기하며 ‘눈물’ 디시트렌드 08.13
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2