스레드화 구성 요소

Threading Building Blocks
스레드화 구성 요소
개발자인텔(R)
안정된 릴리스
2021.5 / 2021년 12월 22일, 7개월 전(2021-12-22)[1]
저장소
기입처C++
운영 체제FreeBSD, Linux, Solaris, macOS, Windows, Android
유형라이브러리 또는 프레임워크
면허증.듀얼: 상용/오픈 소스(Apache 2.0), Freeware[2]
웹 사이트github.com/oneapi-src/oneTBB
intel.com/oneTBB

oneAPI 스레딩 빌딩 블록(oneTBB, 이전 스레딩 빌딩 블록 또는 TBB)은 멀티코어 프로세서에서 병렬 프로그래밍을 위해 인텔개발 C++ 템플릿 라이브러리입니다.TBB를 사용하면 연산을 병렬로 실행할 수 있는 태스크로 나눕니다.라이브러리는 이러한 태스크를 실행하기 위해 스레드를 관리하고 예약합니다.

개요

하나의 TBB 프로그램은 알고리즘, 즉 높은 수준의 병렬 프로그래밍 패러다임(일명, k.a)에 따라 종속 태스크의 그래프를 생성, 동기화 및 파괴한다.알고리즘 스켈레톤)그런 다음 그래프 종속성에 대해 작업이 실행됩니다.이 접근법은 TBB를 병렬 프로그래밍 기법 계열로 그룹화하여 프로그래밍을 기본 기계의 세부 사항에서 분리하는 것을 목표로 합니다.

one TBB는 코어 활용률을 높이고 그에 따라 확장하기 위해 작업 절도를 구현하여 사용 가능한 프로세싱 코어 간에 병렬 워크로드의 균형을 조정합니다.처음에는 사용 가능한 프로세서 코어 간에 워크로드가 균등하게 분배됩니다.한쪽 코어가 작업을 완료하고 다른 코어가 큐에 상당한 양의 작업을 계속하고 있는 경우, 1TBB는 작업 중 일부를 사용 중인 코어 중 하나에서 유휴 코어로 재할당합니다.이 동적 기능은 프로그래머와 머신을 분리하여 라이브러리를 사용하여 작성된 애플리케이션을 소스 코드나 실행 가능한 프로그램 파일을 변경하지 않고 사용 가능한 프로세싱 코어를 사용할 수 있도록 확장할 수 있도록 합니다.프린스턴 대학의 연구진은, TBB의 실장 작업에 관한 2008년의 평가에서, 32 코어 [3]시스템에서 특정의 벤치마크를 실행했을 때에, 대량의 프로세서 코어에 최적인 것이 아니고, 처리 시간의 최대 47%가 오버헤드를 스케줄 하는 데 소비되고 있습니다.

oneTBB는 STL(및 이를 기반으로 한 C++ 표준 라이브러리의 일부)과 마찬가지로 템플릿을 광범위하게 사용합니다.템플릿은 현대의 C++ 컴파일러가 최적화할 수 있는 컴파일 시간 구성이기 때문에 이는 오버헤드가 낮은 다형성의 이점을 가지고 있습니다.

one TBB는 [4]지원 대상 바이너리 배포 및 소스 및 바이너리 형식의 오픈 소스 소프트웨어로 상업적으로 이용 가능합니다.

one TBB는 결정론이나 데이터 [5]경쟁으로부터의 자유에 대한 보증을 제공하지 않습니다.

라이브러리 콘텐츠

one TBB는 병렬 프로그래밍을 위한 구성 요소 모음입니다.

  • 기본 알고리즘:parallel_for,parallel_reduce,parallel_scan
  • 고급 알고리즘:parallel_pipeline,parallel_sort
  • 컨테이너:concurrent_queue,concurrent_priority_queue,concurrent_vector,concurrent_hash_map
  • 메모리 할당:scalable_malloc,scalable_free,scalable_realloc,scalable_calloc,scalable_allocator,cache_aligned_allocator
  • 상호 제외:mutex,spin_mutex,queuing_mutex,spin_rw_mutex,queuing_rw_mutex,recursive_mutex
  • 타이밍: 휴대용 미세 글로벌 타임스탬프
  • 작업 스케줄러: 작업 생성 및 활성화를 제어하는 직접 액세스

지원되는 시스템

1TBB의 하드웨어, 운영체제 및 소프트웨어의 전제 조건.

지원되는 하드웨어

  • 인텔 Celeron 프로세서 패밀리
  • 인텔 Core 프로세서 패밀리
  • 인텔 Xeon 프로세서 패밀리
  • 인텔 Xeon Phi 프로세서 패밀리
  • 인텔 ATOM 프로세서 패밀리
  • 인텔 이외의 프로세서가 위의 프로세서와 호환성이 있음

지원되는 운영 체제

Microsoft Windows 운영 체제가 설치된 시스템:

  • Microsoft Windows 10
  • Microsoft Windows Server 2016
  • Microsoft Windows Server 2019

Linux* 운영체제 탑재 시스템:

  • 클리어 Linux
  • 아마존 리눅스 2
  • CentOS 8
  • 데비안 10
  • 페도라 34
  • Red Hat Enterprise Linux 7, 8
  • SuSE Linux Enterprise Server 15
  • Ubuntu 18.04 LTS, 20.04, 21.04

MacOS 운영 체제가 설치된 시스템:

  • MacOS 10.15, 11.x

Android 운영 체제가 설치된 시스템:

  • 안드로이드 9

지원되는 컴파일러

  • 인텔 원API DPC++/C++ 컴파일러
  • 인텔 C++ 컴파일러 19.0 및 19.1 버전
  • Microsoft Visual C++ 14.2 (Microsoft Visual Studio 2019, Windows OS만)
  • GNU 컴파일러 (gcc) 4.8.5 - 11.1.1
  • GNU C 라이브러리(glibc) 버전 2.17 - 2.33
  • Clang 6.0.0-12.0.0


「 」를 참조해 주세요.

메모들

  1. ^ "oneAPI Threading Building Blocks Github Releases". GitHub.
  2. ^ "No Cost Options for Intel Support yourself, Royalty-Free".
  3. ^ Contreras, Gilberto; Martonosi, Margaret (2008). Characterizing and improving the performance of Intel Threading Building Blocks (PDF). IEEE Int'l Symp. on Workload Characterization.
  4. ^ https://software.intel.com/en-us/intel-tbb 인텔 스레딩 빌딩 블록 상용 버전 홈페이지
  5. ^ Bocchino Jr., Robert L.; Adve, Vikram S.; Adve, Sarita V.; Snir, Marc (2009). Parallel Programming Must Be Deterministic by Default. USENIX Workshop on Hot Topics in Parallelism.

레퍼런스

외부 링크