>  기사  >  백엔드 개발  >  C 17 병렬 알고리즘을 작동시키려면 어떻게 해야 합니까?

C 17 병렬 알고리즘을 작동시키려면 어떻게 해야 합니까?

DDD
DDD원래의
2024-10-26 10:07:03898검색

 How Can I Get C  17 Parallel Algorithms Working?

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

질문:

구현을 시도했지만 C 17 표준에 도입된 새로운 병렬 라이브러리 기능으로 인해 작성자는 컴파일 오류를 겪었습니다. 그들은 이러한 알고리즘이 아직 구현되었는지 의문을 제기했습니다.

답변:

GCC 9 및 TBB 2018은 C 17 병렬 알고리즘을 최초로 지원합니다. 단, TBB는 별도로 설치해야 합니다.

설치 지침:

Ubuntu 19.10:

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:

# 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

성능 분석:

4코어/8스레드 및 2x 16GiB RAM을 갖춘 Lenovo ThinkPad P51 노트북에서 테스트, 병렬 정렬은 1억 개의 숫자 입력 크기에 대해 직렬 버전보다 약 4.5배 빠릅니다.

오류 메시지:

  • TBB가 설치되지 않은 경우 :

    fatal error: tbb/blocked_range.h: No such file or directory
  • TBB 버전이 너무 오래된 경우:

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

위 내용은 C 17 병렬 알고리즘을 작동시키려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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