gpt4 book ai didi

c++ - 用于处理速度的 vector 类库

转载 作者:太空宇宙 更新时间:2023-11-03 10:40:18 25 4
gpt4 key购买 nike

我正在研究用于提高处理速度的并行处理算法。我要测试Agner Fog's vector class library, VCL .

我想知道如何选择不同的 vector 类,例如 Vec16c(SSE2 指令集)和 Vec32c(AVX 指令集)。

我使用的是 Intel® Atom™ x5-Z8350 处理器,根据规范,它支持 SSE4.2 指令集。

关于硬件支持,如何有效地选择 vector 类?说到我的处理器,我可以使用推荐用于 AVX 指令集的 Vec32c 吗?

最佳答案

您可以使用编译器定义的宏来检测为您正在编译的目标启用了哪些指令集,例如:

// Assume SSE2 as a baseline
#include <vectori128.h>

#if defined(__AVX2__)
#include <vectori256.h>
using vector_type = Vec32c;
#else
// Vec16c uses whatever is enabled, so you don't have to check for SSE4 yourself
using vector_type = Vec16c;
#endif

这不会进行运行时检测,因此只有在您想要制作仅在具有 AVX2 的 CPU 上运行的二进制文件时才启用 AVX2。

如果您希望您的代码在非 x86 平台或没有 SSE2 且根本不支持 VCL 的 x86 平台上运行,您需要保护 #include <vectori128.h>#if

关于c++ - 用于处理速度的 vector 类库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40783694/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com