最新
推荐
2014年高等教育信息化十大“关... 01-04 教育部成立教育信息化专家组 12-24
CERNET第二十一届学术年会 11-24 李志民:互联网促进人类文明迈... 11-15
|
MPI+CUDA编程模型 深腾7000G集群下,MPI+CUDA程序的联合编译运行环境用Makefile文件完成配置,主要配置文件如下: EXECUTABLE :=simpleMPI CUFILES :=simpleMPI.cu CCFILES :=simpleMPI.cpp MPICXX=$(shellwhichmpicxx) ... include./common.mk ... $(OBJDIR)/%.cpp.o:$(SRCDIR)%.cpp$(C_DEPS) $(VERBOSE)mpicxx$(CXXFLAGS)$(LIBFLAGS)-o$@-c$< ifneq($(DARWIN),) LDFLAGS+=-Xlinker-rpath$(CUDA_INSTALL_PATH)/lib endif LINKLINE = mpicxx $(CXX_ARCH_FLAGS)-fPIC$(LDFLAGS)$(LIBFLAGS)-o$(TARGET)$(OBJS)$(LIB)Makefile 配置文件主要添加了程序的MPI部分simpleMPI.cpp的编译和链接时用到的函数库,其中程序的CUDA部分simpleMPI.cu用common.mk文件规则完成编译和链接,最后生成一个可执行的simpleMPI文件。MPI+CUDA编程模型如图1。
开发人员把问题分解成粗粒度(一个并行任务包含较长的程序段和较大的计算量)的问题,这些子问题可以独立地并行解决,然后把这些子问题分为更小的细粒度(一个并行任务包含较短的程序段和较小的计算量)任务,然后在集群的不同层次实现并行粒度及优化。集群并行计算的方式,多为启动多个进程,在各个节点上分别执行,节点间通过消息传递的方式通信,最后规约出计算结果。这种方法灵活,能够适应任务并行、几何分解、分治等大部分科学计算模式,但由于其通信成本较高,因此多用于任务划分清晰、通信频率较低的粗粒度并行。MPI是一种粗粒度并行编程模型。而GPU拥有强大的数据处理能力,可以同时开启成百上千个线程,是典型的细粒度并行编程模型。对于含有支持CUDA架构的显卡(GeForce、Quadro以及Tesla产品均采用nVIDIACUDA并行计算架构,GeForce和Quadro分别是为消费级图形处理和专业可视化而设计的,只有Tesla产品系列是完全针对并行计算而设计的,可提供广泛的计算特性)的机群,可以综合以上两者的优点,通过消息传递机制,将任务分配到各个节点实现粗粒度并发性;在每个节点上,启用多线程机制,利用共享内存实现快速高效的细粒度并行。这种混合粒度的并行程序的开发既可以发挥每个节点的巨大计算能力,又可以充分利用集群的可扩展性,为大型计算提供一个切实可行的方案。 (作者单位1为中国科学院近代物理研究所,2为兰州大学) |
版权所有:中国教育和科研计算机网网络中心 CERNIC,CERNET,京ICP备15006448号-16,京网文[2017]10376-1180号
关于假冒中国教育网的声明 | 有任何问题与建议请联络:Webmaster@staff.cernet.com