2021-04-23 11:25:45 +02:00
|
|
|
! Generated from qmckl_dgemm.org
|
|
|
|
|
|
|
|
module qmckl_blas
|
|
|
|
use :: iso_c_binding
|
|
|
|
|
|
|
|
interface
|
|
|
|
subroutine qmckl_dgemm(transa, transb, m, n, k, &
|
2021-04-26 10:40:43 +02:00
|
|
|
alpha, A, lda, B, ldb, beta, C, ldc, tasks, ntasks) bind(C)
|
2021-04-23 11:25:45 +02:00
|
|
|
use :: iso_c_binding
|
|
|
|
implicit none
|
|
|
|
character(kind=c_char ), value :: transa, transb
|
|
|
|
integer (kind=c_int ), value :: m, n, k, lda, ldb, ldc
|
|
|
|
real (kind=c_double), value :: alpha, beta
|
|
|
|
real (kind=c_double) :: A(lda,*), B(ldb,*), C(ldc,*)
|
2021-04-26 10:40:43 +02:00
|
|
|
integer (kind=c_int64_t) :: tasks(*)
|
|
|
|
integer (kind=c_int64_t) :: ntasks
|
2021-04-23 11:25:45 +02:00
|
|
|
end subroutine qmckl_dgemm
|
|
|
|
end interface
|
|
|
|
|
2021-04-23 23:35:06 +02:00
|
|
|
interface
|
2021-04-26 10:40:43 +02:00
|
|
|
subroutine qmckl_tasks_run(tasks, ntasks) bind(C)
|
2021-04-23 23:35:06 +02:00
|
|
|
use :: iso_c_binding
|
|
|
|
implicit none
|
2021-04-26 10:40:43 +02:00
|
|
|
integer (kind=c_int64_t), value :: ntasks
|
|
|
|
integer (kind=c_int64_t) :: tasks(ntasks)
|
2021-04-23 23:35:06 +02:00
|
|
|
end subroutine qmckl_tasks_run
|
|
|
|
end interface
|
2021-04-28 03:10:42 +02:00
|
|
|
|
|
|
|
interface
|
|
|
|
subroutine alloc(A, sze) bind(C)
|
|
|
|
use :: iso_c_binding
|
|
|
|
implicit none
|
|
|
|
type(c_ptr) :: A
|
|
|
|
integer(c_size_t), value :: sze
|
|
|
|
end subroutine
|
|
|
|
end interface
|
|
|
|
|
|
|
|
interface
|
|
|
|
subroutine free(A) bind(C,name='starpu_free')
|
|
|
|
use :: iso_c_binding
|
|
|
|
implicit none
|
|
|
|
type(c_ptr), value :: A
|
|
|
|
end subroutine
|
|
|
|
end interface
|
|
|
|
|
2021-04-23 11:25:45 +02:00
|
|
|
end module qmckl_blas
|
2021-04-28 00:46:07 +02:00
|
|
|
|
|
|
|
subroutine f_dgemm(TRANSA, TRANSB, M, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC) &
|
|
|
|
bind(C, name='f_dgemm')
|
|
|
|
use iso_c_binding
|
|
|
|
implicit none
|
|
|
|
character, intent(in), value :: TRANSA, TRANSB
|
|
|
|
integer, intent(in), value :: M,N,K,LDA,LDB,LDC
|
|
|
|
double precision, intent(in), value :: ALPHA, BETA
|
|
|
|
double precision, intent(in) :: A(LDA,*), B(LDB,*)
|
|
|
|
double precision, intent(out) :: C(LDC,*)
|
|
|
|
call dgemm(TRANSA, TRANSB, M, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
|
|
|
|
end subroutine
|
|
|
|
|