
CUDA给的例子中有simpleMPI程序,给每台电脑上安装好了CUDA(也可能安装好驱动就好了),它可以在集群上运行,在不同节点上跑,各个节点都可以调用自己的GPU计算。为了大幅提升数据传输性能,我们必须启用CUDA-aware技术,它使得不同节点之间的GPU数据可以直接经过网卡传输,不需要通过主机内存。为了使数据传输能达到最大性能,CUDA-aware需要一系列技术支持,包括GPUDirect RDMA、Unified Virtual Address等。主流版本的MPI都可以支持这些技术,为了完整支持这些技术,MPI的编译比原先稍微复杂了一些。以 openmpi 为例,官网上给出了如何安装,如何运行的讲解。
How do I build Open MPI with CUDA-aware support
What kind of CUDA support exists in Open MPI
配置和编译 Open MPI >= 200
官方推荐使用最新版本,我也就用最新版本。
关于GDRCopy:顾名思义,它是基于GPUDirect RDMA的库,用于数据拷贝。以下仅是个人理解,GPUDirect RDMA技术支持第三方设备有直接读写GPU内存的能力,比如一块GPU直接通过网卡读写另一块GPU的内存,CPU也可以直接通过网卡直接读写另一块GPU的内存。GPU不像CPU一样低延迟,用CPU读写远程GPU内存延迟低一些。
关于UCX:统一通信。MPI的通信层。
我不太懂这两个库,不管怎么样,按照官方推荐把这两个安装上去就好了,我们不会直接调用这两个库。
需要提供数组的起始地址和长度,比如传递char buf[128];可以这样
发送者:MPI_Send(buf,128,MPI_CHAR);
接收者:MPI_Recv(buf,128,MPI_CHAR);
SP_CONFIGURE 'SHOW ADVANCED OPTIONS',1
RECONFIGURE
EXEC SP_CONFIGURE 'Ad Hoc Distributed Queries',1
RECONFIGURE
插入的代码:
INSERT INTO dboResources(ResourcesUrl,ResourcesLink,ResourcesText) SELECT FROM OPENROWSET('MicrosoftJetOLEDB40',
'Excel 80;HDR=YES;Database=F:\Book1xls', [sheet1$])
我会。入门的话你学习下MPI编程,目前并行计算基本上有:MPI、OPENMP、OPENCL、OPENGL、CUDA你只是想体验的话用OPENMP最省事了,一句话就可以达到并行的效果代码我可以给你,但你要配好环境。先给你裸敲一个hello world的MPI程序吧<pre t="code" l="cpp">includelt;stdioh;
includelt;mpih;
int main (int argc,char argv[])
{
int mypid ,numprocs;
MPI_Init(amp;argc,amp;argv); // 并行开始
MPI_Comm_size(MPI_COMM_WORLD,amp;numprocs); //获取进程数
MPI_Comm_rank(MPI_COMM_WORLD,amp;mypid); //获取本进程ID号
printf(hello world! i am %d process of %d processes,mypid,numporcs);
MPI_Finalize(); //并行结束
}这就是MPI版的hello world 程序,你需要在编译的时候确定同时打开几个进程,比如说4个,程序可能运行结果为:hello world! i am 2 process of 4 processeshello world! i am 1 process of 4 processeshello world! i am 0 process of 4 processeshello world! i am 3 process of 4 processes为什么说可能呢,因为四个进程同时在执行上面的那段代码,哪个进程先结束哪个就先输出就这个道理。想学并行编程的话,建议你在linux下学习。
1) 程环境的搭建 By csmathbo 编译器
推荐使用 Windows下MPI编gcc/g++,虽然也可以使用诸如VC++ 60配置方便并且有诸多强大的工具可以使用,但的编译器CL,但是考虑到最终代码可能要在配置方便并且有诸多强大的工具可以使用,但Linux机群下运行,使用gcc配置方便并且有诸多强大的工具可以使用,但保证了这种平台无关性。在Windows下使用 虽然推荐的MPI使用环境是Linux,gcc,可以通过安装Cygwin程环境的搭建 By csmathbo、Mingw以及 Windows下MPI编DEV C++这三个免费软件包之一来获取,其中DEV C++ 虽然推荐的MPI使用环境是Linux,包含Mingw32。考虑到配置方便并且有诸多强大的工具可以使用,但DEV C++的流行,我们这里通过安装DEV C++程环境的搭建 By csmathbo获取Windows下的配置方便并且有诸多强大的工具可以使用,但gcc支持。你可以容易的在网络上找到一份DEV C++程环境的搭建 By csmathbo的安装拷贝并安装到自己的Windows系统上,这里我安装到y csmathboy@163com D:\Program Files\DEV-CPP下。
虽然推荐的MPI使用环境是Linux,2) 程环境的搭建 By csmathboMPICH
配置方便并且有诸多强大的工具可以使用,但 你需要安装MPICH,这里选择 Windows下MPI编MPICH2,可以到官方网站上免费获取安装映像,这里使用mpich2- 107-win32-ia32msi配置方便并且有诸多强大的工具可以使用,但并安装到D:\Program Files\MPICH2下。
Windows下MPI编
以上就是关于在MPI集群上使用CUDA全部的内容,包括:在MPI集群上使用CUDA、MPI编程 传数组、使用mpi将程序改写成并行程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)