Files
TheRock/rocm-libraries/projects/hipblas/clients/include/hipblas_fortran.hpp
T
derek.holloway 7502bf64a4
CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00

870 lines
52 KiB
C++

/* ************************************************************************
* Copyright (C) 2020-2025 Advanced Micro Devices, Inc. All rights reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
* ************************************************************************ */
#ifndef _HIPBLAS_FORTRAN_HPP
#define _HIPBLAS_FORTRAN_HPP
/*!\file
* This file interfaces with our Fortran BLAS interface.
*/
/*
* ============================================================================
* Fortran functions
* ============================================================================
*/
extern "C" {
#include "hipblas_fortran.h.in"
#define HIPBLAS_INTERNAL_ILP64 1
#include "hipblas_fortran.h.in"
#undef HIPBLAS_INTERNAL_ILP64
/* ==========
* Aux
* ========== */
hipblasStatus_t
hipblasSetVectorFortran(int n, int elemSize, const void* x, int incx, void* y, int incy);
hipblasStatus_t
hipblasGetVectorFortran(int n, int elemSize, const void* x, int incx, void* y, int incy);
hipblasStatus_t hipblasSetMatrixFortran(
int rows, int cols, int elemSize, const void* A, int lda, void* B, int ldb);
hipblasStatus_t hipblasGetMatrixFortran(
int rows, int cols, int elemSize, const void* A, int lda, void* B, int ldb);
hipblasStatus_t hipblasSetVectorAsyncFortran(
int n, int elemSize, const void* x, int incx, void* y, int incy, hipStream_t stream);
hipblasStatus_t hipblasGetVectorAsyncFortran(
int n, int elemSize, const void* x, int incx, void* y, int incy, hipStream_t stream);
hipblasStatus_t hipblasSetMatrixAsyncFortran(
int rows, int cols, int elemSize, const void* A, int lda, void* B, int ldb, hipStream_t stream);
hipblasStatus_t hipblasGetMatrixAsyncFortran(
int rows, int cols, int elemSize, const void* A, int lda, void* B, int ldb, hipStream_t stream);
hipblasStatus_t hipblasSetAtomicsModeFortran(hipblasHandle_t handle,
hipblasAtomicsMode_t atomics_mode);
hipblasStatus_t hipblasGetAtomicsModeFortran(hipblasHandle_t handle,
hipblasAtomicsMode_t* atomics_mode);
hipblasStatus_t hipblasSetBatchAlphaStrideFortran(hipblasHandle_t handle,
hipblasStride alpha_stride);
hipblasStatus_t hipblasGetBatchAlphaStrideFortran(hipblasHandle_t handle,
hipblasStride* alpha_stride);
hipblasStatus_t hipblasSetBatchBetaStrideFortran(hipblasHandle_t handle, hipblasStride beta_stride);
hipblasStatus_t hipblasGetBatchBetaStrideFortran(hipblasHandle_t handle,
hipblasStride* beta_stride);
/* ==========
* L3
* ========== */
// trtri
hipblasStatus_t hipblasStrtriFortran(hipblasHandle_t handle,
hipblasFillMode_t uplo,
hipblasDiagType_t diag,
int n,
const float* A,
int lda,
float* invA,
int ldinvA);
hipblasStatus_t hipblasDtrtriFortran(hipblasHandle_t handle,
hipblasFillMode_t uplo,
hipblasDiagType_t diag,
int n,
const double* A,
int lda,
double* invA,
int ldinvA);
hipblasStatus_t hipblasCtrtriFortran(hipblasHandle_t handle,
hipblasFillMode_t uplo,
hipblasDiagType_t diag,
int n,
const hipComplex* A,
int lda,
hipComplex* invA,
int ldinvA);
hipblasStatus_t hipblasZtrtriFortran(hipblasHandle_t handle,
hipblasFillMode_t uplo,
hipblasDiagType_t diag,
int n,
const hipDoubleComplex* A,
int lda,
hipDoubleComplex* invA,
int ldinvA);
// trtri_batched
hipblasStatus_t hipblasStrtriBatchedFortran(hipblasHandle_t handle,
hipblasFillMode_t uplo,
hipblasDiagType_t diag,
int n,
const float* const A[],
int lda,
float* invA[],
int ldinvA,
int batch_count);
hipblasStatus_t hipblasDtrtriBatchedFortran(hipblasHandle_t handle,
hipblasFillMode_t uplo,
hipblasDiagType_t diag,
int n,
const double* const A[],
int lda,
double* invA[],
int ldinvA,
int batch_count);
hipblasStatus_t hipblasCtrtriBatchedFortran(hipblasHandle_t handle,
hipblasFillMode_t uplo,
hipblasDiagType_t diag,
int n,
const hipComplex* const A[],
int lda,
hipComplex* invA[],
int ldinvA,
int batch_count);
hipblasStatus_t hipblasZtrtriBatchedFortran(hipblasHandle_t handle,
hipblasFillMode_t uplo,
hipblasDiagType_t diag,
int n,
const hipDoubleComplex* const A[],
int lda,
hipDoubleComplex* invA[],
int ldinvA,
int batch_count);
// trtri_strided_batched
hipblasStatus_t hipblasStrtriStridedBatchedFortran(hipblasHandle_t handle,
hipblasFillMode_t uplo,
hipblasDiagType_t diag,
int n,
const float* A,
int lda,
hipblasStride stride_A,
float* invA,
int ldinvA,
hipblasStride stride_invA,
int batch_count);
hipblasStatus_t hipblasDtrtriStridedBatchedFortran(hipblasHandle_t handle,
hipblasFillMode_t uplo,
hipblasDiagType_t diag,
int n,
const double* A,
int lda,
hipblasStride stride_A,
double* invA,
int ldinvA,
hipblasStride stride_invA,
int batch_count);
hipblasStatus_t hipblasCtrtriStridedBatchedFortran(hipblasHandle_t handle,
hipblasFillMode_t uplo,
hipblasDiagType_t diag,
int n,
const hipComplex* A,
int lda,
hipblasStride stride_A,
hipComplex* invA,
int ldinvA,
hipblasStride stride_invA,
int batch_count);
hipblasStatus_t hipblasZtrtriStridedBatchedFortran(hipblasHandle_t handle,
hipblasFillMode_t uplo,
hipblasDiagType_t diag,
int n,
const hipDoubleComplex* A,
int lda,
hipblasStride stride_A,
hipDoubleComplex* invA,
int ldinvA,
hipblasStride stride_invA,
int batch_count);
// trsm_ex
hipblasStatus_t hipblasTrsmExFortran(hipblasHandle_t handle,
hipblasSideMode_t side,
hipblasFillMode_t uplo,
hipblasOperation_t transA,
hipblasDiagType_t diag,
int m,
int n,
const void* alpha,
void* A,
int lda,
void* B,
int ldb,
const void* invA,
int invA_size,
hipDataType compute_type);
hipblasStatus_t hipblasTrsmBatchedExFortran(hipblasHandle_t handle,
hipblasSideMode_t side,
hipblasFillMode_t uplo,
hipblasOperation_t transA,
hipblasDiagType_t diag,
int m,
int n,
const void* alpha,
void* A,
int lda,
void* B,
int ldb,
int batch_count,
const void* invA,
int invA_size,
hipDataType compute_type);
hipblasStatus_t hipblasTrsmStridedBatchedExFortran(hipblasHandle_t handle,
hipblasSideMode_t side,
hipblasFillMode_t uplo,
hipblasOperation_t transA,
hipblasDiagType_t diag,
int m,
int n,
const void* alpha,
void* A,
int lda,
hipblasStride stride_A,
void* B,
int ldb,
hipblasStride stride_B,
int batch_count,
const void* invA,
int invA_size,
hipblasStride stride_invA,
hipDataType compute_type);
// // syrk_ex
// hipblasStatus_t hipblasCsyrkExFortran(hipblasHandle_t handle,
// hipblasFillMode_t uplo,
// hipblasOperation_t trans,
// int n,
// int k,
// const hipComplex* alpha,
// const void* A,
// hipDataType Atype,
// int lda,
// const hipComplex* beta,
// hipComplex* C,
// hipDataType Ctype,
// int ldc);
// // herk_ex
// hipblasStatus_t hipblasCherkExFortran(hipblasHandle_t handle,
// hipblasFillMode_t uplo,
// hipblasOperation_t trans,
// int n,
// int k,
// const float* alpha,
// const void* A,
// hipDataType Atype,
// int lda,
// const float* beta,
// hipComplex* C,
// hipDataType Ctype,
// int ldc);
/* ==========
* Solver
* ========== */
// getrf
hipblasStatus_t hipblasSgetrfFortran(
hipblasHandle_t handle, const int n, float* A, const int lda, int* ipiv, int* info);
hipblasStatus_t hipblasDgetrfFortran(
hipblasHandle_t handle, const int n, double* A, const int lda, int* ipiv, int* info);
hipblasStatus_t hipblasCgetrfFortran(
hipblasHandle_t handle, const int n, hipComplex* A, const int lda, int* ipiv, int* info);
hipblasStatus_t hipblasZgetrfFortran(
hipblasHandle_t handle, const int n, hipDoubleComplex* A, const int lda, int* ipiv, int* info);
// getrf_batched
hipblasStatus_t hipblasSgetrfBatchedFortran(hipblasHandle_t handle,
const int n,
float* const A[],
const int lda,
int* ipiv,
int* info,
const int batch_count);
hipblasStatus_t hipblasDgetrfBatchedFortran(hipblasHandle_t handle,
const int n,
double* const A[],
const int lda,
int* ipiv,
int* info,
const int batch_count);
hipblasStatus_t hipblasCgetrfBatchedFortran(hipblasHandle_t handle,
const int n,
hipComplex* const A[],
const int lda,
int* ipiv,
int* info,
const int batch_count);
hipblasStatus_t hipblasZgetrfBatchedFortran(hipblasHandle_t handle,
const int n,
hipDoubleComplex* const A[],
const int lda,
int* ipiv,
int* info,
const int batch_count);
// getrf_strided_batched
hipblasStatus_t hipblasSgetrfStridedBatchedFortran(hipblasHandle_t handle,
const int n,
float* A,
const int lda,
const hipblasStride stride_A,
int* ipiv,
const hipblasStride stride_P,
int* info,
const int batch_count);
hipblasStatus_t hipblasDgetrfStridedBatchedFortran(hipblasHandle_t handle,
const int n,
double* A,
const int lda,
const hipblasStride stride_A,
int* ipiv,
const hipblasStride stride_P,
int* info,
const int batch_count);
hipblasStatus_t hipblasCgetrfStridedBatchedFortran(hipblasHandle_t handle,
const int n,
hipComplex* A,
const int lda,
const hipblasStride stride_A,
int* ipiv,
const hipblasStride stride_P,
int* info,
const int batch_count);
hipblasStatus_t hipblasZgetrfStridedBatchedFortran(hipblasHandle_t handle,
const int n,
hipDoubleComplex* A,
const int lda,
const hipblasStride stride_A,
int* ipiv,
const hipblasStride stride_P,
int* info,
const int batch_count);
// getrs
hipblasStatus_t hipblasSgetrsFortran(hipblasHandle_t handle,
const hipblasOperation_t trans,
const int n,
const int nrhs,
float* A,
const int lda,
const int* ipiv,
float* B,
const int ldb,
int* info);
hipblasStatus_t hipblasDgetrsFortran(hipblasHandle_t handle,
const hipblasOperation_t trans,
const int n,
const int nrhs,
double* A,
const int lda,
const int* ipiv,
double* B,
const int ldb,
int* info);
hipblasStatus_t hipblasCgetrsFortran(hipblasHandle_t handle,
const hipblasOperation_t trans,
const int n,
const int nrhs,
hipComplex* A,
const int lda,
const int* ipiv,
hipComplex* B,
const int ldb,
int* info);
hipblasStatus_t hipblasZgetrsFortran(hipblasHandle_t handle,
const hipblasOperation_t trans,
const int n,
const int nrhs,
hipDoubleComplex* A,
const int lda,
const int* ipiv,
hipDoubleComplex* B,
const int ldb,
int* info);
// getrs_batched
hipblasStatus_t hipblasSgetrsBatchedFortran(hipblasHandle_t handle,
const hipblasOperation_t trans,
const int n,
const int nrhs,
float* const A[],
const int lda,
const int* ipiv,
float* const B[],
const int ldb,
int* info,
const int batch_count);
hipblasStatus_t hipblasDgetrsBatchedFortran(hipblasHandle_t handle,
const hipblasOperation_t trans,
const int n,
const int nrhs,
double* const A[],
const int lda,
const int* ipiv,
double* const B[],
const int ldb,
int* info,
const int batch_count);
hipblasStatus_t hipblasCgetrsBatchedFortran(hipblasHandle_t handle,
const hipblasOperation_t trans,
const int n,
const int nrhs,
hipComplex* const A[],
const int lda,
const int* ipiv,
hipComplex* const B[],
const int ldb,
int* info,
const int batch_count);
hipblasStatus_t hipblasZgetrsBatchedFortran(hipblasHandle_t handle,
const hipblasOperation_t trans,
const int n,
const int nrhs,
hipDoubleComplex* const A[],
const int lda,
const int* ipiv,
hipDoubleComplex* const B[],
const int ldb,
int* info,
const int batch_count);
// getrs_strided_batched
hipblasStatus_t hipblasSgetrsStridedBatchedFortran(hipblasHandle_t handle,
const hipblasOperation_t trans,
const int n,
const int nrhs,
float* A,
const int lda,
const hipblasStride stride_A,
const int* ipiv,
const hipblasStride stride_P,
float* B,
const int ldb,
const hipblasStride stride_B,
int* info,
const int batch_count);
hipblasStatus_t hipblasDgetrsStridedBatchedFortran(hipblasHandle_t handle,
const hipblasOperation_t trans,
const int n,
const int nrhs,
double* A,
const int lda,
const hipblasStride stride_A,
const int* ipiv,
const hipblasStride stride_P,
double* B,
const int ldb,
const hipblasStride stride_B,
int* info,
const int batch_count);
hipblasStatus_t hipblasCgetrsStridedBatchedFortran(hipblasHandle_t handle,
const hipblasOperation_t trans,
const int n,
const int nrhs,
hipComplex* A,
const int lda,
const hipblasStride stride_A,
const int* ipiv,
const hipblasStride stride_P,
hipComplex* B,
const int ldb,
const hipblasStride stride_B,
int* info,
const int batch_count);
hipblasStatus_t hipblasZgetrsStridedBatchedFortran(hipblasHandle_t handle,
const hipblasOperation_t trans,
const int n,
const int nrhs,
hipDoubleComplex* A,
const int lda,
const hipblasStride stride_A,
const int* ipiv,
const hipblasStride stride_P,
hipDoubleComplex* B,
const int ldb,
const hipblasStride stride_B,
int* info,
const int batch_count);
// getri_batched
hipblasStatus_t hipblasSgetriBatchedFortran(hipblasHandle_t handle,
const int n,
float* const A[],
const int lda,
int* ipiv,
float* const C[],
const int ldc,
int* info,
const int batch_count);
hipblasStatus_t hipblasDgetriBatchedFortran(hipblasHandle_t handle,
const int n,
double* const A[],
const int lda,
int* ipiv,
double* const C[],
const int ldc,
int* info,
const int batch_count);
hipblasStatus_t hipblasCgetriBatchedFortran(hipblasHandle_t handle,
const int n,
hipComplex* const A[],
const int lda,
int* ipiv,
hipComplex* const C[],
const int ldc,
int* info,
const int batch_count);
hipblasStatus_t hipblasZgetriBatchedFortran(hipblasHandle_t handle,
const int n,
hipDoubleComplex* const A[],
const int lda,
int* ipiv,
hipDoubleComplex* const C[],
const int ldc,
int* info,
const int batch_count);
// geqrf
hipblasStatus_t hipblasSgeqrfFortran(hipblasHandle_t handle,
const int m,
const int n,
float* A,
const int lda,
float* tau,
int* info);
hipblasStatus_t hipblasDgeqrfFortran(hipblasHandle_t handle,
const int m,
const int n,
double* A,
const int lda,
double* tau,
int* info);
hipblasStatus_t hipblasCgeqrfFortran(hipblasHandle_t handle,
const int m,
const int n,
hipComplex* A,
const int lda,
hipComplex* tau,
int* info);
hipblasStatus_t hipblasZgeqrfFortran(hipblasHandle_t handle,
const int m,
const int n,
hipDoubleComplex* A,
const int lda,
hipDoubleComplex* tau,
int* info);
// geqrf_batched
hipblasStatus_t hipblasSgeqrfBatchedFortran(hipblasHandle_t handle,
const int m,
const int n,
float* const A[],
const int lda,
float* const tau[],
int* info,
const int batch_count);
hipblasStatus_t hipblasDgeqrfBatchedFortran(hipblasHandle_t handle,
const int m,
const int n,
double* const A[],
const int lda,
double* const tau[],
int* info,
const int batch_count);
hipblasStatus_t hipblasCgeqrfBatchedFortran(hipblasHandle_t handle,
const int m,
const int n,
hipComplex* const A[],
const int lda,
hipComplex* const tau[],
int* info,
const int batch_count);
hipblasStatus_t hipblasZgeqrfBatchedFortran(hipblasHandle_t handle,
const int m,
const int n,
hipDoubleComplex* const A[],
const int lda,
hipDoubleComplex* const tau[],
int* info,
const int batch_count);
// geqrf_strided_batched
hipblasStatus_t hipblasSgeqrfStridedBatchedFortran(hipblasHandle_t handle,
const int m,
const int n,
float* A,
const int lda,
const hipblasStride stride_A,
float* tau,
const hipblasStride stride_T,
int* info,
const int batch_count);
hipblasStatus_t hipblasDgeqrfStridedBatchedFortran(hipblasHandle_t handle,
const int m,
const int n,
double* A,
const int lda,
const hipblasStride stride_A,
double* tau,
const hipblasStride stride_T,
int* info,
const int batch_count);
hipblasStatus_t hipblasCgeqrfStridedBatchedFortran(hipblasHandle_t handle,
const int m,
const int n,
hipComplex* A,
const int lda,
const hipblasStride stride_A,
hipComplex* tau,
const hipblasStride stride_T,
int* info,
const int batch_count);
hipblasStatus_t hipblasZgeqrfStridedBatchedFortran(hipblasHandle_t handle,
const int m,
const int n,
hipDoubleComplex* A,
const int lda,
const hipblasStride stride_A,
hipDoubleComplex* tau,
const hipblasStride stride_T,
int* info,
const int batch_count);
// gels
hipblasStatus_t hipblasSgelsFortran(hipblasHandle_t handle,
hipblasOperation_t trans,
const int m,
const int n,
const int nrhs,
float* A,
const int lda,
float* B,
const int ldb,
int* info,
int* deviceInfo);
hipblasStatus_t hipblasDgelsFortran(hipblasHandle_t handle,
hipblasOperation_t trans,
const int m,
const int n,
const int nrhs,
double* A,
const int lda,
double* B,
const int ldb,
int* info,
int* deviceInfo);
hipblasStatus_t hipblasCgelsFortran(hipblasHandle_t handle,
hipblasOperation_t trans,
const int m,
const int n,
const int nrhs,
hipComplex* A,
const int lda,
hipComplex* B,
const int ldb,
int* info,
int* deviceInfo);
hipblasStatus_t hipblasZgelsFortran(hipblasHandle_t handle,
hipblasOperation_t trans,
const int m,
const int n,
const int nrhs,
hipDoubleComplex* A,
const int lda,
hipDoubleComplex* B,
const int ldb,
int* info,
int* deviceInfo);
// gelsBatched
hipblasStatus_t hipblasSgelsBatchedFortran(hipblasHandle_t handle,
hipblasOperation_t trans,
const int m,
const int n,
const int nrhs,
float* const A[],
const int lda,
float* const B[],
const int ldb,
int* info,
int* deviceInfo,
const int batchCount);
hipblasStatus_t hipblasDgelsBatchedFortran(hipblasHandle_t handle,
hipblasOperation_t trans,
const int m,
const int n,
const int nrhs,
double* const A[],
const int lda,
double* const B[],
const int ldb,
int* info,
int* deviceInfo,
const int batchCount);
hipblasStatus_t hipblasCgelsBatchedFortran(hipblasHandle_t handle,
hipblasOperation_t trans,
const int m,
const int n,
const int nrhs,
hipComplex* const A[],
const int lda,
hipComplex* const B[],
const int ldb,
int* info,
int* deviceInfo,
const int batchCount);
hipblasStatus_t hipblasZgelsBatchedFortran(hipblasHandle_t handle,
hipblasOperation_t trans,
const int m,
const int n,
const int nrhs,
hipDoubleComplex* const A[],
const int lda,
hipDoubleComplex* const B[],
const int ldb,
int* info,
int* deviceInfo,
const int batchCount);
// gelsStridedBatched
hipblasStatus_t hipblasSgelsStridedBatchedFortran(hipblasHandle_t handle,
hipblasOperation_t trans,
const int m,
const int n,
const int nrhs,
float* A,
const int lda,
const hipblasStride strideA,
float* B,
const int ldb,
const hipblasStride strideB,
int* info,
int* deviceInfo,
const int batchCount);
hipblasStatus_t hipblasDgelsStridedBatchedFortran(hipblasHandle_t handle,
hipblasOperation_t trans,
const int m,
const int n,
const int nrhs,
double* A,
const int lda,
const hipblasStride strideA,
double* B,
const int ldb,
const hipblasStride strideB,
int* info,
int* deviceInfo,
const int batchCount);
hipblasStatus_t hipblasCgelsStridedBatchedFortran(hipblasHandle_t handle,
hipblasOperation_t trans,
const int m,
const int n,
const int nrhs,
hipComplex* A,
const int lda,
const hipblasStride strideA,
hipComplex* B,
const int ldb,
const hipblasStride strideB,
int* info,
int* deviceInfo,
const int batchCount);
hipblasStatus_t hipblasZgelsStridedBatchedFortran(hipblasHandle_t handle,
hipblasOperation_t trans,
const int m,
const int n,
const int nrhs,
hipDoubleComplex* A,
const int lda,
const hipblasStride strideA,
hipDoubleComplex* B,
const int ldb,
const hipblasStride strideB,
int* info,
int* deviceInfo,
const int batchCount);
}
#endif