小编jdt*_*ier的帖子

性能回归与特征3.3.0与3.2.10?

我们正处于将代码库移植到Eigen 3.3 的过程中(相当于所有32字节对齐问题).然而,有一些地方的表现似乎受到严重影响,与预期相反(考虑到对FMA和AVX的额外支持,我期待一些加速......).这些包括特征值分解和矩阵*matrix.transpose()*矢量积.我写了两个最小的工作示例来演示.

所有测试都在最新的Arch Linux系统上运行,使用Intel Core i7-4930K CPU(3.40GHz),并使用g ++版本6.2.1进行编译.

1.特征值分解:

对于Eigen 3.3.0,直接的自伴特征值分解需要两倍于3.2.10.

档案test_eigen_EVD.cpp:

#define EIGEN_DONT_PARALLELIZE
#include <Eigen/Dense>
#include <Eigen/Eigenvalues>

#define SIZE 200
using namespace Eigen;

int main (int argc, char* argv[])
{
  MatrixXf mat = MatrixXf::Random(SIZE,SIZE);
  SelfAdjointEigenSolver<MatrixXf> eig;

  for (int n = 0; n < 1000; ++n)
    eig.compute (mat);

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

检测结果:

c++ eigen eigen3

6
推荐指数
1
解决办法
457
查看次数

macosx 线程显式标记为已删除

我正在使用 C++11 线程构建一个应用程序,但我似乎无法让它在 MacOSX 10.9 上与 clang++ 一起工作。这是我能找到的导致问题的最简单示例:

#include <thread>
#include <iostream>

class Functor {
  public:
    Functor() = default;
    Functor (const Functor& ) = delete;
    void execute () { 
      std::cerr << "running in thread\n";
    }
};

int main (int argc, char* argv[]) 
{
  Functor functor;
  std::thread thread (&Functor::execute, std::ref(functor));
  thread.join();
}
Run Code Online (Sandbox Code Playgroud)

这在 Arch Linux 上使用 g++(版本 4.9.2)和以下命令行编译并运行良好:

$ g++ -std=c++11 -Wall -pthread test_thread.cpp -o test_thread
Run Code Online (Sandbox Code Playgroud)

它还可以使用 clang++(版本 3.5.0,也在 Arch Linux 上)编译并运行良好:

$ clang++ -std=c++11 -Wall -pthread test_thread.cpp -o test_thread
Run Code Online (Sandbox Code Playgroud)

但在 …

macos multithreading c++11 clang++

5
推荐指数
1
解决办法
2025
查看次数

标签 统计

c++ ×1

c++11 ×1

clang++ ×1

eigen ×1

eigen3 ×1

macos ×1

multithreading ×1