C程序执行时间OpenMP/Sequential
C program execution time OpenMP/Sequential
我正在尝试测量与 OpenMP 并行化的方法(C 程序)的执行时间。我需要比较并行算法(使用 OpenMP)及其顺序版本的执行时间。
我在并行情况下使用 omp_get_wtime()
方法,在顺序情况下使用 gettimeofday()
方法来进行比较。
我想知道这种进行比较的方法是否正确。感谢您的帮助。
这里是我用来定义宏的代码:
#ifdef _OPENMP
#include <omp.h>
#define STARTTIME(id) \
double start_time_42_##id, end_time_42_##id; \
start_time_42_##id = omp_get_wtime();
#define ENDTIME(id, x) \
end_time_42_##id = omp_get_wtime(); \
x = end_time_42_##id - start_time_42_##id
#else
#include <sys/time.h>
#include <time.h>
#include <math.h>
#define STARTTIME(id) \
struct timeval start_##id; \
gettimeofday(&start_##id, NULL);
#define ENDTIME(id, x) \
struct timeval end_##id; \
gettimeofday(&end_##id, NULL); \
x = ((end_##id.tv_sec - start_##id.tv_sec) * 1000000u + end_##id.tv_usec - start_##id.tv_usec) / 1.e6;
#endif
当然可以,为什么不呢。最后一行看起来有点麻烦。为什么不喜欢这样:
x = (end_##id.tv_sec - start_##id.tv_sec) + (end_##id.tv_usec - start_##id.tv_usec) * 1.e-6;
除此之外,如果您只需要挂钟时间,您的解决方案就可以正常工作。
我正在尝试测量与 OpenMP 并行化的方法(C 程序)的执行时间。我需要比较并行算法(使用 OpenMP)及其顺序版本的执行时间。
我在并行情况下使用 omp_get_wtime()
方法,在顺序情况下使用 gettimeofday()
方法来进行比较。
我想知道这种进行比较的方法是否正确。感谢您的帮助。
这里是我用来定义宏的代码:
#ifdef _OPENMP
#include <omp.h>
#define STARTTIME(id) \
double start_time_42_##id, end_time_42_##id; \
start_time_42_##id = omp_get_wtime();
#define ENDTIME(id, x) \
end_time_42_##id = omp_get_wtime(); \
x = end_time_42_##id - start_time_42_##id
#else
#include <sys/time.h>
#include <time.h>
#include <math.h>
#define STARTTIME(id) \
struct timeval start_##id; \
gettimeofday(&start_##id, NULL);
#define ENDTIME(id, x) \
struct timeval end_##id; \
gettimeofday(&end_##id, NULL); \
x = ((end_##id.tv_sec - start_##id.tv_sec) * 1000000u + end_##id.tv_usec - start_##id.tv_usec) / 1.e6;
#endif
当然可以,为什么不呢。最后一行看起来有点麻烦。为什么不喜欢这样:
x = (end_##id.tv_sec - start_##id.tv_sec) + (end_##id.tv_usec - start_##id.tv_usec) * 1.e-6;
除此之外,如果您只需要挂钟时间,您的解决方案就可以正常工作。