配置Pthreads和OpenMP
安装平台
Windows10 64位系统
CodeBlocks 17.12(32位)
C/C++环境:MinGW
相关阅读
OpenMP实现求矩阵均值最大值以及最小值
OpenMP实现数据统计
Pthreads实现任务队列
Pthreads实现梯形积分
visual studio 2019配置Pthreads和OpenMP
CodeBlocks 17.12配置Pthreads和OpenMP
下载安装TDM-GCC编译器
下载地址:http://tdm-gcc.tdragon.net/download
下载完成打开安装,点击Create
选择MinGW/TDM(32-bit)
连续点击两次next,之后选择安装完整包,再点击install知道安装结束。
配置CodeBlocks
设置→编译器
可执行工具链→编译器的安装目录中选择上面TDM-GCC的安装目录
点击编译器设置选项卡下的其他编译器设置,添加“-fopenmp”
点击链接器设置选项卡,在其他链接器选项中添加“-lgomp -lpthread”,最后点击确定
测试代码一
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
int thread_count;
void* Hello(void* rank);
int main(int argc, char* argv[]) {
long i;
pthread_t* thread_handles;
thread_count = 5;
thread_handles = malloc(thread_count*sizeof(pthread_t));
for (i = 0; i < thread_count; i++)
pthread_create(&thread_handles[i], NULL, Hello, (void*)i);
printf("Hello from the main thread\n");
for (i = 0; i < thread_count; i++)
pthread_join(thread_handles[i], NULL);
free(thread_handles);
return 0;
}
void* Hello(void* rank) {
long my_rank = (long) rank;
printf("Hello from thread %ld of %d\n", my_rank, thread_count);
return NULL;
}
注:如果出现C2440 “=”: 无法从“void *”转换为“pthread_t *”错误,只需将.cpp文件改为.c文件。
测试结果一
测试代码二
#include "stdio.h"
#include "omp.h"
int main()
{
printf("Hello from serial.\n");
printf("Thread number = % d\n",omp_get_thread_num());
#pragma omp parallel
{
printf("Hello from parallel.Thread number = % d\n", omp_get_thread_num());
}
printf("Hello from serial again.\n");
return 0;
}
测试结果二