>  기사  >  백엔드 개발  >  C 17 병렬 알고리즘은 정말 전성기를 맞이할 준비가 되어 있나요?

C 17 병렬 알고리즘은 정말 전성기를 맞이할 준비가 되어 있나요?

Barbara Streisand
Barbara Streisand원래의
2024-10-27 07:43:31405검색

 Are C  17 Parallel Algorithms Really Ready for Prime Time?

C 17 병렬 알고리즘 구현이 준비되었나요?

C 17에서 널리 사용되는 알고리즘의 병렬 버전이 제공될 것이라는 약속에도 불구하고 이러한 기능은 혼란스러울 수 있습니다.

처음에는 이러한 기능이 2017년 초에 예상되었으나 실제 구현이 구체화되기까지는 더 오랜 시간이 걸렸습니다. 현재 상황은 다음과 같습니다.

TBB가 필요한 GCC 9

Ubuntu 19.10의 기본 컴파일러인 GCC 9는 Thread Building Blocks를 통해 병렬 알고리즘을 지원합니다. (TBB). TBB는 별도로 설치해야 하는데 과정은 간단합니다.

sudo apt install gcc libtbb-dev
g++ -ggdb3 -O3 -std=c++17 -Wall -Wextra -pedantic -o main.out main.cpp -ltbb
./main.out

Ubuntu 18.04 설치

Ubuntu 18.04에서는 TBB를 사용할 수 없기 때문에 좀 더 복잡한 설치 과정이 필요합니다. 기본 리포지토리를 통해 호환되는 버전으로 제공됩니다. 아래 명령은 자동화되고 테스트된 지침을 제공합니다.

# Install GCC 9
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-9 g++-9

# Compile libtbb from source.
sudo apt-get build-dep libtbb-dev
git clone https://github.com/intel/tbb
cd tbb
git checkout 2019_U9
make -j `nproc`
TBB="$(pwd)"
TBB_RELEASE="${TBB}/build/linux_intel64_gcc_cc7.4.0_libc2.27_kernel4.15.0_release"

# Use them to compile our test program.
g++-9 -ggdb3 -O3 -std=c++17 -Wall -Wextra -pedantic -I "${TBB}/include" -L 
"${TBB_RELEASE}" -Wl,-rpath,"${TBB_RELEASE}" -o main.out main.cpp -ltbb
./main.out

테스트 프로그램 분석

병렬 알고리즘의 효율성을 입증하기 위해 병렬 정렬 속도를 비교하는 테스트 프로그램입니다. 직렬 구현이 제공되었습니다. Ubuntu 19.10에서 1억 개의 숫자를 정렬하면 병렬 버전의 성능이 크게 향상되었습니다.

./main.out 100000000
parallel 2.00886 s
serial 9.37583 s

오류 메시지

종속성이 누락되었거나 오래된 TBB인 경우 버전에서는 다음 오류 메시지가 나타날 수 있습니다.

  1. TBB 누락:

    fatal error: tbb/blocked_range.h: No such file or directory
  2. 오래됨 TBB:

    #error Intel(R) Threading Building Blocks 2018 is required; older versions are not supported.

위 내용은 C 17 병렬 알고리즘은 정말 전성기를 맞이할 준비가 되어 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.