问题描述
我正在设计一个信号处理应用程序,以使用linux运行Intel Xeon cpu。它将有几个并行线程,每个线程都分配给自己的核心。每个用户还将使用IPP库来使用AVX单元加快计算速度。如果我运行了更多具有AVX单元的AVX单元相关线程,将会发生什么?在AVX单元可用之前,线程是否会阻塞?可以通过某种方式共享吗?还有更多险恶的东西吗?
解决方法
每个内核可以运行两个线程。如果您运行许多线程并且没有明确地将线程分配给不同的内核,则操作系统很可能会将两个线程放在同一个内核中。在同一个内核中运行的两个线程将竞争相同的执行单元。如果执行单元吞吐量是瓶颈,那么超线程就没有优势。