74 integer,
parameter,
public :: &
83 integer,
parameter,
public :: &
94 integer,
parameter,
public :: &
103 integer,
parameter,
public :: &
114 subroutine cuda_init(context, device, stream, device_number, rank)
bind(c, name="oct_cuda_init")
118 type(c_ptr),
intent(inout) :: context
119 type(c_ptr),
intent(inout) :: device
120 type(c_ptr),
intent(inout) :: stream
121 integer(c_int),
intent(inout) :: device_number
122 integer(c_int),
intent(out) :: rank
127 subroutine cuda_end(context, device)
bind(c, name="oct_cuda_end")
131 type(c_ptr),
intent(inout) :: context
132 type(c_ptr),
intent(inout) :: device
141 type(c_ptr),
intent(inout) :: program_map
150 type(c_ptr),
intent(inout) :: program_map
159 type(c_ptr),
intent(inout) :: program_map
160 character(kind=c_char),
intent(in) :: fname(*)
161 character(kind=c_char),
intent(in) :: name(*)
166 subroutine cuda_program_build(program_map, device, fname, flags)
bind(c, name="oct_cuda_program_build")
170 type(c_ptr),
intent(inout) :: program_map
171 type(c_ptr),
intent(inout) :: device
172 character(kind=c_char),
intent(in) :: fname(*)
173 character(kind=c_char),
intent(in) :: flags(*)
179 bind(c, name="oct_cuda_program_get_kernel")
183 type(c_ptr),
intent(inout) :: kernel
184 type(c_ptr),
intent(inout) :: program_map
185 character(kind=c_char),
intent(in) :: fname(*)
186 character(kind=c_char),
intent(in) :: flags(*)
187 character(kind=c_char),
intent(in) :: name(*)
195 type(c_ptr),
intent(inout) :: modul
204 type(c_ptr),
intent(inout) :: kernel
213 type(c_ptr),
intent(inout) :: device
214 integer(c_int),
intent(out) :: max_threads
223 type(c_ptr),
intent(inout) :: device
224 integer(c_int),
intent(out) :: max_threads
233 type(c_ptr),
intent(inout) :: device
234 integer(c_int),
intent(out) :: max_dim
243 type(c_ptr),
intent(inout) :: device
244 integer(c_int),
intent(out) :: max_dim
253 type(c_ptr),
intent(inout) :: device
254 integer(c_int),
intent(out) :: max_dim
263 type(c_ptr),
intent(inout) :: device
264 integer(c_int),
intent(out) :: max_dim
273 type(c_ptr),
intent(inout) :: device
274 integer(c_int),
intent(out) :: max_dim
283 type(c_ptr),
intent(inout) :: device
284 integer(c_int),
intent(out) :: max_dim
292 use,
intrinsic :: iso_fortran_env
295 type(c_ptr),
intent(inout) :: device
296 integer(c_int64_t),
intent(out) :: total_memory
303 use,
intrinsic :: iso_fortran_env
306 type(c_ptr),
intent(inout) :: device
307 integer(c_int64_t),
intent(out) :: shared_memory
312 subroutine cuda_mem_alloc(cuda_ptr, size)
bind(c, name="oct_cuda_mem_alloc")
314 use,
intrinsic :: iso_fortran_env
317 type(c_ptr),
intent(inout) :: cuda_ptr
318 integer(c_int64_t),
intent(in) :: size
323 subroutine cuda_mem_free(cuda_ptr)
bind(c, name="oct_cuda_mem_free")
327 type(c_ptr),
intent(inout) :: cuda_ptr
336 type(c_ptr),
intent(inout) :: arg_array
345 type(c_ptr),
intent(inout) :: arg_array
354 type(c_ptr),
intent(inout) :: arg_array
355 type(c_ptr),
intent(in) :: cuda_ptr
356 integer(c_int),
intent(in) :: arg_index
365 type(c_ptr),
intent(inout) :: arg_array
366 type(c_ptr),
intent(in) :: arg
367 integer(c_int),
intent(in) :: arg_index
368 integer(c_int),
intent(in) :: arg_size
385 subroutine cuda_launch_kernel(kernel, griddim, blockdim, shared_mem, arg_array)
bind(c, name="oct_cuda_launch_kernel")
387 use,
intrinsic :: iso_fortran_env
390 type(c_ptr),
intent(inout) :: kernel
391 integer(c_int64_t),
intent(in) :: griddim
392 integer(c_int64_t),
intent(in) :: blockdim
393 integer(c_int64_t),
intent(in) :: shared_mem
394 type(c_ptr),
intent(inout) :: arg_array
399 subroutine cuda_device_name(device, name)
bind(c, name="oct_cuda_device_name")
403 type(c_ptr),
intent(inout) :: device
404 character(kind=c_char),
intent(inout) :: name(*)
413 type(c_ptr),
intent(inout) :: device
414 integer(c_int),
intent(out) :: major
415 integer(c_int),
intent(out) :: minor
424 integer(c_int),
intent(out) :: version
433 type(c_ptr),
intent(inout) :: device
434 integer(c_int),
intent(out) :: warpsize
437 subroutine cuda_deref(cuda_ptr, cuda_deref_ptr)
bind(c, name="oct_cuda_deref")
441 type(c_ptr),
intent(in) :: cuda_ptr
442 type(c_ptr),
intent(out) :: cuda_deref_ptr
449 type(c_ptr),
intent(inout) :: stream
450 integer(c_int),
intent(in) :: stream_number
453 subroutine cuda_get_stream(stream_number)
bind(c, name="oct_cuda_get_stream")
457 integer(c_int),
intent(out) :: stream_number
462 subroutine cuda_memcpy_htod(cuda_ptr, data, size, offset)
bind(c, name="oct_cuda_memcpy_htod")
464 use,
intrinsic :: iso_fortran_env
467 type(c_ptr),
intent(in) :: cuda_ptr
468 type(c_ptr),
intent(in) :: data
469 integer(c_int64_t),
intent(in) :: size
470 integer(c_int64_t),
intent(in) :: offset
475 subroutine cuda_memcpy_dtoh(cuda_ptr, data, size, offset)
bind(c, name="oct_cuda_memcpy_dtoh")
477 use,
intrinsic :: iso_fortran_env
480 type(c_ptr),
intent(in) :: cuda_ptr
481 type(c_ptr),
intent(inout) :: data
482 integer(c_int64_t),
intent(in) :: size
483 integer(c_int64_t),
intent(in) :: offset
488 subroutine cuda_memcpy_dtod(cuda_ptr_dest, cuda_ptr_src, size, offset_dest, offset_src)
bind(c, name="oct_cuda_memcpy_dtod")
490 use,
intrinsic :: iso_fortran_env
493 type(c_ptr),
intent(inout) :: cuda_ptr_dest
494 type(c_ptr),
intent(in) :: cuda_ptr_src
495 integer(c_int64_t),
intent(in) :: size
496 integer(c_int64_t),
intent(in) :: offset_dest
497 integer(c_int64_t),
intent(in) :: offset_src
504 type(c_ptr),
intent(in) :: buffer
505 integer(8),
intent(in) :: offset
506 type(c_ptr),
intent(out) :: buffer_offset
513 type(c_ptr),
intent(in) :: buffer
520 type(c_ptr),
intent(inout) :: cuda_ptr
523 subroutine cuda_mem_set_async(cuda_ptr, arg, arg_size, arg_offset)
bind(c, name="oct_cuda_mem_set_async")
527 type(c_ptr),
intent(inout) :: cuda_ptr
528 integer(c_int8_t),
intent(in) :: arg
529 integer(c_int64_t) :: arg_size
530 integer(c_int64_t) :: arg_offset
537 type(c_ptr),
intent(inout) :: cuda_ptr
538 integer(c_int64_t) :: arg_size
543 subroutine cublas_init(stream)
bind(c, name="oct_cublas_init")
547 type(c_ptr),
intent(in) :: stream
550 subroutine cublas_end()
bind(c, name="oct_cublas_end")
554 subroutine cublas_set_stream(stream, stream_number)
bind(c, name="oct_cublas_set_stream")
558 type(c_ptr),
intent(in) :: stream
559 integer(c_int),
intent(in) :: stream_number
integer, parameter, public cublas_side_left
integer, parameter, public cublas_fill_mode_upper
integer, parameter, public cublas_op_n
integer, parameter, public cublas_op_c
integer, parameter, public cublas_diag_non_unit
integer, parameter, public cublas_op_t
integer, parameter, public cublas_fill_mode_lower
integer, parameter, public cublas_side_right
integer, parameter, public cublas_diag_unit