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

  • 맑음정읍12.2℃
  • 맑음인제6.7℃
  • 맑음울산12.6℃
  • 맑음대관령4.1℃
  • 맑음창원13.1℃
  • 비백령도3.7℃
  • 맑음영덕11.2℃
  • 맑음북창원13.8℃
  • 맑음철원3.6℃
  • 연무서울8.8℃
  • 맑음서귀포16.2℃
  • 맑음고창군12.5℃
  • 맑음영주6.8℃
  • 맑음파주2.7℃
  • 맑음동해11.5℃
  • 맑음고산15.7℃
  • 맑음속초9.0℃
  • 맑음부여8.8℃
  • 맑음완도12.9℃
  • 맑음목포10.7℃
  • 맑음추풍령10.6℃
  • 맑음장수11.2℃
  • 맑음춘천6.0℃
  • 맑음남해10.8℃
  • 맑음부산13.8℃
  • 맑음문경8.2℃
  • 맑음부안10.8℃
  • 맑음충주5.9℃
  • 맑음안동10.8℃
  • 맑음고흥12.8℃
  • 맑음영광군12.6℃
  • 맑음밀양14.1℃
  • 맑음수원8.9℃
  • 연무대전8.4℃
  • 맑음울릉도9.6℃
  • 맑음김해시13.9℃
  • 맑음이천5.6℃
  • 맑음세종5.6℃
  • 맑음진주13.7℃
  • 맑음진도군9.6℃
  • 맑음제천7.1℃
  • 맑음강진군13.3℃
  • 맑음남원13.7℃
  • 맑음보령8.0℃
  • 맑음광양시15.0℃
  • 맑음제주15.4℃
  • 맑음영월6.6℃
  • 맑음서산9.9℃
  • 맑음거제11.4℃
  • 맑음청송군9.5℃
  • 맑음산청12.5℃
  • 연무청주7.0℃
  • 맑음구미9.6℃
  • 맑음포항14.5℃
  • 박무홍성6.0℃
  • 맑음고창13.7℃
  • 맑음군산9.9℃
  • 맑음서청주5.1℃
  • 맑음원주7.0℃
  • 맑음통영13.9℃
  • 맑음순창군12.6℃
  • 맑음영천13.7℃
  • 맑음양산시14.3℃
  • 맑음북춘천5.7℃
  • 맑음경주시14.2℃
  • 맑음북강릉8.6℃
  • 맑음태백6.8℃
  • 맑음홍천5.8℃
  • 맑음천안7.0℃
  • 맑음울진12.5℃
  • 맑음광주13.4℃
  • 맑음합천15.4℃
  • 맑음함양군14.4℃
  • 맑음북부산14.2℃
  • 맑음임실12.2℃
  • 맑음장흥15.1℃
  • 맑음정선군6.0℃
  • 맑음보성군12.3℃
  • 맑음의성11.6℃
  • 맑음여수13.6℃
  • 맑음해남12.9℃
  • 맑음봉화7.2℃
  • 맑음순천13.6℃
  • 맑음상주11.6℃
  • 맑음의령군15.2℃
  • 맑음보은9.3℃
  • 맑음동두천4.2℃
  • 맑음흑산도7.9℃
  • 맑음성산15.4℃
  • 맑음전주11.2℃
  • 맑음대구14.6℃
  • 맑음강화1.4℃
  • 맑음양평6.2℃
  • 박무인천3.3℃
  • 맑음강릉11.8℃
  • 맑음금산12.1℃
  • 맑음거창14.3℃
  • 2026.01.16 (금)

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