CWN(CHANGE WITH NEWS) - Julia, 새로운 스레딩 인터페이스 포함된 알파 릴리스 v1.3.0 발표

  • 맑음상주8.6℃
  • 구름조금강릉11.0℃
  • 맑음정선군2.6℃
  • 맑음강진군6.6℃
  • 맑음제천3.0℃
  • 구름많음남원5.9℃
  • 박무북부산5.6℃
  • 맑음영주0.9℃
  • 안개청주8.1℃
  • 맑음해남5.6℃
  • 맑음태백5.6℃
  • 구름많음군산8.3℃
  • 맑음진주3.2℃
  • 맑음보성군6.9℃
  • 흐림백령도10.4℃
  • 맑음영광군6.8℃
  • 맑음대관령2.2℃
  • 맑음속초10.7℃
  • 맑음서청주8.1℃
  • 맑음광양시8.8℃
  • 구름조금세종7.8℃
  • 박무대구4.8℃
  • 비흑산도13.5℃
  • 맑음김해시10.5℃
  • 박무안동3.7℃
  • 연무여수10.6℃
  • 맑음봉화-1.7℃
  • 박무포항10.5℃
  • 맑음울릉도13.4℃
  • 구름조금원주6.2℃
  • 박무인천9.0℃
  • 맑음함양군2.1℃
  • 구름조금홍성8.9℃
  • 맑음고흥6.4℃
  • 맑음합천4.1℃
  • 맑음거창1.3℃
  • 맑음영덕9.0℃
  • 맑음제주13.6℃
  • 맑음통영11.4℃
  • 박무서울8.4℃
  • 구름조금철원5.6℃
  • 맑음고창4.3℃
  • 맑음의령군1.8℃
  • 맑음울진8.9℃
  • 맑음장흥4.4℃
  • 구름조금금산3.4℃
  • 구름많음파주5.2℃
  • 맑음경주시3.2℃
  • 연무북강릉9.3℃
  • 구름많음동두천5.5℃
  • 박무광주10.3℃
  • 맑음성산11.6℃
  • 맑음북창원8.9℃
  • 구름조금보은3.0℃
  • 맑음청송군-0.2℃
  • 구름조금양평4.5℃
  • 맑음정읍9.5℃
  • 맑음천안5.2℃
  • 맑음순창군5.5℃
  • 맑음완도12.6℃
  • 구름조금부안8.6℃
  • 박무북춘천1.6℃
  • 맑음충주3.6℃
  • 구름조금홍천2.4℃
  • 구름조금부여7.5℃
  • 박무목포11.5℃
  • 구름많음강화6.2℃
  • 맑음순천3.3℃
  • 맑음고창군5.0℃
  • 맑음산청3.9℃
  • 구름조금문경4.0℃
  • 맑음영천1.6℃
  • 안개수원6.2℃
  • 맑음진도군6.6℃
  • 박무부산11.7℃
  • 맑음거제10.4℃
  • 구름많음이천5.1℃
  • 구름조금인제1.1℃
  • 구름많음임실4.6℃
  • 구름많음보령6.7℃
  • 맑음구미3.4℃
  • 맑음영월2.3℃
  • 구름조금춘천1.6℃
  • 맑음서귀포13.4℃
  • 맑음장수1.5℃
  • 구름많음서산6.1℃
  • 박무대전7.8℃
  • 맑음남해9.5℃
  • 맑음고산14.7℃
  • 맑음밀양4.8℃
  • 맑음동해9.1℃
  • 맑음추풍령3.0℃
  • 맑음양산시7.8℃
  • 박무전주7.6℃
  • 맑음의성0.7℃
  • 박무창원9.8℃
  • 박무울산9.0℃
  • 2025.11.25 (화)

Julia, 새로운 스레딩 인터페이스 포함된 알파 릴리스 v1.3.0 발표

김진범 / 기사승인 : 2019-07-25 13:14:15
  • -
  • +
  • 인쇄

Julia팀은 Julia 버전 1.3.0의 초기 미리보기인 v1.3.0의 알파 릴리스를 23일 발표했다.

알파 릴리스에는 멀티스레드(multi-threaded task)라고 하는 Julia 프로그램을 위한 새로운 스레딩 인터페이스의 미리보기가 포함되었다.

작업 병렬 처리 모델(The task parallelism model)은 실행을 위해 여러 프로그램을 병렬로 표시 할 수 있다. 여기서'작업'은 사용 가능한 스레드에서 동시에 모든 코드를 실행한다. 이 기능은 사용자가 수백만개의 작업을 자유롭게 배포 할 수 있고 라이브러리 구현 방법에 대해 걱정할 필요가 없으므로 GC 모델(가비지 수집)과 유사하게 작동한다. 이 휴대용 모델은 모든 Julia 패키지에 포함되었다.

다중 스레드 작업 병렬 처리로 Julia 모델은 라이브러리 함수를 호출하는 많은 병렬 작업을 스케줄 할 수 있다. CPU가 스레드로 가득 채워지지 않아 원활하게 작동한다. 이는 라이브러리 기능이 빈번히 필요하기 때문에 고급 언어의 중요한 기능으로 작용한다.


작업 병렬 처리를 구현하면서 문제를 해결하는 방법

각 작업에는 Unix 운영 체제에서 제공하는 일반적인 프로세스나 스레드 스택과는 다른 자체 실행 스택이 필요하다. Julia는 태스크가 전환될 때 메모리에 대한 시간을 교환하는 스택 스위칭의 대체 구현을 제공한다. 그러나 cfunction을 사용하는 외부 코드와 호환되지 않을 수 있다. 스택이 큰 주소 공간을 소비 할때 이 구현이 사용된다.


스레드를 깨우기 위해 이벤트 루프 스레드를 필요로 하면 스레드는 비동기 신호를 발행한다. 이는 새 작업을 예약하는 다른 스레드나 가비지 수집을 실행하기 시작한 스레드 또는 I / O를 수행하기 위해 I / O 잠금을 수행하려는 스레드 때문일 수 있다.


일반적으로 작업은 한 스레드에서 실행되고 잠시동안 블록된 다른 스레드에서 다시 시작될 수 있다. Julia는 메모리가 내부적으로 할당 될 때마다 스레드 로컬 변수를 사용한다. 현재 작업은 항상 처음에 실행을 시작한 스레드에서 실행된다. 이를 지원하기 위해 Julia는 주어진 스레드와 각 스레드와 관련된 작업을 실행하기 위한 스레드 단위의 대기열에서 작업을 실행해야 하는 고정 작업이라는 개념을 사용하고 있다.


CPU 사용을 100% 방지하기 위해 일부 작업이 슬립상태로 설정된다. 다른 스레드가 슬립상태에 있는 동안 일부 스레드는 새작업에 대해 예약 될 수 있으므로 동기화 문제가 발생할 수 있다.

작업이 차단되면 다른 작업을 선택하기 위해 스케줄러가 호출된다. 그러나 코드가 실행되는 스택은 전용 스케줄러 태스크를 가질 수 있다. 그러나 스케줄러 코드가 최근에 차단된 작업의 컨텍스트에서 실행되는 경우 오버헤드가 줄어들 수 있다. 한가지 제안된 방법은 전환을 피하기 위해 스케줄러 대기열에서 작업을 끌어내는 것이다.

Julia 팀은 멀티 스레드 기능을 구현하는 동안 많은 어려운 버그에 직면했었다. 많은 버그 중 하나가 Windows에서 하나의 비트를 뒤집어서 고쳐진 신비한 것이었다.

많은 사용자가 Julia가 앞으로 Python 에 도전 할 것으로 기대 하고 있다.

해커뉴스 사용자는 "저는 python / bash / R이 많은 전산 생물 물리학 분야에서 일했으며 Julia에서 고성능 코드를 많이 작성한 유일한 사람이었습니다. 사람들은 언어에 대해 호기심을 갖고 있었지만 아직도 많이 알려지지 않았습니다. 우리는 앞으로 Julia를 더 많이 채택 할 수 있기를 기대합니다"고 말했다.

한편 Julia의 이번 버전은 몇 달 후에 출시 될 예정이다.

[저작권자ⓒ CWN(CHANGE WITH NEWS). 무단전재-재배포 금지]

최신기사

뉴스댓글 >

- 띄어 쓰기를 포함하여 250자 이내로 써주세요.
- 건전한 토론문화를 위해, 타인에게 불쾌감을 주는 욕설/비방/허위/명예훼손/도배 등의 댓글은 표시가 제한됩니다.

댓글 0

Today

Hot Issue