gpt4 book ai didi

c - 将 c 函数拆分为线程

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

我有一个 C 应用程序处理用于 Radix4 计算的浮点表。现在我希望它被分成两个线程以便在多核系统上运行它,首先,这是函数结构:

void radix4(float* x, float* y, N)
{
for (l = 1; l <= PMAX; l++)
{
n = pow_4[l];//LUT for power of 4
for (c =0; c < n; c=c+4)
{
//Loading some parameters from a look-up table
n2 =LUT_n2[l][c];
N2 =LUT_n2[l][c+1];
N2_2=LUT_n2[l][c+2];
N2_3=LUT_n2[l][c+3];
factor = TWIDDLE_LIMIT/(range*4);

while ((k < range) && ( range > 7))
{//loading data from input tables
//Computing butterflies
//Loading twiddles
//Computing final values
//Store result in the same table
}
while ((k<range) && (range<=7))
{
//loading data from input tables
//Computing butterflies
//Loading twiddles
//Computing final values
//Store result in the same table
}
}
}
}

while 循环展开。现在我想了解的是,我如何知道哪些部分可以拆分为线程,并且可以就如何进行拆分给出一些提示,因为我正在阅读很多让我有点困惑的东西。

最佳答案

看起来您正在尝试优化 FFT 例程。您可能需要查看线程池,因为您将在应用程序的生命周期内计算多个 FFT。看看FFTW的网站并查看其 API 的结构。

对于问题的答案,您可以将问题“拆分”为 N 个线程(让我们选择 N = 2)。然后你需要做的基本上是去交错(即使在数组的上半部分,对于 N = 2,在底部也是奇数)。并运行另一个例程来为这些数组的子集(其中的 N)计算 FFT。然后,您可以使用身份/对称属性将数组放回原位并再次交错数组。

希望这对您有所帮助。

关于c - 将 c 函数拆分为线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39121715/

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