디시인사이드 갤러리

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

갤러리 본문 영역

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

나르시갤로그로 이동합니다. 2025.08.12 04:48:26
조회 135 추천 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/10/13 - -
AD 프로게이머가 될테야!! 운영자 25/10/01 - -
2880460 역시나 나님 방식이 맞았꾼 ㅋㅅㅋ ♥냥덩이♥갤로그로 이동합니다. 08.11 84 0
2880459 웹사이트 만들었는데 봐주실 분 있나요 [1] ㅇㅇ(106.241) 08.11 141 0
2880458 gpt는 갈수록 병신같아지네 프갤러(61.75) 08.11 124 1
2880457 러닝이조음 헬스가조음?? [1] 어린이노무현갤로그로 이동합니다. 08.11 118 0
2880456 이 세상은 나님을 위해 돌아가는걸까나앙~? ㅎㅅㅎ ♥냥덩이♥갤로그로 이동합니다. 08.11 95 0
2880455 풉킼 시대가 나님을 도와주는구낭 ㅋㅅㅋ ♥냥덩이♥갤로그로 이동합니다. 08.11 91 0
2880453 초등학생들 볼링 실력 발명도둑잡기갤로그로 이동합니다. 08.11 90 0
2880451 뛰뛰 후유증 2일째 ♥냥덩이♥갤로그로 이동합니다. 08.11 92 0
2880449 김상욱 "윤미향 '나쁜 사람' 생각했는데 알고보니 악마화 발명도둑잡기갤로그로 이동합니다. 08.11 126 0
2880448 또 물어뜯기는 윤미향…마용주 판사는 무슨 짓을 했나 발명도둑잡기갤로그로 이동합니다. 08.11 141 0
2880447 추미애 의원 <윤미향에 대하여 사법 왜곡한 마용주 판사> 발명도둑잡기갤로그로 이동합니다. 08.11 134 0
2880446 불가족천민 이민자 받은 캐나다 근황 ㄹㅇ [1] ♥냥덩이♥갤로그로 이동합니다. 08.11 146 0
2880445 근데 내가 중국인이라도 [1] 아스카영원히사랑해갤로그로 이동합니다. 08.11 112 0
2880444 안철수 “이재명은 매국노” ♥냥덩이♥갤로그로 이동합니다. 08.11 101 0
2880443 퇴근하고 집에 갑니다 루도그담당(118.235) 08.11 88 0
2880442 갑질옹호 좌파 유시민 논란 ♥냥덩이♥갤로그로 이동합니다. 08.11 111 0
2880441 근데 GPT 2년동안 발전한거 코드 품질이 발전한거지 ㅆㅇㅆ(124.216) 08.11 122 0
2880440 KT 장애냐? ㅇㅇ(118.235) 08.11 99 0
2880439 존나 별거없는 프로그래밍 관련 업적 [1] ㅇㅇ(106.101) 08.11 151 0
2880438 애널의달성 2.1/1/ ♥냥덩이♥갤로그로 이동합니다. 08.11 88 0
2880436 으악 타입스크립트 애니 역겹다. 프갤러(218.154) 08.11 114 0
2880435 본인 ai 그림 개발자 될려고 공부중임 [2] ㅇㅇ(106.102) 08.11 134 0
2880434 필연적 구조 논리로 미래를 예견하당 By 나님 ♥냥덩이♥갤로그로 이동합니다. 08.11 84 0
2880433 퇴근 얼마 안남았다 루도그담당(118.235) 08.11 104 0
2880431 KiiiKiii 키키 'DANCING ALONE' 발명도둑잡기갤로그로 이동합니다. 08.11 86 0
2880430 AI가 우리 몰래 비밀언어를 쓴다... 는 것보다 소름끼치는 현 연구결과 발명도둑잡기갤로그로 이동합니다. 08.11 92 0
2880429 특이점 온다 노동해방시대 온다 ㅇㅇ 뒷통수한방(1.213) 08.11 93 0
2880428 긴급] 길냥덩 쥐찢명 잡는 영상 최초 공개 !! ♥냥덩이♥갤로그로 이동합니다. 08.11 91 0
2880427 적당한 추상화는 이해에 도움되는데 [2] 루도그담당(118.235) 08.11 137 0
2880426 GOT7(갓세븐) "A" 발명도둑잡기갤로그로 이동합니다. 08.11 90 0
2880425 나님 스스로에 대해 더 잘 알아야행 ♥냥덩이♥갤로그로 이동합니다. 08.11 94 0
2880424 이게 추상화 계층 레이어가 나뉘어져있다는 이해가 있으면 존나 편함 [3] ㅆㅇㅆ(124.216) 08.11 113 0
2880423 프로그래밍 설계하면서 중요한 청사진은 문법으로 구현되지 않음. ㅆㅇㅆ(124.216) 08.11 117 0
2880421 프로그래밍 아키텍트의 장점이 언어에 구애를 안받음 [2] ㅆㅇㅆ찡갤로그로 이동합니다. 08.11 92 0
2880420 영웅의 여정 발명도둑잡기갤로그로 이동합니다. 08.11 71 0
2880419 프로도: "이런 일이 내 시대에 일어나지 않았더라면 좋았을 텐데요." 발명도둑잡기갤로그로 이동합니다. 08.11 78 0
2880418 개발자란 직업 나만 멋있어보임? [4] 프갤러(211.60) 08.11 168 0
2880417 집정리하다 나온 먼지 덮인 ‘이것’···경매서 9000만원에 팔렸다는데 발명도둑잡기갤로그로 이동합니다. 08.11 83 0
2880416 지피티이거 웹에서 루도그담당(118.235) 08.11 94 0
2880415 젊은애들이 힘든일 안 하려는 이유 발명도둑잡기갤로그로 이동합니다. 08.11 98 0
2880414 지피티 글 삭제도 좀 이상하지 않냐 [1] 프갤러(61.79) 08.11 91 0
2880413 챗지피티는 5나오고나서 애가 더 멍청해진거같네 [2] 공기역학갤로그로 이동합니다. 08.11 133 0
2880412 애초에 마소는 이미 자기네들 홈페이지 완성 예시 다 올려뒀잖아 [3] ㅆㅇㅆ(124.216) 08.11 126 0
2880410 "소고기 사먹을 줄 알았더니"…소비쿠폰 풀리자 대박 난 '이곳' 발명도둑잡기갤로그로 이동합니다. 08.11 85 0
2880409 마소가 만들어논거보면 좋은 점이 [1] 루도그담당(118.235) 08.11 114 0
2880408 특이점 온다 노동해방시대 온다 ㅇㅇ 뒷통수한방(1.213) 08.11 81 0
2880407 Asp.net core 이거 존나 좋은데 [2] 루도그담당(118.235) 08.11 137 0
2880405 내가 프갤에 있는 이유)여기 조차도 안가면 이야기할 곳이 없다 [2] ㅆㅇㅆ(124.216) 08.11 126 0
2880403 적어도 프로그래밍 업종은 중국애들이 시민의식이 더 높음. [2] ㅆㅇㅆ(124.216) 08.11 117 0
2880402 유독 프로그래밍 업계라는 애들이 톡시하지 않냐? [2] ㅆㅇㅆ(124.216) 08.11 115 2
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2