我决定使用libsimdpp来对我的C ++代码进行矢量化。问题是,旁边没有关于如何入门的文档。
Í假设包含是简单的,因为它也像我正在做的项目一样基于CMake,所以我只是试图复制目录并设置包含路径。好吧,事实证明这还不够:你需要定义适当的标志来指定你想要编译的SIMD风格。 libsimdpp包含一个CMake宏,它可以实现奇迹。我不确定如何从这里开始,感觉我正在反对CMake,而不是通过复制和删除东西。
对CMake有深刻理解的人是否会逐步解释如何做?谢谢!
答案 0 :(得分:2)
您应该查看编译libsimdpp测试的simdpp/test/CMakeLists.txt
文件。相关部分如下:
foreach(SRC ${TEST1_ARCH_SOURCES})
simdpp_multiarch(TEST1_ARCH_GEN_SOURCES ${SRC} ${COMPILABLE_ARCHS})
endforeach()
add_executable(test1 EXCLUDE_FROM_ALL
${TEST1_SOURCES}
${TEST1_ARCH_GEN_SOURCES}
)
基本上,TEST1_ARCH_SOURCES
包含使用libsimdpp的代码。 simdpp_multiarch
复制源代码并为它们设置适当的编译标志,以便实现例如: SSE2和AVX2可以链接到同一个可执行文件中。然后将这些生成的源(TEST1_ARCH_GEN_SOURCES
)添加到可执行文件中。