ax_elpa_specific_kernels.m4 4 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

dnl macro for testing whether the user wanted to compile only with one
dnl specific real kernel

dnl usage: DEFINE_OPTION([real-generic-kernel-only],[generic-kernel],[with_real_generic_kernel],[install_real_generic])

AC_DEFUN([DEFINE_OPTION_SPECIFIC_REAL_KERNEL],[
  AC_ARG_WITH([$1],
               AS_HELP_STRING([--with-$1],
                              [only compile $2 for real case]),
              [with_option=yes],[with_option=no])

   if test x"${with_option}" = x"yes" ; then
    if test x"${use_specific_real_kernel}" = x"no" ; then

    dnl make sure that all the other kernels are unset
    install_real_generic=no
    install_real_generic_simple=no
    install_real_sse=no
    install_real_bgp=no
    install_real_bgq=no
    install_real_avx_block2=no
    install_real_avx_block4=no
    install_real_avx_block6=no
Andreas Marek's avatar
Andreas Marek committed
25
    want_avx=no
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
    install_gpu=no

    use_specific_real_kernel=yes
    dnl now set the specific kernel
    $3=yes

    dnl in case of SSE or AVX make sure that we can compile the choosen kernel
    if test x"${install_real_sse}" = x"yes" ; then
     if test x"${can_compile_sse}" = x"no" ; then
       AC_MSG_ERROR([$2 kernel was set, but cannot be compiled!])
     fi
    fi

    if test x"${install_real_avx_block2}" = x"yes" ; then
     if test x"${can_compile_avx}" = x"no" ; then
       AC_MSG_ERROR([$2 kernel was set, but cannot be compiled!])
Andreas Marek's avatar
Andreas Marek committed
42 43
     else
       want_avx=yes
44 45 46 47 48 49
     fi
    fi

    if test x"${install_real_avx_block4}" = x"yes" ; then
     if test x"${can_compile_avx}" = x"no" ; then
       AC_MSG_ERROR([$2 kernel was set, but cannot be compiled!])
Andreas Marek's avatar
Andreas Marek committed
50 51
     else
       want_avx=yes
52 53 54 55 56 57
     fi
    fi

    if test x"${install_real_avx_block6}" = x"yes" ; then
     if test x"${can_compile_avx}" = x"no" ; then
       AC_MSG_ERROR([$2 kernel was set, but cannot be compiled!])
Andreas Marek's avatar
Andreas Marek committed
58 59
     else
       want_avx=yes
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
     fi
    fi

    AC_MSG_NOTICE([$1 will be the only compiled kernel for real case])
    if test x"${want_gpu}" = x"yes" ; then
      AC_MSG_WARN([At the moment this disables GPU support!])
      AC_MSG_WARN([IF GPU support is wanted do NOT specify a specific real kernel])
    fi
   else
    AC_MSG_FAILURE([$1 failed; A specific kernel for real case has already been defined before!])
   fi
  fi
])


AC_DEFUN([DEFINE_OPTION_SPECIFIC_COMPLEX_KERNEL],[
  AC_ARG_WITH([$1],
                 AS_HELP_STRING([--with-$1],
                                [only compile $2 for complex case]),
              [with_option=yes],[with_option=no])

   if test x"${with_option}" = x"yes" ; then
    if test x"${use_specific_complex_kernel}" = x"no" ; then

    dnl make sure that all the other kernels are unset
    install_complex_generic=no
    install_complex_generic_simple=no
    install_complex_sse=no
    install_complex_bgp=no
    install_complex_bgq=no
    install_complex_avx_block1=no
    install_complex_avx_block2=no
Andreas Marek's avatar
Andreas Marek committed
92
    want_avx=no
93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108

    install_gpu=no
    use_specific_complex_kernel=yes
    dnl now set the specific kernel
    $3=yes

    dnl in case of SSE or AVX make sure that we can compile the choosen kernel
    if test x"${install_complex_sse}" = x"yes" ; then
     if test x"${can_compile_sse}" = x"no" ; then
       AC_MSG_ERROR([$2 kernel was set, but cannot be compiled!])
     fi
    fi

    if test x"${install_complex_avx_block1}" = x"yes" ; then
     if test x"${can_compile_avx}" = x"no" ; then
       AC_MSG_ERROR([$2 kernel was set, but cannot be compiled!])
Andreas Marek's avatar
Andreas Marek committed
109 110
     else
       want_avx=yes
111 112 113 114 115 116
     fi
    fi

    if test x"${install_complex_avx_block2}" = x"yes" ; then
     if test x"${can_compile_avx}" = x"no" ; then
       AC_MSG_ERROR([$2 kernel was set, but cannot be compiled!])
Andreas Marek's avatar
Andreas Marek committed
117 118
     else
       want_avx=yes
119 120 121 122 123 124 125 126 127 128 129 130 131 132
     fi
    fi

    AC_MSG_NOTICE([$1 will be the only compiled kernel for real case])
    if test x"${want_gpu}" = x"yes" ; then
      AC_MSG_WARN([At the moment this disables GPU support!])
      AC_MSG_WARN([IF GPU support is wanted do NOT specify a specific complex kernel])
    fi
   else
    AC_MSG_FAILURE([$1 failed; A specific kernel for real case has already been defined before!])
   fi
  fi
])