我是 gem5 模拟器的新手。我有一个 C 应用程序,我想让它运行得更快。因此,我做的第一件事是使用循环展开和 SIMD 等多种技术对其进行优化。下一步,我打算让它在多核(X86和ARM)上工作,因为我必须使用gem5模拟器。
该应用程序用于 Radix4 计算。目前,我已成功使其在 X86 和 ARM 的单核系统上运行,但是现在我想让它在 4、16、... 核上运行X86 或 ARM。
有人可以给我一些提示或告诉我正确的方法吗? 谢谢您
这是关于应用程序的全局想法
void init_twiddle(int N)
{
int i;
for(i=0; i<TWIDDLE_LIMIT; i++)
{
/*Filling the twiddle table*/
}
}
void init_LUT(int N)
{
LUT_n2 = malloc((1+PMAX)*sizeof(int*));
for (i=0; i <= PMAX; i++){
for (j=0; j < n; j++)
/*Calculate radix parametrs and put them in a table*/
}
}
void bit_r4_reorder(float* x, float* y, int N)
{
/*Bit reordering after calculating the radix4*/
}
void radix4(float *x,float *y, int N)
{
/*function for the radix4 computing*/
}
int main()
{
/*Calling the previous functions*/
}
最佳答案
应用程序不知道它正在模拟系统上运行,因此您可以将gem5视为真实系统来实现您的目标。即,通过使用 OpenMP 或 MPI。
如果正在建模的系统安装了这些库(OpenMP 或 MPI),那么理论上这些库应该可以工作。
关于c - C 应用程序如何使用 gem5 在多个内核上工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38699983/