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인 경우 버전에서는 다음 오류 메시지가 나타날 수 있습니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!