ubuntu18.04安装tbb library

1.安装gcc9

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

2.安装tbb

可以用代码下载,如果网络不好也可以网盘自取,下载后记得将文件名字改为tbb-2019_U8,这样粘后面部分命令会方便很多。

链接:https://pan.baidu.com/s/1gPVgz5viGINtjgSzLj2BoA?pwd=yari 
提取码:yari 

wget https://github.com/intel/tbb/archive/2019_U8.tar.gz
tar zxvf 2019_U8.tar.gz
rm 2019_U8.tar.gz
 
cd tbb-2019_U8
  • 编辑linux.gcc-9.inc
cp build/linux.gcc.inc build/linux.gcc-9.inc 

vi build/linux.gcc-9.inc
 
# 把大约是15,16 行的CPLUS ?= g++ CONLY ?= gcc修改为下面语句,然后保存
CPLUS ?= g++-9
CONLY ?= gcc-9
  • 编译tbb
make compiler=gcc-9 stdver=c++17 tbb_build_prefix=my_tbb_build
  • 安装tbb
sudo mkdir /usr/local/tbb-2019_U8
sudo cp -r include /usr/local/tbb-2019_U8/include
sudo ln -s /usr/local/tbb-2019_U8/include/tbb /usr/local/include/tbb
sudo cp -r build/my_tbb_build_release /usr/local/tbb-2019_U8/lib
 
sudo ln -s /usr/local/tbb-2019_U8/lib/libtbb.so.2 /usr/local/lib/libtbb.so
sudo ln -s /usr/local/tbb-2019_U8/lib/libtbbmalloc.so.2 /usr/local/lib/libtbbmalloc.so
sudo ln -s /usr/local/tbb-2019_U8/lib/libtbbmalloc_proxy.so.2 /usr/local/lib/libtbbmalloc_proxy.so
echo 'export LD_LIBRARY_PATH=/usr/local/tbb-2019_U8/lib:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc

3.测试

  • 测试代码

创建t0.cpp

#include <algorithm>
#include <chrono>
#include <execution>
#include <iostream>
#include <random>
#include <vector>
 
void printDuration(std::chrono::steady_clock::time_point start, std::chrono::steady_clock::time_point end, const char *message)
{
    auto diff = end - start;
    std::cout << message << ' ' << std::chrono::duration<double, std::milli>(diff).count() << " msn";
}
template <typename T>
void test(const T &policy, const std::vector<double> &data, const int repeat, const char *message)
{
    for (int i = 0; i < repeat; ++i)
    {
        std::vector<double> curr_data(data);
 
        const auto start = std::chrono::steady_clock::now();
        std::sort(policy, curr_data.begin(), curr_data.end());
        const auto end = std::chrono::steady_clock::now();
        printDuration(start, end, message);
    }
    std::cout << 'n';
}
 
int main()
{
    // Test samples and repeat factor
    constexpr size_t samples{5'000'000};
    constexpr int repeat{10};
 
    // Fill a vector with samples numbers
    std::random_device rd;
    std::mt19937_64 mre(rd());
    std::uniform_real_distribution<double> urd(0.0, 1.0);
 
    std::vector<double> data(samples);
    for (auto &e : data)
    {
        e = urd(mre);
    }
 
    // Sort data using different execution policies
    std::cout << "std::execution::seqn";
    test(std::execution::seq, data, repeat, "Elapsed time");
 
    std::cout << "std::execution::parn";
    test(std::execution::par, data, repeat, "Elapsed time");
}
  • 编译程序
g++-9 -std=c++17 -Wall -Wextra -pedantic -O2 t0.cpp -o t0_opt -L /usr/local/lib/ -ltbb
  • 运行代码
./t0_opt

参考:(1条消息) linux tbb 安装_Ubuntu18.04 GCC9 安装_天街踏尽公卿骨的博客-CSDN博客 

猜你喜欢

转载自blog.csdn.net/lian740930980/article/details/126659488