首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用并行工具箱实现GPU上的简单蒙特卡罗

使用并行工具箱实现GPU上的简单蒙特卡罗
EN

Stack Overflow用户
提问于 2017-08-12 12:23:08
回答 1查看 203关注 0票数 1

下面是一个玩具示例,我把它放在一起,探索使用CPU加速执行的parfoor函数。然而,即使在查看了并行文档之后,我仍然对如何升级它以在我的GPU (Nvidia 980ti)上运行感到困惑。

非常感谢任何关于如何更新此代码以在GPU上运行的指示。

干杯。

代码语言:javascript
复制
% toy example--monte carlo estimation of pi using for loops
tic;
N = 1000000000;
hitcounter = 0;
for i = 1:N
    x = rand;
    y = rand;
    if ( y < sqrt(1-x*x) )
        hitcounter = hitcounter + 1;
    end
end
disp(hitcounter/N*4)
toc;

% toy example--monte carlo estimation of pi using parfor loops
tic;
N = 1000000000;
hitcounter = 0;
parfor i = 1:N
    x = rand;
    y = rand;
    if ( y < sqrt(1-x*x) )
        hitcounter = hitcounter + 1;
    end
end
disp(hitcounter/N*4)
toc;
EN

回答 1

Stack Overflow用户

发布于 2017-08-17 15:45:40

你需要做的主要事情是向量化你的代码--这总是一个好主意,特别是在GPU上。然后,您只需使用rand的尾随参数直接在GPU上构建xy

代码语言:javascript
复制
N = 1000000;
x = rand(1, N, 'gpuArray');
y = rand(1, N, 'gpuArray');
pi_est = sum(y < sqrt(1 - x.*x)) / N * 4;

请注意,我缩小了N,以使其适合图形处理器。如果你想使用更高的GPU值运行-我建议添加一个外部循环,本质上是以“块”的形式执行计算,以适应N的有限内存。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45646470

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档