私はOmpを使用して私の研究のための 'C'並列プログラミングに取り組んでいます。C - 参照されていないOmp関数
/*This header file provides a function double hpc_gettime() that returns the elaps
ed time (in seconds) since "the epoch". The function uses the timing routing of th
e underlying parallel framework (OpenMP or MPI), if enabled; otherwise, the defaul
t is to use the clock_gettime() function.
IMPORTANT NOTE: to work reliably this header file must be the FIRST header file th
at appears in your code.*/
#ifndef HPC_H
#define HPC_H
#if defined(_OPENMP)
#include <omp.h>
/* OpenMP timing routines */
double hpc_gettime(void)
{
return omp_get_wtime();
}
#elif defined(MPI_Init)
/* MPI timing routines */
double hpc_gettime(void)
{
return MPI_Wtime();
}
#else
/* POSIX-based timing routines */
#if _XOPEN_SOURCE < 600
#define _XOPEN_SOURCE 600
#endif
#include <time.h>
double hpc_gettime(void)
{
struct timespec ts;
clock_gettime(CLOCK_MONOTONIC, &ts);
return ts.tv_sec + (double)ts.tv_nsec/1e9;
}
#endif
#endif
:私のモジュール配列和-parallel.cでは、私は私のCファイルと同じフォルダにあり、次のコードが含まれているとして、第1、要求されたとして、ファイルhpc.hが含まれますそれから私はomp.h、stdio.hに、STDLIB.Hが含まれ、私はgccの-c -Wall -Wpedantic -fopenmpでコンパイルし、それは大丈夫だが、私はgcc -o -fopenmp array-sum-parallel array-sum-parallel.o
にリンクするとき、私はこのエラーを取得: array- sum-parallel.c :(。テキスト+ 0x9):omp_set_num_threadsへの定義されていない参照と他のすべてのOmp関数。どうして?
出力ファイルはまだリンクされていません。あなたがコンパイルして1つのステップでリンクしたい場合の最も簡単な解決方法は、 '-c'を省略します。 –
私はあなたが' gcc -c -Wall -Wpedantic -fopenmp'から得たファイルをどのプラットフォームでも*実行できないことを100%確信しています。それをリンクしようとしたらどういう意味ですか? –
@AjayBrahmakshatriyaはい、申し訳ありませんがリンクを意味します。私はその質問を編集した。 – Caramelleamare