当前位置:首页 > HT的配置 在openmpi中添加ht模块主要有以下几个步骤: 1:按照如下
HT的配置
在openmpi中添加ht模块主要有以下几个步骤: 1:按照如下顺序检查autotools的版本号
shell$ m4 –version
shell$ autoconf –version shell$ automake --version shell$ libtoolize --version
并根据gnu的发布版本(http://ftp.gnu.org/gnu/),更新以上工具到最新版本。
2:在~/ompi/mca/btl/目录下添加ht目录,并在目录下建立如下的配置文件:configure.m4,configure.params,Makefile.in,Makefile.am,其中每个配置文件中重要的配置如下所示:
configure.m4:
AC_DEFUN([MCA_btl_ht_CONFIG],[ OMPI_CHECK_HT([btl_ht])
AC_CHECK_TYPES([struct sockaddr_in], [$1], [$2],
[AC_INCLUDES_DEFAULT #ifdef HAVE_NETINET_IN_H #include
主要是控制HT模块的配置,通过和SM相似的方式,每次都固定的加入HT模块
configure.params:
主要是是指定生产的配置文件名
PARAM_CONFIG_FILES=”Makefile”
Makefile.in
1):对一些配置文件路径进行配置
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH=\
install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = :
NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = ompi/mca/btl/ht
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/config/c_get_alignment.m4 \\ $(top_srcdir)/config/ompi_check_ht.m4 \\
2):对编译后的库进行配置
# Make the output library in this directory, and name it either
# mca_
@OMPI_BUILD_btl_ht_DSO_TRUE@component_noinst = @OMPI_BUILD_btl_ht_DSO_FALSE@component_install =
@OMPI_BUILD_btl_ht_DSO_TRUE@component_install = mca_btl_ht.la
Makefile.am
1):主要包含对一些重要变量的设置如下:
btl_ht_component.c \\ btl_ht_endpoint.c \\ btl_ht_endpoint.h \\ btl_ht_frag.c \\ btl_ht_frag.h \\ btl_ht_proc.c \\ btl_ht_proc.h
2):对HT模块编译方式的选择,是采用静态库还是动态库。
if OMPI_BUILD_btl_ht_DSO component_noinst =
component_install = mca_btl_ht.la else
component_noinst = libmca_btl_ht.la component_install = endif
5:在~/ompi/mca/btl/ht/目录下包含的文件有: btl_ht.c
btl_ht.h
btl_ht_component.c btl_ht_endpoint.c btl_ht_endpoint.h btl_ht_frag.c btl_ht_frag.h btl_ht_proc.c btl_ht_proc.h
6:在~/ompi/mca/common/ht/目录下包含的文件有 common_ht_mmap.c common_ht_mmap.h
7:在~/ompi/mca/mpool/ht/目录下包含的文件有 mca_ht_component.c mca_ht_module.c mpool_ht.h
8:在主目录下~/下执行./autogen.sh,来生成配置文件configure. 如果遇到问题,请回到第一步,检查相应文件的版本号。接着检查主机上的GCC版本和g++版本是否是太低(<4.2)。如还有问题,可在邮件列表中提出: mailto:devel@open-mpi.org 9:执行./configure –prefix=
HT模块的主要框架
Ht的实现主要是在btl架构(framework)下,添加一个通用的组件(component),在这个组件中,主要有如下重要的函数和数据结构。 1:Ht模块的各个文件说明。
btl_ht.c 包含主要的HT相关的函数如:
与组件相关的函数: mca_btl_ht_add_procs(), mca_btl_ht_del_procs(), mca_btl_ht_finalize(),
与segment相关的函数: mca_btl_alloc(), mca_btl_ht_free()
与发送和接收相关的函数: mca_btl_ht_prepare_src() mca_btl_ht_prepare_dst() mca_btl_ht_send() mca_btl_ht_sendi() 和事件相关的函数: mca_btl_ht_ft_event()
btl_ht_component.c中实现的主要函数如下: HT组件的的打开和初始化: mca_btl_ht_component_open() mca_btl_ht_component_close() mca_btl_ht_component_init()
btl_ht_frag.c中实现的主要函数如下: 不同发送片段的构造和初始化: mca_btl_ht_frag_constructor() mca_btl_ht_frag_eager_constrctor() 主要的数据结构说明:
struct mca_btl_ht_component_t{
mca_btl_base_component_2_0_0_t super; /**<基类BTL框架*/ int free_list_num; /**<初始化空闲链表的大小*/ int free_list_max; /**<空闲链表最大允许大小*/ int free_list_inc; /**<空闲链表每次增长单位*/ opal_mutex_t ht_lock; ompi_free_list_t ht_frags_eager; /** mca_btl_base_module_t mca_btl_ht={ &mca_btl_ht_component.super, 0, /*btl_eager_limit*/ 0,/*btl_rndv_eager_limit*/ 0,/*btl_max_send_size*/ 0,/*btl_rdma_pipeline_send_length*/ 0,/*btl_min_rdma_pipeline_size*/ 0,/*btl_exclusivity*/ 0,/*btl_latency*/ 0,/*btl_bandwidth*/ }; 0,/*btl_flags*/ mca_btl_ht_add_procs, mca_btl_ht_del_procs, NULL, mca_btl_ht_finalize, mca_btl_ht_alloc, mca_btl_ht_free, mca_btl_ht_prepare_src, mca_btl_ht_prepare_dst, mca_btl_ht_send, NULL,/*send immediate*/ mca_btl_ht_rdma /*put*/ mca_btl_ht_rdma/*get*/ mca_btl_base_dump, NULL,/*mpool*/ NULL/*register error cb*/ mca_btl_ht_ft_event 基于HT的OpenMPI使用 基于HT的OpenMPI使用如下: 1:首先通过配置文件安装OpenMPI ./configure --enable-debug --prefix=
共分享92篇相关文档