c - C 应用程序如何使用 gem5 在多个内核上工作?

标签 c gem5

我是 gem5 模拟器的新手。我有一个 C 应用程序,我想让它运行得更快。因此,我做的第一件事是使用循环展开和 SIMD 等多种技术对其进行优化。下一步,我打算让它在多核(X86ARM)上工作,因为我必须使用gem5模拟器。

该应用程序用于 Radix4 计算。目前,我已成功使其在 X86ARM 的单核系统上运行,但是现在我想让它在 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/

相关文章:

c++ - gem5 模拟 : error when goodbye. sayGoodbye(myName) 调用

c - 在我的 C 程序中使用 gdb 需要帮助

c - 有没有一种标准的方法来重建降低的结构函数参数?

c - 在另一个程序中加载一个 c 程序

linux - 使用 DramSim2 运行 gem5

gem5 - 在 gem5 FS 模式下访问 pagemap

c - 警告 : implicit declaration of function ‘sendto’

c - 为什么 fread() 在文件读取期间失败?

linux - 将 perf_event 与 gem5 内的 ARM PMU 结合使用

c++ - 如何在 Ruby 系统中运行 ARM 多线程程序