C应用程序如何在gem5上运行多个内核?

时间:2016-08-01 13:17:39

标签: c gem5

我是gem5模拟器的新手。我有一个C应用程序,我想让它运行得更快。所以我做的第一件事就是使用循环展开和SIMD等几种技术来优化它。下一步,我打算让它在多核 X86 ARM )上运行,因为我必须使用gem5模拟器。< / p>

该应用程序适用于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*/ 
}

2 个答案:

答案 0 :(得分:2)

应用程序并不知道它是在模拟系统上运行的,因此您可以将gem5视为真正的系统来实现您的目标。即,使用OpenMP或MPI。

如果正在建模的系统安装了这些库(OpenMP或MPI),那么这些库应该在理论上有用。

答案 1 :(得分:1)

在gem5方面,你只需要:

然后,您可以使用以下命令验证核心数量是否已更改:

cat /proc/cpuinfo

至于你的程序本身,一切都像真正的系统一样,所以你应该在POSIX或C11线程等接口上寻找教程,然后在遇到问题时询问更具体的问题。