|
|
|
@ -28,10 +28,10 @@
|
|
|
|
|
! ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
|
|
|
! POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
|
!
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
module d_csga_mod
|
|
|
|
|
use d_cusparse_mod
|
|
|
|
|
integer, parameter :: MAX_NNZ_PER_WG = 4096
|
|
|
|
|
integer, parameter :: MAX_GRID_SIZE = 65536
|
|
|
|
|
|
|
|
|
|
type, bind(c) :: d_CAmat
|
|
|
|
|
type(c_ptr) :: Mat = c_null_ptr
|
|
|
|
@ -47,5 +47,66 @@ module d_csga_mod
|
|
|
|
|
end function d_CSGADeviceFree
|
|
|
|
|
end interface
|
|
|
|
|
|
|
|
|
|
interface CSGADeviceAlloc
|
|
|
|
|
function d_CSGADeviceAlloc(Mat,nr,nc,nz) &
|
|
|
|
|
& bind(c,name="d_CSGADeviceAlloc") result(res)
|
|
|
|
|
use iso_c_binding
|
|
|
|
|
import d_CAmat
|
|
|
|
|
type(d_CAmat) :: Mat
|
|
|
|
|
integer(c_int), value :: nr, nc, nz
|
|
|
|
|
integer(c_int) :: res
|
|
|
|
|
end function d_CSGADeviceAlloc
|
|
|
|
|
end interface
|
|
|
|
|
|
|
|
|
|
interface CSGADeviceSetMatDiagType
|
|
|
|
|
function d_CSGADeviceSetMatDiagType(Mat,type) &
|
|
|
|
|
& bind(c,name="d_CSGADeviceSetMatDiagType") result(res)
|
|
|
|
|
use iso_c_binding
|
|
|
|
|
import d_CAmat
|
|
|
|
|
type(d_CAmat) :: Mat
|
|
|
|
|
integer(c_int),value :: type
|
|
|
|
|
integer(c_int) :: res
|
|
|
|
|
end function d_CSGADeviceSetMatDiagType
|
|
|
|
|
end interface
|
|
|
|
|
|
|
|
|
|
interface CSGADeviceSetMatFillMode
|
|
|
|
|
function d_CSGADeviceSetMatFillMode(Mat,type) &
|
|
|
|
|
& bind(c,name="d_CSGADeviceSetMatFillMode") result(res)
|
|
|
|
|
use iso_c_binding
|
|
|
|
|
import d_CAmat
|
|
|
|
|
type(d_CAmat) :: Mat
|
|
|
|
|
integer(c_int),value :: type
|
|
|
|
|
integer(c_int) :: res
|
|
|
|
|
end function d_CSGADeviceSetMatFillMode
|
|
|
|
|
end interface
|
|
|
|
|
|
|
|
|
|
interface CSGAHost2Device
|
|
|
|
|
function d_CSGAHost2Device(Mat,m,n,nz,irp,ja,val,rowBlocks) &
|
|
|
|
|
& bind(c,name="d_CSGAHost2Device") result(res)
|
|
|
|
|
use iso_c_binding
|
|
|
|
|
import d_CAmat
|
|
|
|
|
type(d_CAmat) :: Mat
|
|
|
|
|
integer(c_int), value :: m,n,nz
|
|
|
|
|
integer(c_int) :: irp(*), ja(*), rowBlocks(*)
|
|
|
|
|
real(c_double) :: val(*)
|
|
|
|
|
integer(c_int) :: res
|
|
|
|
|
end function d_CSGAHost2Device
|
|
|
|
|
end interface
|
|
|
|
|
|
|
|
|
|
interface CSGADevice2Host
|
|
|
|
|
function d_CSGADevice2Host(Mat,m,n,nz,irp,ja,val,rowBlocks) &
|
|
|
|
|
& bind(c,name="d_CSGADevice2Host") result(res)
|
|
|
|
|
use iso_c_binding
|
|
|
|
|
import d_CAmat
|
|
|
|
|
type(d_CAmat) :: Mat
|
|
|
|
|
integer(c_int), value :: m,n,nz
|
|
|
|
|
integer(c_int) :: irp(*), ja(*), rowBlocks(*)
|
|
|
|
|
real(c_double) :: val(*)
|
|
|
|
|
integer(c_int) :: res
|
|
|
|
|
end function d_CSGADevice2Host
|
|
|
|
|
end interface
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
end module d_csga_mod
|
|
|
|
|