OpenMP 教程(一) 深入剖析 OpenMP reduction 子句 前言
2022/11/12 1:24:05
本文主要是介绍OpenMP 教程(一) 深入剖析 OpenMP reduction 子句 前言,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
从并发求和开始
我们的任务是两个线程同时对一个变量 data
进行 ++
操作,执行 10000 次,我们看下面的代码有什么问题:
#include <stdio.h> |
|
#include <omp.h> |
|
#include <unistd.h> |
|
static int data; |
|
int main() { |
|
#pragma omp parallel num_threads(2) // 使用两个线程同时执行上面的代码块 |
|
{ |
|
for(int i = 0; i < 10000; i++) { |
|
data++; |
|
usleep(10); |
|
} |
|
// omp_get_thread_num 函数返回线程的 id 号 这个数据从 0 开始,0, 1, 2, 3, 4, ... |
|
printf("data = %d tid = %d\n", data, omp_get_thread_num()); |
|
} |
|
printf("In main function data = %d\n", data); |
|
return 0; |
|
} |
在上面的代码当中,我们开启了两个线程并且同时执行 $pragma
下面的代码块,但是上面的程序有一个问题,就是两个线程可能同时执行 data++
操作,但是同时执行这个操作的话,就存在并发程序的数据竞争问题,在 OpenMP 当中默认的数据使用方式就是
这篇关于OpenMP 教程(一) 深入剖析 OpenMP reduction 子句 前言的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-04-26高性能表格工具VTable总体构成-icode9专业技术文章分享
- 2024-04-16软路由代理问题, tg 无法代理问题-icode9专业技术文章分享
- 2024-04-16程序猿用什么锅-icode9专业技术文章分享
- 2024-04-16自建 NAS 的方案-icode9专业技术文章分享
- 2024-04-14ansible 在远程主机上执行脚本,并传入参数-icode9专业技术文章分享
- 2024-04-14ansible 在远程主机上执行脚本,并传入参数, 加上remote_src: yes 配置-icode9专业技术文章分享
- 2024-04-14ansible 检测远程主机的8080端口,如果关闭,则echo 进程已关闭-icode9专业技术文章分享
- 2024-04-14result 成功怎么写-icode9专业技术文章分享
- 2024-04-14stopped 状态设置为变量,由外部传递进来-icode9专业技术文章分享
- 2024-04-14为什么ansible执行远程脚本需要放到后台-icode9专业技术文章分享