下面是使用OpenMP实现的Helloworld程序,其中每个线程会打印出当前线程号和线程总数,并输出程序执行的时间: ```c #include <stdio.h> #include <omp.h> #include <time.h> int main() { int num_threads, thread_id; double start_time, end_time; // 获取开始时间 start_time = omp_get_wtime(); // 设置并行区域,使用多线程打印Hello World #pragma omp parallel private(thread_id) shared(num_threads) { // 获取线程总数 num_threads = omp_get_num_threads(); // 获取当前线程号 thread_id = omp_get_thread_num(); // 打印Hello World和线程信息 printf("Hello World, This is thread %d out of %d\n", thread_id, num_threads); } // 获取结束时间 end_time = omp_get_wtime(); // 计算程序执行时间 double execution_time = end_time - start_time; // 打印程序执行时间 printf("Execution time: %f seconds\n", execution_time); return 0; } ``` 该程序使用`#pragma omp parallel`指令将代码块设置为并行区域,使得多个线程可以并行执行其中的代码。通过`omp_get_num_threads()`函数获取线程总数,`omp_get_thread_num()`函数获取当前线程号。每个线程会打印出当前线程号和线程总数。使用`omp_get_wtime()`函数获取开始和结束时间,计算程序执行时间并输出。 |
说点什么...