Blame src/mpid/ch4/subconfigure.m4

Packit Service c5cf8c
[#] start of __file__
Packit Service c5cf8c
dnl MPICH_SUBCFG_BEFORE=src/mpid/common/sched
Packit Service c5cf8c
dnl MPICH_SUBCFG_BEFORE=src/mpid/common/datatype
Packit Service c5cf8c
dnl MPICH_SUBCFG_BEFORE=src/mpid/common/thread
Packit Service c5cf8c
dnl MPICH_SUBCFG_BEFORE=src/mpid/common/bc
Packit Service c5cf8c
Packit Service c5cf8c
dnl _PREREQ handles the former role of mpichprereq, setup_device, etc
Packit Service c5cf8c
[#] expansion is: PAC_SUBCFG_PREREQ_[]PAC_SUBCFG_AUTO_SUFFIX
Packit Service c5cf8c
AC_DEFUN([PAC_SUBCFG_PREREQ_]PAC_SUBCFG_AUTO_SUFFIX,[
Packit Service c5cf8c
AM_CONDITIONAL([BUILD_CH4],[test "$device_name" = "ch4"])
Packit Service c5cf8c
Packit Service c5cf8c
AM_COND_IF([BUILD_CH4],[
Packit Service c5cf8c
AC_MSG_NOTICE([RUNNING PREREQ FOR CH4 DEVICE])
Packit Service c5cf8c
Packit Service c5cf8c
# the CH4 device depends on the common NBC scheduler code
Packit Service c5cf8c
build_mpid_common_sched=yes
Packit Service c5cf8c
build_mpid_common_datatype=yes
Packit Service c5cf8c
build_mpid_common_thread=yes
Packit Service c5cf8c
build_mpid_common_bc=yes
Packit Service c5cf8c
Packit Service c5cf8c
MPID_MAX_THREAD_LEVEL=MPI_THREAD_MULTIPLE
Packit Service c5cf8c
MPID_MAX_PROCESSOR_NAME=128
Packit Service c5cf8c
MPID_MAX_ERROR_STRING=512
Packit Service c5cf8c
Packit Service c5cf8c
# $device_args - contains the netmods
Packit Service c5cf8c
if test -z "${device_args}" ; then
Packit Service c5cf8c
    ch4_netmods="ofi"
Packit Service c5cf8c
else
Packit Service c5cf8c
    changequote(<<,>>)
Packit Service c5cf8c
    netmod_args=`echo ${device_args} | sed -e 's/^[^:]*//' -e 's/^://' -e 's/,/ /g'`
Packit Service c5cf8c
    changequote([,])
Packit Service c5cf8c
    ch4_netmods=`echo ${device_args} | sed -e 's/:.*$//' -e 's/,/ /g'`
Packit Service c5cf8c
fi
Packit Service c5cf8c
export ch4_netmods
Packit Service c5cf8c
export netmod_args
Packit Service c5cf8c
Packit Service c5cf8c
#
Packit Service c5cf8c
# reset DEVICE so that it (a) always includes the channel name, and (b) does not include channel options
Packit Service c5cf8c
#
Packit Service c5cf8c
DEVICE="${device_name}:${ch4_netmods}"
Packit Service c5cf8c
Packit Service c5cf8c
ch4_nets_func_decl=""
Packit Service c5cf8c
ch4_nets_native_func_decl=""
Packit Service c5cf8c
ch4_nets_func_array=""
Packit Service c5cf8c
ch4_nets_native_func_array=""
Packit Service c5cf8c
ch4_nets_strings=""
Packit Service c5cf8c
net_index=0
Packit Service c5cf8c
for net in $ch4_netmods ; do
Packit Service c5cf8c
    if test ! -d $srcdir/src/mpid/ch4/netmod/${net} ; then
Packit Service c5cf8c
        AC_MSG_ERROR([Network module ${net} is unknown "$srcdir/src/mpid/ch4/netmod/${net}"])
Packit Service c5cf8c
    fi
Packit Service c5cf8c
    net_macro=`echo $net | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
Packit Service c5cf8c
    net_macro="MPIDI_CH4_${net_macro}"
Packit Service c5cf8c
Packit Service c5cf8c
    if test -z "$ch4_nets_array" ; then
Packit Service c5cf8c
        ch4_nets_array="$net_macro"
Packit Service c5cf8c
    else
Packit Service c5cf8c
        ch4_nets_array="$ch4_nets_array, $net_macro"
Packit Service c5cf8c
    fi
Packit Service c5cf8c
Packit Service c5cf8c
    if test -z "$ch4_nets_func_decl" ; then
Packit Service c5cf8c
        ch4_nets_func_decl="MPIDI_NM_${net}_funcs"
Packit Service c5cf8c
    else
Packit Service c5cf8c
        ch4_nets_func_decl="${ch4_nets_func_decl}, MPIDI_NM_${net}_funcs"
Packit Service c5cf8c
    fi
Packit Service c5cf8c
Packit Service c5cf8c
    if test -z "$ch4_nets_native_func_decl" ; then
Packit Service c5cf8c
        ch4_nets_native_func_decl="MPIDI_NM_native_${net}_funcs"
Packit Service c5cf8c
    else
Packit Service c5cf8c
        ch4_nets_native_func_decl="${ch4_nets_native_func_decl}, MPIDI_NM_native_${net}_funcs"
Packit Service c5cf8c
    fi
Packit Service c5cf8c
Packit Service c5cf8c
    if test -z "$ch4_nets_func_array" ; then
Packit Service c5cf8c
        ch4_nets_func_array="&MPIDI_NM_${net}_funcs"
Packit Service c5cf8c
    else
Packit Service c5cf8c
        ch4_nets_func_array="${ch4_nets_func_array}, &MPIDI_NM_${net}_funcs"
Packit Service c5cf8c
    fi
Packit Service c5cf8c
Packit Service c5cf8c
    if test -z "$ch4_nets_native_func_array" ; then
Packit Service c5cf8c
        ch4_nets_native_func_array="&MPIDI_NM_native_${net}_funcs"
Packit Service c5cf8c
    else
Packit Service c5cf8c
        ch4_nets_native_func_array="${ch4_nets_native_func_array}, &MPIDI_NM_native_${net}_funcs"
Packit Service c5cf8c
    fi
Packit Service c5cf8c
Packit Service c5cf8c
    if test -z "$ch4_nets_strings" ; then
Packit Service c5cf8c
        ch4_nets_strings="\"$net\""
Packit Service c5cf8c
    else
Packit Service c5cf8c
        ch4_nets_strings="$ch4_nets_strings, \"$net\""
Packit Service c5cf8c
    fi
Packit Service c5cf8c
Packit Service c5cf8c
    if test -z "$ch4_netmod_coll_globals_default" ; then
Packit Service c5cf8c
        ch4_netmod_coll_globals_default="#include \"../netmod/${net}/${net}_coll_globals_default.c\""
Packit Service c5cf8c
    else
Packit Service c5cf8c
        ch4_netmod_coll_globals_default="${ch4_netmod_coll_globals_default}
Packit Service c5cf8c
#include \"../netmod/${net}/${net}_coll_globals_default.c\""
Packit Service c5cf8c
    fi
Packit Service c5cf8c
Packit Service c5cf8c
    if test -z "$ch4_netmod_pre_include" ; then
Packit Service c5cf8c
        ch4_netmod_pre_include="#include \"../netmod/${net}/${net}_pre.h\""
Packit Service c5cf8c
    else
Packit Service c5cf8c
        ch4_netmod_pre_include="${ch4_netmod_pre_include}
Packit Service c5cf8c
#include \"../netmod/${net}/${net}_pre.h\""
Packit Service c5cf8c
    fi
Packit Service c5cf8c
Packit Service c5cf8c
    if test -z "$ch4_netmod_coll_params_include" ; then
Packit Service c5cf8c
        ch4_netmod_coll_params_include="#include \"../netmod/${net}/${net}_coll_params.h\""
Packit Service c5cf8c
    else
Packit Service c5cf8c
        ch4_netmod_coll_params_include="${ch4_netmod_coll_params_include}
Packit Service c5cf8c
#include \"../netmod/${net}/${net}_coll_params.h\""
Packit Service c5cf8c
    fi
Packit Service c5cf8c
Packit Service c5cf8c
    net_upper=`echo ${net} | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
Packit Service c5cf8c
    if test -z "$ch4_netmod_amrequest_decl" ; then
Packit Service c5cf8c
        ch4_netmod_amrequest_decl="MPIDI_${net_upper}_am_request_t ${net};"
Packit Service c5cf8c
    else
Packit Service c5cf8c
        ch4_netmod_amrequest_decl="${ch4_netmod_amrequest_decl} \\
Packit Service c5cf8c
MPIDI_${net_upper}_am_request_t ${net};"
Packit Service c5cf8c
    fi
Packit Service c5cf8c
Packit Service c5cf8c
    if test -z "$ch4_netmod_request_decl" ; then
Packit Service c5cf8c
        ch4_netmod_request_decl="MPIDI_${net_upper}_request_t ${net};"
Packit Service c5cf8c
    else
Packit Service c5cf8c
        ch4_netmod_request_decl="${ch4_netmod_request_decl} \\
Packit Service c5cf8c
MPIDI_${net_upper}_request_t ${net};"
Packit Service c5cf8c
    fi
Packit Service c5cf8c
Packit Service c5cf8c
    if test -z "$ch4_netmod_comm_decl" ; then
Packit Service c5cf8c
        ch4_netmod_comm_decl="MPIDI_${net_upper}_comm_t ${net};"
Packit Service c5cf8c
    else
Packit Service c5cf8c
        ch4_netmod_comm_decl="${ch4_netmod_comm_decl} \\
Packit Service c5cf8c
MPIDI_${net_upper}_comm_t ${net};"
Packit Service c5cf8c
    fi
Packit Service c5cf8c
    if test -z "$ch4_netmod_dt_decl" ; then
Packit Service c5cf8c
        ch4_netmod_dt_decl="MPIDI_${net_upper}_dt_t ${net};"
Packit Service c5cf8c
    else
Packit Service c5cf8c
        ch4_netmod_dt_decl="${ch4_netmod_dt_decl} \\
Packit Service c5cf8c
MPIDI_${net_upper}_dt_t ${net};"
Packit Service c5cf8c
    fi
Packit Service c5cf8c
    if test -z "$ch4_netmod_op_decl" ; then
Packit Service c5cf8c
        ch4_netmod_op_decl="MPIDI_${net_upper}_op_t ${net};"
Packit Service c5cf8c
    else
Packit Service c5cf8c
        ch4_netmod_op_decl="${ch4_netmod_op_decl} \\
Packit Service c5cf8c
MPIDI_${net_upper}_op_t ${net};"
Packit Service c5cf8c
    fi
Packit Service c5cf8c
    if test -z "$ch4_netmod_barrier_params_decl" ; then
Packit Service c5cf8c
        ch4_netmod_barrier_params_decl="MPIDI_${net_upper}_BARRIER_PARAMS_DECL;"
Packit Service c5cf8c
    else
Packit Service c5cf8c
        ch4_netmod_barrier_params_decl="${ch4_netmod_barrier_params_decl} \\
Packit Service c5cf8c
MPIDI_${net_upper}_BARRIER_PARAMS_DECL;"
Packit Service c5cf8c
    fi
Packit Service c5cf8c
    if test -z "$ch4_netmod_bcast_params_decl" ; then
Packit Service c5cf8c
        ch4_netmod_bcast_params_decl="MPIDI_${net_upper}_BCAST_PARAMS_DECL;"
Packit Service c5cf8c
    else
Packit Service c5cf8c
        ch4_netmod_bcast_params_decl="${ch4_netmod_bcast_params_decl} \\
Packit Service c5cf8c
MPIDI_${net_upper}_BCAST_PARAMS_DECL;"
Packit Service c5cf8c
    fi
Packit Service c5cf8c
    if test -z "$ch4_netmod_reduce_params_decl" ; then
Packit Service c5cf8c
        ch4_netmod_reduce_params_decl="MPIDI_${net_upper}_REDUCE_PARAMS_DECL;"
Packit Service c5cf8c
    else
Packit Service c5cf8c
        ch4_netmod_reduce_params_decl="${ch4_netmod_reduce_params_decl} \\
Packit Service c5cf8c
MPIDI_${net_upper}_REDUCE_PARAMS_DECL;"
Packit Service c5cf8c
    fi
Packit Service c5cf8c
    if test -z "$ch4_netmod_allreduce_params_decl" ; then
Packit Service c5cf8c
        ch4_netmod_allreduce_params_decl="MPIDI_${net_upper}_ALLREDUCE_PARAMS_DECL;"
Packit Service c5cf8c
    else
Packit Service c5cf8c
        ch4_netmod_allreduce_params_decl="${ch4_netmod_allreduce_params_decl} \\
Packit Service c5cf8c
MPIDI_${net_upper}_ALLREDUCE_PARAMS_DECL;"
Packit Service c5cf8c
    fi
Packit Service c5cf8c
    if test -z "$ch4_netmod_alltoall_params_decl" ; then
Packit Service c5cf8c
        ch4_netmod_alltoall_params_decl="MPIDI_${net_upper}_ALLTOALL_PARAMS_DECL;"
Packit Service c5cf8c
    else
Packit Service c5cf8c
        ch4_netmod_alltoall_params_decl="${ch4_netmod_alltoall_params_decl} \\
Packit Service c5cf8c
MPIDI_${net_upper}_ALLTOALL_PARAMS_DECL;"
Packit Service c5cf8c
    fi
Packit Service c5cf8c
    if test -z "$ch4_netmod_alltoallv_params_decl" ; then
Packit Service c5cf8c
        ch4_netmod_alltoallv_params_decl="MPIDI_${net_upper}_ALLTOALLV_PARAMS_DECL;"
Packit Service c5cf8c
    else
Packit Service c5cf8c
        ch4_netmod_alltoallv_params_decl="${ch4_netmod_alltoallv_params_decl} \\
Packit Service c5cf8c
MPIDI_${net_upper}_ALLTOALLV_PARAMS_DECL;"
Packit Service c5cf8c
    fi
Packit Service c5cf8c
    if test -z "$ch4_netmod_alltoallw_params_decl" ; then
Packit Service c5cf8c
        ch4_netmod_alltoallw_params_decl="MPIDI_${net_upper}_ALLTOALLW_PARAMS_DECL;"
Packit Service c5cf8c
    else
Packit Service c5cf8c
        ch4_netmod_alltoallw_params_decl="${ch4_netmod_alltoallw_params_decl} \\
Packit Service c5cf8c
MPIDI_${net_upper}_ALLTOALLW_PARAMS_DECL;"
Packit Service c5cf8c
    fi
Packit Service c5cf8c
    if test -z "$ch4_netmod_allgather_params_decl" ; then
Packit Service c5cf8c
        ch4_netmod_allgather_params_decl="MPIDI_${net_upper}_ALLGATHER_PARAMS_DECL;"
Packit Service c5cf8c
    else
Packit Service c5cf8c
        ch4_netmod_allgather_params_decl="${ch4_netmod_allgather_params_decl} \\
Packit Service c5cf8c
MPIDI_${net_upper}_ALLGATHER_PARAMS_DECL;"
Packit Service c5cf8c
    fi
Packit Service c5cf8c
    if test -z "$ch4_netmod_allgatherv_params_decl" ; then
Packit Service c5cf8c
        ch4_netmod_allgatherv_params_decl="MPIDI_${net_upper}_ALLGATHERV_PARAMS_DECL;"
Packit Service c5cf8c
    else
Packit Service c5cf8c
        ch4_netmod_allgatherv_params_decl="${ch4_netmod_allgatherv_params_decl} \\
Packit Service c5cf8c
MPIDI_${net_upper}_ALLGATHERV_PARAMS_DECL;"
Packit Service c5cf8c
    fi
Packit Service c5cf8c
    if test -z "$ch4_netmod_gather_params_decl" ; then
Packit Service c5cf8c
        ch4_netmod_gather_params_decl="MPIDI_${net_upper}_GATHER_PARAMS_DECL;"
Packit Service c5cf8c
    else
Packit Service c5cf8c
        ch4_netmod_gather_params_decl="${ch4_netmod_gather_params_decl} \\
Packit Service c5cf8c
MPIDI_${net_upper}_GATHER_PARAMS_DECL;"
Packit Service c5cf8c
    fi
Packit Service c5cf8c
    if test -z "$ch4_netmod_gatherv_params_decl" ; then
Packit Service c5cf8c
        ch4_netmod_gatherv_params_decl="MPIDI_${net_upper}_GATHERV_PARAMS_DECL;"
Packit Service c5cf8c
    else
Packit Service c5cf8c
        ch4_netmod_gatherv_params_decl="${ch4_netmod_gatherv_params_decl} \\
Packit Service c5cf8c
MPIDI_${net_upper}_GATHERV_PARAMS_DECL;"
Packit Service c5cf8c
    fi
Packit Service c5cf8c
    if test -z "$ch4_netmod_scatter_params_decl" ; then
Packit Service c5cf8c
        ch4_netmod_scatter_params_decl="MPIDI_${net_upper}_SCATTER_PARAMS_DECL;"
Packit Service c5cf8c
    else
Packit Service c5cf8c
        ch4_netmod_scatter_params_decl="${ch4_netmod_scatter_params_decl} \\
Packit Service c5cf8c
MPIDI_${net_upper}_SCATTER_PARAMS_DECL"
Packit Service c5cf8c
    fi
Packit Service c5cf8c
    if test -z "$ch4_netmod_scatterv_params_decl" ; then
Packit Service c5cf8c
        ch4_netmod_scatterv_params_decl="MPIDI_${net_upper}_SCATTERV_PARAMS_DECL;"
Packit Service c5cf8c
    else
Packit Service c5cf8c
        ch4_netmod_scatterv_params_decl="${ch4_netmod_scatterv_params_decl} \\
Packit Service c5cf8c
MPIDI_${net_upper}_SCATTERV_PARAMS_DECL;"
Packit Service c5cf8c
    fi
Packit Service c5cf8c
    if test -z "$ch4_netmod_reduce_scatter_params_decl" ; then
Packit Service c5cf8c
        ch4_netmod_reduce_scatter_params_decl="MPIDI_${net_upper}_REDUCE_SCATTER_PARAMS_DECL;"
Packit Service c5cf8c
    else
Packit Service c5cf8c
        ch4_netmod_reduce_scatter_params_decl="${ch4_netmod_reduce_scatter_params_decl} \\
Packit Service c5cf8c
MPIDI_${net_upper}_REDUCE_SCATTER_PARAMS_DECL;"
Packit Service c5cf8c
    fi
Packit Service c5cf8c
    if test -z "$ch4_netmod_reduce_scatter_block_params_decl" ; then
Packit Service c5cf8c
        ch4_netmod_reduce_scatter_block_params_decl="MPIDI_${net_upper}_REDUCE_SCATTER_BLOCK_PARAMS_DECL;"
Packit Service c5cf8c
    else
Packit Service c5cf8c
        ch4_netmod_reduce_scatter_block_params_decl="${ch4_netmod_reduce_scatter_block_params_decl} \\
Packit Service c5cf8c
MPIDI_${net_upper}_REDUCE_SCATTER_BLOCK_PARAMS_DECL;"
Packit Service c5cf8c
    fi
Packit Service c5cf8c
    if test -z "$ch4_netmod_scan_params_decl" ; then
Packit Service c5cf8c
        ch4_netmod_scan_params_decl="MPIDI_${net_upper}_SCAN_PARAMS_DECL;"
Packit Service c5cf8c
    else
Packit Service c5cf8c
        ch4_netmod_scan_params_decl="${ch4_netmod_scan_params_decl} \\
Packit Service c5cf8c
MPIDI_${net_upper}_SCAN_PARAMS_DECL;"
Packit Service c5cf8c
    fi
Packit Service c5cf8c
    if test -z "$ch4_netmod_exscan_params_decl" ; then
Packit Service c5cf8c
        ch4_netmod_exscan_params_decl="MPIDI_${net_upper}_EXSCAN_PARAMS_DECL;"
Packit Service c5cf8c
    else
Packit Service c5cf8c
        ch4_netmod_exscan_params_decl="${ch4_netmod_exscan_params_decl} \\
Packit Service c5cf8c
MPIDI_${net_upper}_EXSCAN_PARAMS_DECL;"
Packit Service c5cf8c
    fi
Packit Service c5cf8c
    if test -z "$ch4_netmod_win_decl" ; then
Packit Service c5cf8c
        ch4_netmod_win_decl="MPIDI_${net_upper}_win_t ${net};"
Packit Service c5cf8c
    else
Packit Service c5cf8c
        ch4_netmod_win_decl="${ch4_netmod_win_decl} \\
Packit Service c5cf8c
MPIDI_${net_upper}_win_t ${net};"
Packit Service c5cf8c
    fi
Packit Service c5cf8c
    if test -z "$ch4_netmod_addr_decl" ; then
Packit Service c5cf8c
        ch4_netmod_addr_decl="MPIDI_${net_upper}_addr_t ${net};"
Packit Service c5cf8c
    else
Packit Service c5cf8c
        ch4_netmod_addr_decl="${ch4_netmod_addr_decl} \\
Packit Service c5cf8c
MPIDI_${net_upper}_addr_t ${net};"
Packit Service c5cf8c
    fi
Packit Service c5cf8c
Packit Service c5cf8c
Packit Service c5cf8c
Packit Service c5cf8c
Packit Service c5cf8c
net_index=`expr $net_index + 1`
Packit Service c5cf8c
done
Packit Service c5cf8c
ch4_nets_array_sz=$net_index
Packit Service c5cf8c
Packit Service c5cf8c
AC_SUBST(device_name)
Packit Service c5cf8c
AC_SUBST(ch4_netmods)
Packit Service c5cf8c
AC_SUBST(ch4_nets_array)
Packit Service c5cf8c
AC_SUBST(ch4_nets_array_sz)
Packit Service c5cf8c
AC_SUBST(ch4_nets_func_decl)
Packit Service c5cf8c
AC_SUBST(ch4_nets_native_func_decl)
Packit Service c5cf8c
AC_SUBST(ch4_nets_func_array)
Packit Service c5cf8c
AC_SUBST(ch4_nets_native_func_array)
Packit Service c5cf8c
AC_SUBST(ch4_nets_strings)
Packit Service c5cf8c
AC_SUBST(ch4_netmod_pre_include)
Packit Service c5cf8c
AC_SUBST(ch4_netmod_coll_globals_default)
Packit Service c5cf8c
AC_SUBST(ch4_netmod_coll_params_include)
Packit Service c5cf8c
AC_SUBST(ch4_netmod_amrequest_decl)
Packit Service c5cf8c
AC_SUBST(ch4_netmod_request_decl)
Packit Service c5cf8c
AC_SUBST(ch4_netmod_comm_decl)
Packit Service c5cf8c
AC_SUBST(ch4_netmod_dt_decl)
Packit Service c5cf8c
AC_SUBST(ch4_netmod_win_decl)
Packit Service c5cf8c
AC_SUBST(ch4_netmod_addr_decl)
Packit Service c5cf8c
AC_SUBST(ch4_netmod_op_decl)
Packit Service c5cf8c
AC_SUBST(ch4_netmod_barrier_params_decl)
Packit Service c5cf8c
AC_SUBST(ch4_netmod_bcast_params_decl)
Packit Service c5cf8c
AC_SUBST(ch4_netmod_reduce_params_decl)
Packit Service c5cf8c
AC_SUBST(ch4_netmod_allreduce_params_decl)
Packit Service c5cf8c
AC_SUBST(ch4_netmod_alltoall_params_decl)
Packit Service c5cf8c
AC_SUBST(ch4_netmod_alltoallv_params_decl)
Packit Service c5cf8c
AC_SUBST(ch4_netmod_alltoallw_params_decl)
Packit Service c5cf8c
AC_SUBST(ch4_netmod_allgather_params_decl)
Packit Service c5cf8c
AC_SUBST(ch4_netmod_allgatherv_params_decl)
Packit Service c5cf8c
AC_SUBST(ch4_netmod_gather_params_decl)
Packit Service c5cf8c
AC_SUBST(ch4_netmod_gatherv_params_decl)
Packit Service c5cf8c
AC_SUBST(ch4_netmod_scatter_params_decl)
Packit Service c5cf8c
AC_SUBST(ch4_netmod_scatterv_params_decl)
Packit Service c5cf8c
AC_SUBST(ch4_netmod_reduce_scatter_params_decl)
Packit Service c5cf8c
AC_SUBST(ch4_netmod_reduce_scatter_block_params_decl)
Packit Service c5cf8c
AC_SUBST(ch4_netmod_scan_params_decl)
Packit Service c5cf8c
AC_SUBST(ch4_netmod_exscan_params_decl)
Packit Service c5cf8c
AM_SUBST_NOTMAKE(ch4_netmod_pre_include)
Packit Service c5cf8c
AM_SUBST_NOTMAKE(ch4_netmod_coll_globals_default)
Packit Service c5cf8c
AM_SUBST_NOTMAKE(ch4_netmod_coll_params_include)
Packit Service c5cf8c
AM_SUBST_NOTMAKE(ch4_netmod_amrequest_decl)
Packit Service c5cf8c
AM_SUBST_NOTMAKE(ch4_netmod_request_decl)
Packit Service c5cf8c
AM_SUBST_NOTMAKE(ch4_netmod_comm_decl)
Packit Service c5cf8c
AM_SUBST_NOTMAKE(ch4_netmod_dt_decl)
Packit Service c5cf8c
AM_SUBST_NOTMAKE(ch4_netmod_win_decl)
Packit Service c5cf8c
AM_SUBST_NOTMAKE(ch4_netmod_addr_decl)
Packit Service c5cf8c
AM_SUBST_NOTMAKE(ch4_netmod_op_decl)
Packit Service c5cf8c
AM_SUBST_NOTMAKE(ch4_netmod_barrier_params_decl)
Packit Service c5cf8c
AM_SUBST_NOTMAKE(ch4_netmod_bcast_params_decl)
Packit Service c5cf8c
AM_SUBST_NOTMAKE(ch4_netmod_reduce_params_decl)
Packit Service c5cf8c
AM_SUBST_NOTMAKE(ch4_netmod_allreduce_params_decl)
Packit Service c5cf8c
AM_SUBST_NOTMAKE(ch4_netmod_alltoall_params_decl)
Packit Service c5cf8c
AM_SUBST_NOTMAKE(ch4_netmod_alltoallv_params_decl)
Packit Service c5cf8c
AM_SUBST_NOTMAKE(ch4_netmod_alltoallw_params_decl)
Packit Service c5cf8c
AM_SUBST_NOTMAKE(ch4_netmod_allgather_params_decl)
Packit Service c5cf8c
AM_SUBST_NOTMAKE(ch4_netmod_allgatherv_params_decl)
Packit Service c5cf8c
AM_SUBST_NOTMAKE(ch4_netmod_gather_params_decl)
Packit Service c5cf8c
AM_SUBST_NOTMAKE(ch4_netmod_gatherv_params_decl)
Packit Service c5cf8c
AM_SUBST_NOTMAKE(ch4_netmod_scatter_params_decl)
Packit Service c5cf8c
AM_SUBST_NOTMAKE(ch4_netmod_scatterv_params_decl)
Packit Service c5cf8c
AM_SUBST_NOTMAKE(ch4_netmod_reduce_scatter_params_decl)
Packit Service c5cf8c
AM_SUBST_NOTMAKE(ch4_netmod_reduce_scatter_block_params_decl)
Packit Service c5cf8c
AM_SUBST_NOTMAKE(ch4_netmod_scan_params_decl)
Packit Service c5cf8c
AM_SUBST_NOTMAKE(ch4_netmod_exscan_params_decl)
Packit Service c5cf8c
Packit Service c5cf8c
AC_ARG_ENABLE(ch4-netmod-inline,
Packit Service c5cf8c
    [--enable-ch4-netmod-inline
Packit Service c5cf8c
       Enables inlined netmod build when a single netmod is used
Packit Service c5cf8c
       level:
Packit Service c5cf8c
         yes       - Enabled (default)
Packit Service c5cf8c
         no        - Disabled (may improve build times and code size)
Packit Service c5cf8c
    ],,enable_ch4_netmod_inline=yes)
Packit Service c5cf8c
Packit Service c5cf8c
Packit Service c5cf8c
AC_ARG_ENABLE(ch4-netmod-direct,
Packit Service c5cf8c
    [--enable-ch4-netmod-direct
Packit Service c5cf8c
       (Deprecated in favor of ch4-netmod-inline)
Packit Service c5cf8c
       Enables inlined netmod build when a single netmod is used
Packit Service c5cf8c
       level:
Packit Service c5cf8c
         yes       - Enabled (default)
Packit Service c5cf8c
         no        - Disabled (may improve build times and code size)
Packit Service c5cf8c
    ],,)
Packit Service c5cf8c
Packit Service c5cf8c
if test "$ch4_nets_array_sz" = "1" && (test "$enable_ch4_netmod_inline" = "yes" || test "$enable_ch4_netmod_direct" = "yes") ;  then
Packit Service c5cf8c
   PAC_APPEND_FLAG([-DNETMOD_INLINE=__netmod_inline_${ch4_netmods}__], [CPPFLAGS])
Packit Service c5cf8c
fi
Packit Service c5cf8c
Packit Service c5cf8c
AC_ARG_ENABLE(ch4-direct,
Packit Service c5cf8c
    [--enable-ch4-direct
Packit Service c5cf8c
       Defines the direct communication routine used in CH4 device
Packit Service c5cf8c
       level:
Packit Service c5cf8c
         netmod     - Directly transfer data through the chosen netmode
Packit Service c5cf8c
         auto       - The CH4 device controls whether transfer data through netmod
Packit Service c5cf8c
                      or through shared memory based on locality
Packit Service c5cf8c
    ],,enable_ch4_direct=default)
Packit Service c5cf8c
Packit Service c5cf8c
AC_ARG_ENABLE(ch4-shm-inline,
Packit Service c5cf8c
    [--enable-ch4-shm-inline
Packit Service c5cf8c
       Enables inlined shared memory build when a single shared memory module is used
Packit Service c5cf8c
       level:
Packit Service c5cf8c
         yes       - Enabled (default)
Packit Service c5cf8c
         no        - Disabled (may improve build times and code size)
Packit Service c5cf8c
    ],,enable_ch4_shm_inline=yes)
Packit Service c5cf8c
Packit Service c5cf8c
AC_ARG_ENABLE(ch4-shm-direct,
Packit Service c5cf8c
    [--enable-ch4-shm-direct
Packit Service c5cf8c
       (Deprecated in favor of ch4-shm-inline)
Packit Service c5cf8c
       Enables inlined shared memory build when a single shared memory module is used
Packit Service c5cf8c
       level:
Packit Service c5cf8c
         yes       - Enabled (default)
Packit Service c5cf8c
         no        - Disabled (may improve build times and code size)
Packit Service c5cf8c
    ],,)
Packit Service c5cf8c
Packit Service c5cf8c
if test "$enable_ch4_shm_inline" = "yes" || test "$enable_ch4_shm_direct" = "yes" ;  then
Packit Service c5cf8c
   PAC_APPEND_FLAG([-DSHM_INLINE=__shm_inline_${ch4_shm}__], [CPPFLAGS])
Packit Service c5cf8c
fi
Packit Service c5cf8c
Packit Service c5cf8c
# setup shared memory defaults
Packit Service c5cf8c
# TODO: shm submodules should be chosen with similar configure option as that used for netmod.
Packit Service c5cf8c
# We can add it when a shm submodule is added. Now we just simply set POSIX.
Packit Service c5cf8c
ch4_shm=posix
Packit Service c5cf8c
export ch4_shm
Packit Service c5cf8c
Packit Service c5cf8c
# setup default direct communication routine
Packit Service c5cf8c
if test "${enable_ch4_direct}" = "default" ; then
Packit Service c5cf8c
    # ucx can only choose direct netmod because it does not handle any_src
Packit Service c5cf8c
    # receive when both nemod and shared memory are used.
Packit Service c5cf8c
    if test "${ch4_netmods}" = "ucx" ; then
Packit Service c5cf8c
        enable_ch4_direct=netmod
Packit Service c5cf8c
    else
Packit Service c5cf8c
        enable_ch4_direct=auto
Packit Service c5cf8c
    fi
Packit Service c5cf8c
fi
Packit Service c5cf8c
Packit Service c5cf8c
if test "$enable_ch4_direct" != "auto" -a "$enable_ch4_direct" != "netmod"; then
Packit Service c5cf8c
    AC_MSG_ERROR([Direct comunication option ${enable_ch4_direct} is unknown])
Packit Service c5cf8c
fi
Packit Service c5cf8c
Packit Service c5cf8c
if test "$enable_ch4_direct" = "auto" ; then
Packit Service c5cf8c
    # This variable can be set either when CH4 controls the data transfer routine
Packit Service c5cf8c
    # or when the netmod doesn't want to implement its own locality information
Packit Service c5cf8c
    AC_DEFINE(MPIDI_BUILD_CH4_LOCALITY_INFO, 1, [CH4 should build locality info])
Packit Service c5cf8c
elif test "$enable_ch4_direct" = "netmod" ; then
Packit Service c5cf8c
    AC_DEFINE(MPIDI_CH4_DIRECT_NETMOD, 1, [CH4 Directly transfers data through the chosen netmode])
Packit Service c5cf8c
fi
Packit Service c5cf8c
Packit Service c5cf8c
])dnl end AM_COND_IF(BUILD_CH4,...)
Packit Service c5cf8c
])dnl end PREREQ
Packit Service c5cf8c
Packit Service c5cf8c
AC_DEFUN([PAC_SUBCFG_BODY_]PAC_SUBCFG_AUTO_SUFFIX,[
Packit Service c5cf8c
AM_COND_IF([BUILD_CH4],[
Packit Service c5cf8c
AC_MSG_NOTICE([RUNNING CONFIGURE FOR CH4 DEVICE])
Packit Service c5cf8c
Packit Service c5cf8c
AC_ARG_WITH(ch4-rank-bits, [--with-ch4-rank-bits=16/32     Number of bits allocated to the rank field (16 or 32)],
Packit Service c5cf8c
			   [ rankbits=$withval ],
Packit Service c5cf8c
			   [ rankbits=32 ])
Packit Service c5cf8c
if test "$rankbits" != "16" -a "$rankbits" != "32" ; then
Packit Service c5cf8c
   AC_MSG_ERROR(Only 16 or 32-bit ranks are supported)
Packit Service c5cf8c
fi
Packit Service c5cf8c
AC_DEFINE_UNQUOTED(CH4_RANK_BITS,$rankbits,[Define the number of CH4_RANK_BITS])
Packit Service c5cf8c
Packit Service c5cf8c
AC_ARG_ENABLE(ch4r-per-comm-msg-queue,
Packit Service c5cf8c
    [--enable-ch4r-per-comm-msg-queue=option
Packit Service c5cf8c
       Enable use of per-communicator message queues for posted recvs/unexpected messages
Packit Service c5cf8c
         yes       - Use per-communicator message queue. (Default)
Packit Service c5cf8c
         no        - Use global queue for posted recvs/unexpected messages.
Packit Service c5cf8c
    ],,enable_ch4r_per_comm_msg_queue=yes)
Packit Service c5cf8c
Packit Service c5cf8c
if test "$enable_ch4r_per_comm_msg_queue" = "yes" ; then
Packit Service c5cf8c
    AC_DEFINE([MPIDI_CH4U_USE_PER_COMM_QUEUE], [1],
Packit Service c5cf8c
        [Define if CH4U will use per-communicator message queues])
Packit Service c5cf8c
fi
Packit Service c5cf8c
Packit Service c5cf8c
AC_ARG_ENABLE(ch4-mt,
Packit Service c5cf8c
    [--enable-ch4-mt=model
Packit Service c5cf8c
       Select model for multi-threading
Packit Service c5cf8c
         direct    - Each thread directly accesses lower-level fabric (default)
Packit Service c5cf8c
         handoff   - Use the hand-off model (spawns progress thread)
Packit Service c5cf8c
         trylock   - Use the trylock-enqueue model
Packit Service c5cf8c
         runtime   - Determine the model at runtime through a CVAR
Packit Service c5cf8c
    ],,enable_ch4_mt=direct)
Packit Service c5cf8c
Packit Service c5cf8c
case $enable_ch4_mt in
Packit Service c5cf8c
     direct)
Packit Service c5cf8c
         AC_DEFINE([MPIDI_CH4_USE_MT_DIRECT], [1],
Packit Service c5cf8c
            [Define to enable direct multi-threading model])
Packit Service c5cf8c
        ;;
Packit Service c5cf8c
     handoff)
Packit Service c5cf8c
         AC_DEFINE([MPIDI_CH4_USE_MT_HANDOFF], [1],
Packit Service c5cf8c
            [Define to enable hand-off multi-threading model])
Packit Service c5cf8c
        ;;
Packit Service c5cf8c
     trylock)
Packit Service c5cf8c
         AC_DEFINE([MPIDI_CH4_USE_MT_TRYLOCK], [1],
Packit Service c5cf8c
            [Define to enable trylock-enqueue multi-threading model])
Packit Service c5cf8c
        ;;
Packit Service c5cf8c
     runtime)
Packit Service c5cf8c
         AC_DEFINE([MPIDI_CH4_USE_MT_RUNTIME], [1],
Packit Service c5cf8c
            [Define to enable runtime multi-threading model])
Packit Service c5cf8c
        ;;
Packit Service c5cf8c
     *)
Packit Service c5cf8c
        AC_MSG_ERROR([Multi-threading model ${enable_ch4_mt} is unknown])
Packit Service c5cf8c
        ;;
Packit Service c5cf8c
esac
Packit Service c5cf8c
Packit Service c5cf8c
#
Packit Service c5cf8c
# Dependency checks for CH4 MT modes
Packit Service c5cf8c
# Currently, "handoff", "trylock", and "runtime" require the followings:
Packit Service c5cf8c
# - izem linked in (--with-zm-prefix)
Packit Service c5cf8c
# - enable-thread-cs=per-vni
Packit Service c5cf8c
#
Packit Service c5cf8c
if test "$enable_ch4_mt" != "direct"; then
Packit Service c5cf8c
    if test "${with_zm_prefix}" == "no" -o "${with_zm_prefix}" == "none" -o "${izem_queue}" != "yes" ; then
Packit Service c5cf8c
        AC_MSG_ERROR([Multi-threading model `${enable_ch4_mt}` requires izem queue. Set `--enable-izem={queue|all} --with-zm-prefix` and retry.])
Packit Service c5cf8c
    elif test "${enable_thread_cs}" != "per-vni" -a "${enable_thread_cs}" != "per_vni"; then
Packit Service c5cf8c
        AC_MSG_ERROR([Multi-threading model `${enable_ch4_mt}` requires `--enable-thread-cs=per-vni`.])
Packit Service c5cf8c
    fi
Packit Service c5cf8c
fi
Packit Service c5cf8c
Packit Service c5cf8c
AC_CHECK_HEADERS(sys/mman.h sys/stat.h fcntl.h)
Packit Service c5cf8c
AC_CHECK_FUNC(mmap, [], [AC_MSG_ERROR(mmap is required to build CH4)])
Packit Service c5cf8c
Packit Service c5cf8c
gl_FUNC_RANDOM_R
Packit Service c5cf8c
if test "$HAVE_RANDOM_R" = "1" -a "$HAVE_STRUCT_RANDOM_DATA" = "1" ; then
Packit Service c5cf8c
    AC_DEFINE(USE_SYM_HEAP,1,[Define if we can use a symmetric heap])
Packit Service c5cf8c
    AC_MSG_NOTICE([Using a symmetric heap])
Packit Service c5cf8c
else
Packit Service c5cf8c
    AC_MSG_NOTICE([Using a non-symmetric heap])
Packit Service c5cf8c
fi
Packit Service c5cf8c
Packit Service c5cf8c
AC_CHECK_FUNCS(gethostname)
Packit Service c5cf8c
if test "$ac_cv_func_gethostname" = "yes" ; then
Packit Service c5cf8c
    # Do we need to declare gethostname?
Packit Service c5cf8c
    PAC_FUNC_NEEDS_DECL([#include <unistd.h>],gethostname)
Packit Service c5cf8c
fi
Packit Service c5cf8c
Packit Service c5cf8c
# make sure we support signal
Packit Service c5cf8c
AC_CHECK_HEADERS(signal.h)
Packit Service c5cf8c
AC_CHECK_FUNCS(signal)
Packit Service c5cf8c
Packit Service c5cf8c
AC_CONFIG_FILES([
Packit Service c5cf8c
src/mpid/ch4/src/mpid_ch4_net_array.c
Packit Service c5cf8c
src/mpid/ch4/include/netmodpre.h
Packit Service c5cf8c
src/mpid/ch4/include/coll_algo_params.h
Packit Service c5cf8c
src/mpid/ch4/src/ch4_coll_globals_default.c
Packit Service c5cf8c
])
Packit Service c5cf8c
])dnl end AM_COND_IF(BUILD_CH4,...)
Packit Service c5cf8c
Packit Service c5cf8c
AM_CONDITIONAL([BUILD_CH4_COLL_TUNING],[test -e "$srcdir/src/mpid/ch4/src/ch4_coll_globals.c"])
Packit Service c5cf8c
Packit Service c5cf8c
])dnl end _BODY
Packit Service c5cf8c
Packit Service c5cf8c
[#] end of __file__