蒙特卡罗算法并行计算
来源:互联网 发布:mysql 5.7 key buffer 编辑:程序博客网 时间:2024/05/18 01:50
因为蒙特卡罗算法求圆周率这个问题没有数据相关性,完全可以用并行计算来模拟之。
首先回顾下蒙特卡罗算法求圆周率,扔了几颗“豆子”,就是说需要执行多少次的随机数产生。比如我们扔了10000次,那么我们要创新获取10000次随机数;我们容忍不了,完全没有数据相关性的事情,完全可以一起做的事情,何必呢!拉出10000人的队伍,没人同时扔一颗不就完事儿了。对的,我们用gpu吧。
开10000个线程,一起来做这件事情!
算法如下,这是《并行计算》里面给出的一个任务分配,很好就用了。
npoints = 10000
circle_count = 0
p = number of tasks
num = npoints/p
find out if I am MASTER or WORKER
do j = 1,num
generate 2 random numbers between 0 and 1
xcoordinate = random1
ycoordinate = random2
if (xcoordinate, ycoordinate) inside circle
then circle_count = circle_count + 1
end do
if I am MASTER
receive from WORKERS their circle_counts
compute PI (use MASTER and WORKER calculations)
else if I am WORKER
send to MASTER circle_count
endif
cuda程序很简单的,自己试着写写。
- 蒙特卡罗算法并行计算
- 并行计算复习————第二篇 并行计算理论基础:并行算法设计
- 并行计算复习————第三篇 并行计算理论基础:并行数值算法
- MIT高级算法之并行计算
- 并行计算
- 并行计算
- 并行计算
- 并行计算
- 并行计算
- 并行计算
- 并行计算
- 并行计算
- 并行计算
- 并行计算
- 并行计算
- 并行计算
- 并行计算
- 面向多核的数值计算:NAG多核并行算法库
- vs2008静态链接库编程
- 理解cuda并行程序的规约思想
- linux服务器-客户端的最小模型
- mongodb的查询语句学习摘要
- 蒙特卡罗算法串行计算
- 蒙特卡罗算法并行计算
- OpenMP的学习初步
- 不断总结自己的异构程序开发思路
- 总结自己的基于gpu的异构程序开发流程
- CPU和GPU的区别
- 从0开始学习《GPU高性能运算之CUDA》——1
- 从0开始学习《GPU高性能运算之CUDA》——2
- 从0开始学习《GPU高性能运算之CUDA》——3
- 二维数组和二维指针在CUDA中的应用