71 integer,
parameter,
public :: &
80 integer,
parameter,
public :: &
91 integer,
parameter,
public :: &
100 integer,
parameter,
public :: &
111 subroutine cuda_init(context, device, stream, device_number, rank)
bind(c, name="oct_cuda_init")
115 type(c_ptr),
intent(inout) :: context
116 type(c_ptr),
intent(inout) :: device
117 type(c_ptr),
intent(inout) :: stream
118 integer(c_int),
intent(inout) :: device_number
119 integer(c_int),
intent(out) :: rank
124 subroutine cuda_end(context, device)
bind(c, name="oct_cuda_end")
128 type(c_ptr),
intent(inout) :: context
129 type(c_ptr),
intent(inout) :: device
138 type(c_ptr),
intent(inout) :: program_map
147 type(c_ptr),
intent(inout) :: program_map
156 type(c_ptr),
intent(inout) :: program_map
157 character(kind=c_char),
intent(in) :: fname(*)
158 character(kind=c_char),
intent(in) :: name(*)
163 subroutine cuda_program_build(program_map, device, fname, flags)
bind(c, name="oct_cuda_program_build")
167 type(c_ptr),
intent(inout) :: program_map
168 type(c_ptr),
intent(inout) :: device
169 character(kind=c_char),
intent(in) :: fname(*)
170 character(kind=c_char),
intent(in) :: flags(*)
176 bind(c, name="oct_cuda_program_get_kernel")
180 type(c_ptr),
intent(inout) :: kernel
181 type(c_ptr),
intent(inout) :: program_map
182 character(kind=c_char),
intent(in) :: fname(*)
183 character(kind=c_char),
intent(in) :: flags(*)
184 character(kind=c_char),
intent(in) :: name(*)
192 type(c_ptr),
intent(inout) :: modul
201 type(c_ptr),
intent(inout) :: kernel
210 type(c_ptr),
intent(inout) :: device
211 integer(c_int),
intent(out) :: max_threads
220 type(c_ptr),
intent(inout) :: device
221 integer(c_int),
intent(out) :: max_threads
230 type(c_ptr),
intent(inout) :: device
231 integer(c_int),
intent(out) :: max_dim
240 type(c_ptr),
intent(inout) :: device
241 integer(c_int),
intent(out) :: max_dim
250 type(c_ptr),
intent(inout) :: device
251 integer(c_int),
intent(out) :: max_dim
260 type(c_ptr),
intent(inout) :: device
261 integer(c_int),
intent(out) :: max_dim
270 type(c_ptr),
intent(inout) :: device
271 integer(c_int),
intent(out) :: max_dim
280 type(c_ptr),
intent(inout) :: device
281 integer(c_int),
intent(out) :: max_dim
289 use,
intrinsic :: iso_fortran_env
292 type(c_ptr),
intent(inout) :: device
293 integer(c_int64_t),
intent(out) :: total_memory
300 use,
intrinsic :: iso_fortran_env
303 type(c_ptr),
intent(inout) :: device
304 integer(c_int64_t),
intent(out) :: shared_memory
309 subroutine cuda_mem_alloc(cuda_ptr, size)
bind(c, name="oct_cuda_mem_alloc")
311 use,
intrinsic :: iso_fortran_env
314 type(c_ptr),
intent(inout) :: cuda_ptr
315 integer(c_int64_t),
intent(in) :: size
320 subroutine cuda_mem_free(cuda_ptr)
bind(c, name="oct_cuda_mem_free")
324 type(c_ptr),
intent(inout) :: cuda_ptr
333 type(c_ptr),
intent(inout) :: arg_array
342 type(c_ptr),
intent(inout) :: arg_array
351 type(c_ptr),
intent(inout) :: arg_array
352 type(c_ptr),
intent(in) :: cuda_ptr
353 integer(c_int),
intent(in) :: arg_index
362 type(c_ptr),
intent(inout) :: arg_array
363 type(c_ptr),
intent(in) :: arg
364 integer(c_int),
intent(in) :: arg_index
365 integer(c_int),
intent(in) :: arg_size
382 subroutine cuda_launch_kernel(kernel, griddim, blockdim, shared_mem, arg_array)
bind(c, name="oct_cuda_launch_kernel")
384 use,
intrinsic :: iso_fortran_env
387 type(c_ptr),
intent(inout) :: kernel
388 integer(c_int64_t),
intent(in) :: griddim
389 integer(c_int64_t),
intent(in) :: blockdim
390 integer(c_int64_t),
intent(in) :: shared_mem
391 type(c_ptr),
intent(inout) :: arg_array
396 subroutine cuda_device_name(device, name)
bind(c, name="oct_cuda_device_name")
400 type(c_ptr),
intent(inout) :: device
401 character(kind=c_char),
intent(inout) :: name(*)
410 type(c_ptr),
intent(inout) :: device
411 integer(c_int),
intent(out) :: major
412 integer(c_int),
intent(out) :: minor
421 integer(c_int),
intent(out) :: version
430 type(c_ptr),
intent(inout) :: device
431 integer(c_int),
intent(out) :: warpsize
434 subroutine cuda_deref(cuda_ptr, cuda_deref_ptr)
bind(c, name="oct_cuda_deref")
438 type(c_ptr),
intent(in) :: cuda_ptr
439 type(c_ptr),
intent(out) :: cuda_deref_ptr
446 type(c_ptr),
intent(inout) :: stream
447 integer(c_int),
intent(in) :: stream_number
450 subroutine cuda_get_stream(stream_number)
bind(c, name="oct_cuda_get_stream")
454 integer(c_int),
intent(out) :: stream_number
459 subroutine cuda_memcpy_htod(cuda_ptr, data, size, offset)
bind(c, name="oct_cuda_memcpy_htod")
461 use,
intrinsic :: iso_fortran_env
464 type(c_ptr),
intent(in) :: cuda_ptr
465 type(c_ptr),
intent(in) :: data
466 integer(c_int64_t),
intent(in) :: size
467 integer(c_int64_t),
intent(in) :: offset
472 subroutine cuda_memcpy_dtoh(cuda_ptr, data, size, offset)
bind(c, name="oct_cuda_memcpy_dtoh")
474 use,
intrinsic :: iso_fortran_env
477 type(c_ptr),
intent(in) :: cuda_ptr
478 type(c_ptr),
intent(inout) :: data
479 integer(c_int64_t),
intent(in) :: size
480 integer(c_int64_t),
intent(in) :: offset
485 subroutine cuda_memcpy_dtod(cuda_ptr_dest, cuda_ptr_src, size, offset_dest, offset_src)
bind(c, name="oct_cuda_memcpy_dtod")
487 use,
intrinsic :: iso_fortran_env
490 type(c_ptr),
intent(inout) :: cuda_ptr_dest
491 type(c_ptr),
intent(in) :: cuda_ptr_src
492 integer(c_int64_t),
intent(in) :: size
493 integer(c_int64_t),
intent(in) :: offset_dest
494 integer(c_int64_t),
intent(in) :: offset_src
501 type(c_ptr),
intent(in) :: buffer
502 integer(8),
intent(in) :: offset
503 type(c_ptr),
intent(out) :: buffer_offset
510 type(c_ptr),
intent(in) :: buffer
517 type(c_ptr),
intent(inout) :: cuda_ptr
520 subroutine cuda_mem_set_async(cuda_ptr, arg, arg_size, arg_offset)
bind(c, name="oct_cuda_mem_set_async")
524 type(c_ptr),
intent(inout) :: cuda_ptr
525 integer(c_int8_t),
intent(in) :: arg
526 integer(c_int64_t) :: arg_size
527 integer(c_int64_t) :: arg_offset
534 type(c_ptr),
intent(inout) :: cuda_ptr
535 integer(c_int64_t) :: arg_size
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