Commit c1d1547d authored by Andreas Marek's avatar Andreas Marek
Browse files

C interfaces for device pointer routines

parent 32cb52a3
......@@ -60,6 +60,66 @@
elpa_eigenvectors_all_host_arrays_fc \
)(handle, a, ev, q, error)
/*! \brief generic C method for elpa_eigenvectors_double
*
* \details
* \param handle handle of the ELPA object, which defines the problem
* \param a double device pointer to matrix a in GPU memory
* \param ev on return: double pointer to eigenvalues in GPU memory
* \param q on return: double pointer to eigenvectors in GPU memory
* \param error on return the error code, which can be queried with elpa_strerr()
* \result void
*/
#define elpa_eigenvectors_double(handle, a, ev, q, error) _Generic((a), \
double*: \
elpa_eigenvectors_device_pointer_d \
)(handle, a, ev, q, error)
/*! \brief generic C method for elpa_eigenvectors_float
*
* \details
* \param handle handle of the ELPA object, which defines the problem
* \param a float device pointer to matrix a in GPU memory
* \param ev on return: float pointer to eigenvalues in GPU memory
* \param q on return: float pointer to eigenvectors in GPU memory
* \param error on return the error code, which can be queried with elpa_strerr()
* \result void
*/
#define elpa_eigenvectors_float(handle, a, ev, q, error) _Generic((a), \
float*: \
elpa_eigenvectors_device_pointer_f \
)(handle, a, ev, q, error)
/*! \brief generic C method for elpa_eigenvectors_double_complex
*
* \details
* \param handle handle of the ELPA object, which defines the problem
* \param a double complex device pointer to matrix a in GPU memory
* \param ev on return: double pointer to eigenvalues in GPU memory
* \param q on return: double complex pointer to eigenvectors in GPU memory
* \param error on return the error code, which can be queried with elpa_strerr()
* \result void
*/
#define elpa_eigenvectors_double_complex(handle, a, ev, q, error) _Generic((a), \
double complex*: \
elpa_eigenvectors_device_pointer_dc \
)(handle, a, ev, q, error)
/*! \brief generic C method for elpa_eigenvectors_float_complex
*
* \details
* \param handle handle of the ELPA object, which defines the problem
* \param a float complex device pointer to matrix a in GPU memory
* \param ev on return: float pointer to eigenvalues in GPU memory
* \param q on return: float complex pointer to eigenvectors in GPU memory
* \param error on return the error code, which can be queried with elpa_strerr()
* \result void
*/
#define elpa_eigenvectors_float_complex(handle, a, ev, q, error) _Generic((a), \
float complex*: \
elpa_eigenvectors_device_pointer_fc \
)(handle, a, ev, q, error)
/*! \brief generic C method for elpa_skew_eigenvectors
*
* \details
......@@ -75,10 +135,38 @@
elpa_eigenvectors_all_host_arrays_d, \
\
float*: \
elpa_eigenvectors_all_host_arrays_f, \
elpa_eigenvectors_all_host_arrays_f \
)(handle, a, ev, q, error)
/*! \brief generic C method for elpa_skew_eigenvectors_double
*
* \details
* \param handle handle of the ELPA object, which defines the problem
* \param a double pointer to matrix a
* \param ev on return: double pointer to eigenvalues
* \param q on return: double pointer to eigenvectors
* \param error on return the error code, which can be queried with elpa_strerr()
* \result void
*/
#define elpa_skew_eigenvectors_double(handle, a, ev, q, error) _Generic((a), \
double*: \
elpa_eigenvectors_device_pointer_d \
)(handle, a, ev, q, error)
/*! \brief generic C method for elpa_skew_eigenvectors_float
*
* \details
* \param handle handle of the ELPA object, which defines the problem
* \param a float pointer to matrix a
* \param ev on return: float pointer to eigenvalues
* \param q on return: float pointer to eigenvectors
* \param error on return the error code, which can be queried with elpa_strerr()
* \result void
*/
#define elpa_skew_eigenvectors_float(handle, a, ev, q, error) _Generic((a), \
float*: \
elpa_eigenvectors_device_pointer_f \
)(handle, a, ev, q, error)
/*! \brief generic C method for elpa_generalized_eigenvectors
*
......@@ -130,6 +218,62 @@
elpa_eigenvalues_all_host_arrays_fc \
)(handle, a, ev, error)
/*! \brief generic C method for elpa_eigenvalues_double
*
* \details
* \param handle handle of the ELPA object, which defines the problem
* \param a double pointer to matrix a in GPU memory
* \param ev on return: double pointer to eigenvalues in GPU memory
* \param error on return the error code, which can be queried with elpa_strerr()
* \result void
*/
#define elpa_eigenvalues_double(handle, a, ev, error) _Generic((a), \
double*: \
elpa_eigenvalues_device_pointer_d \
)(handle, a, ev, error)
/*! \brief generic C method for elpa_eigenvalues_float
*
* \details
* \param handle handle of the ELPA object, which defines the problem
* \param a float pointer to matrix a in GPU memory
* \param ev on return: float pointer to eigenvalues in GPU memory
* \param error on return the error code, which can be queried with elpa_strerr()
* \result void
*/
#define elpa_eigenvalues_float(handle, a, ev, error) _Generic((a), \
float*: \
elpa_eigenvalues_device_pointer_f \
)(handle, a, ev, error)
/*! \brief generic C method for elpa_eigenvalues_double_complex
*
* \details
* \param handle handle of the ELPA object, which defines the problem
* \param a double complex pointer to matrix a in GPU memory
* \param ev on return: double pointer to eigenvalues in GPU memory
* \param error on return the error code, which can be queried with elpa_strerr()
* \result void
*/
#define elpa_eigenvalues_double_complex(handle, a, ev, error) _Generic((a), \
double complex*: \
elpa_eigenvalues_device_pointer_dc \
)(handle, a, ev, error)
/*! \brief generic C method for elpa_eigenvalues_float_complex
*
* \details
* \param handle handle of the ELPA object, which defines the problem
* \param a float complex pointer to matrix a in GPU memory
* \param ev on return: float pointer to eigenvalues in GPU memory
* \param error on return the error code, which can be queried with elpa_strerr()
* \result void
*/
#define elpa_eigenvalues_float_complex(handle, a, ev, error) _Generic((a), \
float complex*: \
elpa_eigenvalues_device_pointer_fc \
)(handle, a, ev, error)
/*! \brief generic C method for elpa_skew_eigenvalues
*
* \details
......@@ -147,6 +291,34 @@
elpa_eigenvalues_all_host_arrays_f, \
)(handle, a, ev, error)
/*! \brief generic C method for elpa_skew_eigenvalues_double
*
* \details
* \param handle handle of the ELPA object, which defines the problem
* \param a double pointer to matrix a
* \param ev on return: double pointer to eigenvalues
* \param error on return the error code, which can be queried with elpa_strerr()
* \result void
*/
#define elpa_skew_eigenvalues_double(handle, a, ev, error) _Generic((a), \
double*: \
elpa_eigenvalues_device_pointer_d \
)(handle, a, ev, error)
/*! \brief generic C method for elpa_skew_eigenvalues_float
*
* \details
* \param handle handle of the ELPA object, which defines the problem
* \param a float pointer to matrix a
* \param ev on return: float pointer to eigenvalues
* \param error on return the error code, which can be queried with elpa_strerr()
* \result void
*/
#define elpa_skew_eigenvalues_float(handle, a, ev, error) _Generic((a), \
float*: \
elpa_eigenvalues_device_pointer_f \
)(handle, a, ev, error)
/* \brief generic C method for elpa_cholesky
*
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment