Parallel processing 并行Matlab-创建分布式阵列

Parallel processing 并行Matlab-创建分布式阵列,parallel-processing,distributed-computing,Parallel Processing,Distributed Computing,我有两个长1000000+的输入向量I和J,就像这样 它们包含一组索引,我用它们从一个小向量中选择元素 R = randn(1,M) 像这样 R1 = R(I); R2 = R(J); 结果向量R1和R2当然具有长度N。现在我想对这些向量做一些繁重的处理,比如compute Q = exp(-(R1-R2).^2); 如何并行化此代码以实现高效的多核处理?我想R1和R2应该是分布式的,或者更确切地说是共同分布的 谢谢 如果您安装了与CUDA兼容的NVIDIA GPU和并行计算工具箱,您可以

我有两个长1000000+的输入向量I和J,就像这样

它们包含一组索引,我用它们从一个小向量中选择元素

R = randn(1,M)
像这样

R1 = R(I);
R2 = R(J);
结果向量R1和R2当然具有长度N。现在我想对这些向量做一些繁重的处理,比如compute

Q = exp(-(R1-R2).^2);
如何并行化此代码以实现高效的多核处理?我想R1和R2应该是分布式的,或者更确切地说是共同分布的


谢谢

如果您安装了与CUDA兼容的NVIDIA GPU和并行计算工具箱,您可以尝试以下方法:

N = 1000000;
M = 1000;
I = ceil(M*gpuArray.rand(1,N));
J = ceil(M*gpuArray.rand(1,N));
R = gpuArray.randn(1,M);
R1 = R(I);
R2 = R(J);
Q = exp(-(R1-R2).^2);
代码将在后台并行化,并在GPU上的数千个线程上执行。在我的机器CPU Xeon E5-2665、GPU特斯拉K20上,CPU串行和GPU之间的加速比超过10倍

N = 1000000;
M = 1000;
I = ceil(M*gpuArray.rand(1,N));
J = ceil(M*gpuArray.rand(1,N));
R = gpuArray.randn(1,M);
R1 = R(I);
R2 = R(J);
Q = exp(-(R1-R2).^2);