2

私はgem5シミュレーターが初めてです。より高速に実行したい C アプリケーションがあります。そのため、最初に行ったのは、ループ展開や SIMD などのいくつかの手法を使用して最適化することです。次のステップでは、gem5 シミュレーターを使用する必要があるため、複数のコア( X86およびARM ) で動作させる予定です。

アプリケーションは、Radix4 コンピューティング用です。今のところ、X86ARMの 1 つのコア システムで動作させることに成功しましたが、今度は 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*/ 
}
4

2 に答える 2

2

アプリケーションは、シミュレートされたシステムで実行されていることを認識しないため、目標を達成するために gem5 を実際のシステムとして扱うことができます。つまり、OpenMP または MPI を使用します。

モデル化されているシステムにこれらのライブラリ (OpenMP または MPI) がインストールされている場合、これらのライブラリは理論上は機能するはずです。

于 2016-11-29T22:29:11.127 に答える