如何在Visual C++中启用SSE4.2指令集?

Fre*_*rik 4 opencv visual-c++ sse4

我在Visual C++ 2010中使用OpenCV中的BRIEF描述符来匹配两个图像中的点.

本文有关简要描述符写入,有可能加快的事情:

"Brief描述符使用汉明距离,这可以在现代CPU上非常快速地完成,这些CPU通常提供执行XOR或位计数操作的特定指令,如最新的SSE指令集中的情况."

启用S​​SE4.2后,应该加快速度.我的问题只是我在Visual C++中如何做到这一点?

另一种方法是选择另一个支持SSE4的编译器.例如英特尔的ICC.这真的有必要吗?

Sam*_*Sam 5

不幸的是,它并不像那样.

可以告诉C/C++编译器在项目 - > C/C++ - >代码生成 - >启用增强指令集中使用特定指令集.但它几乎没有任何作用,在你的情况下,绝对没有.那是因为某些CPU指令无法从C语句中轻松访问.有些编译器(比如英特尔)在这方面比其他编译器更好,但是对于你想要实现的目标,没有一个编译器足够聪明.

您需要做的是找到特定的算法,学习SSE指令并手动用这些指令重写算法.您可以使用纯汇编编写,也可以使用可以从C/C++调用的内部函数,并在编译时发出SSE指令.