再帰のシリアル プログラム コードを書きました。ICC と GCC で異なる出力ファイル名でコンパイルしました。ホットスポットを検出するために Intel Advisor XE 2013 を使用した場合、GCC コンパイル コードはすべてのテストに合格しましたが、正しくは警告が表示されたWarning: Advisor does not support the GNU OpenMP Runtime module and may report false positives.
ので、データ共有の問題を回避するために、ICC で注釈付きコードをコンパイルし (その後、ターミナルでファイルをテスト)、インポートしました。ソースディレクトリと出力ファイルを使用して新しいプロジェクトに。しかし、その生成の問題 (スタックごと)Collection has stopped. Application exit code: 127
により、NO DATA エラーが発生します。
コードは次のとおりです。
#include<stdio.h>
#include "/opt/intel/include/omp.h" //just for the sake of testing include directory
#include "/opt/intel/advisor_xe_2013/include/advisor-annotate.h"
long Fibonacci(long);
int main(int argc, char *argv[])
{
double toc,tic=omp_get_wtime();
int n, i = 0, c;
n=45;
printf("Fibonacci series\n");
ANNOTATE_SITE_BEGIN(SITE1);
for ( c = 1 ; c <= n ; c++ )
{
ANNOTATE_ITERATION_TASK( MyTask1 ); // This annotation identifies an entire body as a task.
printf("%ld\n", Fibonacci(i));
i++;
}ANNOTATE_SITE_END(); // End the parallel code region, after task execution completes
return 0;
}
long Fibonacci(long n)
{
long x,y;
if ( n == 0 )
return 0;
else if ( n == 1 )
return 1;
else
{
x=Fibonacci(n-1);
y=Fibonacci(n-2);
return ( x+y );
}
}
Run : Intelのライブラリをインクルードすること icc serFib.c -o F123ICC2 -openmp -O2 -ldl -g -I $(ADV_DIR)
ADV_DIR
です/opt/intel/advisor_xe_2013/include/
-OpenMP
注 1のパス/opt/intel/composerxe/bin
とライブラリ パスを設定しました/opt/intel/lib/intel64
注 2 yama の ptrace 変数をすでに 0 に設定しました
注 3 ICC コンパイル コード (ここでは F123ICC2) が実行され、端末で適切な結果が表示されます。
注 4 127 コード (Linux の場合) はpath/command not found用であることを知っています。