49 return "unknown BLAS";
56 typedef void (*flexi_f_type) (
int *,
int *,
int *);
57 flexi_f_type flexi_f_ptr =
reinterpret_cast<flexi_f_type
>
58 (dyn_libs.
search (
"flexiblas_get_version"));
65 flexi_f_ptr (&v_major, &v_minor, &v_patch);
68 s <<
"FlexiBLAS Version "
69 << v_major <<
"." << v_minor <<
"." << v_patch;
75 typedef char *(*open_fcn_type) ();
76 open_fcn_type open_f_ptr =
reinterpret_cast<open_fcn_type
>
77 (dyn_libs.
search (
"openblas_get_config"));
81 if (! retval.empty ())
84 retval +=
"OpenBLAS (config: " + std::string (open_f_ptr ()) +
")";
88 else if (dyn_libs.
search (
"openblas_get_num_threads"))
90 if (! retval.empty ())
93 retval +=
"OpenBLAS (config: unknown)";
97 if (dyn_libs.
search (
"gotoblas_profile_init"))
99 if (! retval.empty ())
102 retval +=
"GotoBLAS(2)";
108 if (dyn_libs.
search (
"ATL_buildinfo"))
110 if (! retval.empty ())
117 typedef void (*acml_f_type) (
int *,
int *,
int *);
118 acml_f_type acml_f_ptr =
reinterpret_cast<acml_f_type
>
119 (dyn_libs.
search (
"acmlversion"));
126 acml_f_ptr (&v_major, &v_minor, &v_patch);
128 std::ostringstream s;
129 s <<
"ACML BLAS Version "
130 << v_major <<
"." << v_minor <<
"." << v_patch;
132 if (! retval.empty ())
139 typedef void (*mkl_f_type) (
char *,
int);
140 mkl_f_type mkl_f_ptr =
reinterpret_cast<mkl_f_type
>
141 (dyn_libs.
search (
"mkl_get_version_string"));
147 mkl_f_ptr (buf, (198 - 1));
149 if (! retval.empty ())
152 retval += std::string (buf);
157 retval =
"unknown or reference BLAS";
F77_RET_T(F77_CONST_CHAR_ARG_DECL, F77_CONST_CHAR_ARG_DECL, F77_CONST_CHAR_ARG_DECL, const F77_INT &, const F77_INT &, const F77_INT &, F77_INT &, F77_INT &, F77_DBLE *, const F77_INT &, F77_DBLE *, const F77_INT &, F77_DBLE *, F77_DBLE *, F77_DBLE *, const F77_INT &, F77_DBLE *, const F77_INT &, F77_DBLE *, const F77_INT &, F77_DBLE *, F77_INT *, F77_INT &F77_CHAR_ARG_LEN_DECL F77_CHAR_ARG_LEN_DECL F77_CHAR_ARG_LEN_DECL)