gpt4 book ai didi

c++ - 代码内指令集标记可能适用于 Visual Studio 2015 C++ 编译器

转载 作者:行者123 更新时间:2023-11-30 05:06:11 25 4
gpt4 key购买 nike

也许是错误的问题。请告诉我,我的假设是使用 SSE 标志编译的代码会在没有 SSE 可用的 CPU 上崩溃...

我有一段 C++ 中的 FFT 代码,我希望它尽可能高效/快速地运行,使用可用的指令集并将其编译为 DLL。是否有可能在 C++ 代码中使用标记/编译指示,以便我可以为不同的指令集编译同一段代码?简化的伪代码将是:

void do_FFT(double *ptr)
{
// Detect available instruction set.

bool MMX_available = ...;
bool SSE_available = ...;

// Call correct function.

if (MMX_available)
do_FFT_MMX(ptr);
else if (SSE_available)
do_FFT_SSE(ptr);
else
do_FFT_plain(ptr);
}

[compile next function using MMX instructions]
void do_FFT_MMX(double *ptr)
{
}

[compile next function using SSE instructions]
void do_FFT_SSE(double *ptr)
{
}

[compile next function using plain x86/64 instructions]
void do_FFT_plain(double *ptr)
{
}

这可能吗?还是我必须为每个指令集制作不同的 DLL?

最佳答案

您不必将其作为单独的 DLL 来执行,只需将每个函数放在不同的文件中并在每个文件而不是整个项目的基础上设置编译标志。

关于c++ - 代码内指令集标记可能适用于 Visual Studio 2015 C++ 编译器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48045343/

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