Commit ec66bca6 authored by Antoine Jego's avatar Antoine Jego
Browse files

removed modules from repo + print to see where we crash

parent 4e99bf25
......@@ -3,3 +3,5 @@ build*/
.envrc
compile_commands.json
fstarpu_mpi_mod.f90
fstarpu_mod.f90
......@@ -54,6 +54,7 @@ program fstarpu_example_dgemm
integer :: te, ts, tr
real :: tf, gflops
write(*,*) "initializing starpu ..."
ret = fstarpu_init(C_NULL_PTR)
if (ret == -19) then
stop 77
......@@ -61,6 +62,7 @@ program fstarpu_example_dgemm
stop 1
end if
write(*,*) "initializing starpu+MPI ..."
ret = fstarpu_mpi_init(1)
if (ret /= 0) then
write(*,'("fstarpu_mpi_init status:",i4)') ret
......
! StarPU --- Runtime system for heterogeneous multicore architectures.
!
! Copyright (C) 2016-2021 Université de Bordeaux, CNRS (LaBRI UMR 5800), Inria
!
! StarPU is free software; you can redistribute it and/or modify
! it under the terms of the GNU Lesser General Public License as published by
! the Free Software Foundation; either version 2.1 of the License, or (at
! your option) any later version.
!
! StarPU is distributed in the hope that it will be useful, but
! WITHOUT ANY WARRANTY; without even the implied warranty of
! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
!
! See the GNU Lesser General Public License in COPYING.LGPL for more details.
!
module fstarpu_mod
use iso_c_binding
implicit none
! Note: Constants truly are intptr_t, but are declared as c_ptr to be
! readily usable in c_ptr arrays to mimic variadic functions.
! Note: Bitwise or operator is provided by the .ior. overloaded operator
type(c_ptr), bind(C) :: FSTARPU_R
type(c_ptr), bind(C) :: FSTARPU_W
type(c_ptr), bind(C) :: FSTARPU_RW
type(c_ptr), bind(C) :: FSTARPU_SCRATCH
type(c_ptr), bind(C) :: FSTARPU_REDUX
type(c_ptr), bind(C) :: FSTARPU_MPI_REDUX
type(c_ptr), bind(C) :: FSTARPU_COMMUTE
type(c_ptr), bind(C) :: FSTARPU_SSEND
type(c_ptr), bind(C) :: FSTARPU_LOCALITY
type(c_ptr), bind(C) :: FSTARPU_DATA_ARRAY
type(c_ptr), bind(C) :: FSTARPU_DATA_MODE_ARRAY
type(c_ptr), bind(C) :: FSTARPU_CL_ARGS
type(c_ptr), bind(C) :: FSTARPU_CL_ARGS_NFREE
type(c_ptr), bind(C) :: FSTARPU_TASK_DEPS_ARRAY
type(c_ptr), bind(C) :: FSTARPU_CALLBACK
type(c_ptr), bind(C) :: FSTARPU_CALLBACK_WITH_ARG
type(c_ptr), bind(C) :: FSTARPU_CALLBACK_WITH_ARG_NFREE
type(c_ptr), bind(C) :: FSTARPU_CALLBACK_ARG
type(c_ptr), bind(C) :: FSTARPU_CALLBACK_ARG_NFREE
type(c_ptr), bind(C) :: FSTARPU_PROLOGUE_CALLBACK
type(c_ptr), bind(C) :: FSTARPU_PROLOGUE_CALLBACK_ARG
type(c_ptr), bind(C) :: FSTARPU_PROLOGUE_CALLBACK_ARG_NFREE
type(c_ptr), bind(C) :: FSTARPU_PROLOGUE_CALLBACK_POP
type(c_ptr), bind(C) :: FSTARPU_PROLOGUE_CALLBACK_POP_ARG
type(c_ptr), bind(C) :: FSTARPU_PROLOGUE_CALLBACK_POP_ARG_NFREE
type(c_ptr), bind(C) :: FSTARPU_PRIORITY
type(c_ptr), bind(C) :: FSTARPU_EXECUTE_ON_NODE
type(c_ptr), bind(C) :: FSTARPU_EXECUTE_ON_DATA
type(c_ptr), bind(C) :: FSTARPU_EXECUTE_ON_WORKER
type(c_ptr), bind(C) :: FSTARPU_WORKER_ORDER
type(c_ptr), bind(C) :: FSTARPU_EXECUTE_WHERE
type(c_ptr), bind(C) :: FSTARPU_HYPERVISOR_TAG
type(c_ptr), bind(C) :: FSTARPU_POSSIBLY_PARALLEL
type(c_ptr), bind(C) :: FSTARPU_FLOPS
type(c_ptr), bind(C) :: FSTARPU_TAG
type(c_ptr), bind(C) :: FSTARPU_TAG_ONLY
type(c_ptr), bind(C) :: FSTARPU_NAME
type(c_ptr), bind(C) :: FSTARPU_TASK_COLOR
type(c_ptr), bind(C) :: FSTARPU_TASK_SYNCHRONOUS
type(c_ptr), bind(C) :: FSTARPU_HANDLES_SEQUENTIAL_CONSISTENCY
type(c_ptr), bind(C) :: FSTARPU_TASK_END_DEP
type(c_ptr), bind(C) :: FSTARPU_NODE_SELECTION_POLICY
type(c_ptr), bind(C) :: FSTARPU_TASK_SCHED_DATA
type(c_ptr), bind(C) :: FSTARPU_VALUE
type(c_ptr), bind(C) :: FSTARPU_SCHED_CTX
type(c_ptr), bind(C) :: FSTARPU_CPU_WORKER
type(c_ptr), bind(C) :: FSTARPU_CUDA_WORKER
type(c_ptr), bind(C) :: FSTARPU_OPENCL_WORKER
type(c_ptr), bind(C) :: FSTARPU_ANY_WORKER
integer(c_int), bind(C) :: FSTARPU_NMAXBUFS
type(c_ptr), bind(C) :: FSTARPU_SCHED_CTX_POLICY_NAME
type(c_ptr), bind(C) :: FSTARPU_SCHED_CTX_POLICY_STRUCT
type(c_ptr), bind(C) :: FSTARPU_SCHED_CTX_POLICY_MIN_PRIO
type(c_ptr), bind(C) :: FSTARPU_SCHED_CTX_POLICY_MAX_PRIO
type(c_ptr), bind(C) :: FSTARPU_SCHED_CTX_HIERARCHY_LEVEL
type(c_ptr), bind(C) :: FSTARPU_SCHED_CTX_NESTED
type(c_ptr), bind(C) :: FSTARPU_SCHED_CTX_AWAKE_WORKERS
type(c_ptr), bind(C) :: FSTARPU_SCHED_CTX_POLICY_INIT
type(c_ptr), bind(C) :: FSTARPU_SCHED_CTX_USER_DATA
type(c_ptr), bind(C) :: FSTARPU_NOWHERE
type(c_ptr), bind(C) :: FSTARPU_CPU
type(c_ptr), bind(C) :: FSTARPU_CUDA
type(c_ptr), bind(C) :: FSTARPU_OPENCL
type(c_ptr), bind(C) :: FSTARPU_CODELET_SIMGRID_EXECUTE
type(c_ptr), bind(C) :: FSTARPU_CODELET_SIMGRID_EXECUTE_AND_INJECT
type(c_ptr), bind(C) :: FSTARPU_CUDA_ASYNC
type(c_ptr), bind(C) :: FSTARPU_OPENCL_ASYNC
!type(c_ptr), bind(C) :: FSTARPU_PER_WORKER
!type(c_ptr), bind(C) :: FSTARPU_PER_ARCH
!type(c_ptr), bind(C) :: FSTARPU_PER_COMMON
type(c_ptr), bind(C) :: FSTARPU_HISTORY_BASED
type(c_ptr), bind(C) :: FSTARPU_REGRESSION_BASED
type(c_ptr), bind(C) :: FSTARPU_NL_REGRESSION_BASED
type(c_ptr), bind(C) :: FSTARPU_MULTIPLE_REGRESSION_BASED
type(c_ptr), bind(C) :: FSTARPU_SEQ
type(c_ptr), bind(C) :: FSTARPU_SPMD
type(c_ptr), bind(C) :: FSTARPU_FORKJOIN
! (some) portable iso_c_binding types
type(c_ptr), bind(C) :: FSTARPU_SZ_C_DOUBLE
type(c_ptr), bind(C) :: FSTARPU_SZ_C_FLOAT
type(c_ptr), bind(C) :: FSTARPU_SZ_C_CHAR
type(c_ptr), bind(C) :: FSTARPU_SZ_C_INT
type(c_ptr), bind(C) :: FSTARPU_SZ_C_INTPTR_T
type(c_ptr), bind(C) :: FSTARPU_SZ_C_PTR
type(c_ptr), bind(C) :: FSTARPU_SZ_C_SIZE_T
! (some) native Fortran types
type(c_ptr), bind(C) :: FSTARPU_SZ_CHARACTER
type(c_ptr), bind(C) :: FSTARPU_SZ_INTEGER
type(c_ptr), bind(C) :: FSTARPU_SZ_INT4
type(c_ptr), bind(C) :: FSTARPU_SZ_INT8
type(c_ptr), bind(C) :: FSTARPU_SZ_REAL
type(c_ptr), bind(C) :: FSTARPU_SZ_REAL4
type(c_ptr), bind(C) :: FSTARPU_SZ_REAL8
type(c_ptr), bind(C) :: FSTARPU_SZ_DOUBLE_PRECISION
type(c_ptr), bind(C) :: FSTARPU_SZ_COMPLEX
type(c_ptr), bind(C) :: FSTARPU_SZ_COMPLEX4
type(c_ptr), bind(C) :: FSTARPU_SZ_COMPLEX8
integer(c_int), bind(C), target :: FSTARPU_DEFAULT_PRIO
interface operator (.ior.)
procedure or_cptrs
end interface operator (.ior.)
interface
! == starpu.h ==
! void starpu_conf_init(struct starpu_conf *conf);
subroutine fstarpu_conf_init (conf) bind(C,name="starpu_conf_init")
use iso_c_binding, only: c_ptr
type(c_ptr), value, intent(in) :: conf
end subroutine fstarpu_conf_init
function fstarpu_conf_allocate () bind(C)
use iso_c_binding, only: c_ptr
type(c_ptr) :: fstarpu_conf_allocate
end function fstarpu_conf_allocate
subroutine fstarpu_conf_free (conf) bind(C)
use iso_c_binding, only: c_ptr
type(c_ptr), value, intent(in) :: conf
end subroutine fstarpu_conf_free
subroutine fstarpu_conf_set_sched_policy_name (conf, policy_name) bind(C)
use iso_c_binding, only: c_ptr, c_char
type(c_ptr), value, intent(in) :: conf
character(c_char), intent(in) :: policy_name
end subroutine fstarpu_conf_set_sched_policy_name
subroutine fstarpu_conf_set_min_prio (conf, min_prio) bind(C)
use iso_c_binding, only: c_ptr, c_int
type(c_ptr), value, intent(in) :: conf
integer(c_int), value, intent(in) :: min_prio
end subroutine fstarpu_conf_set_min_prio
subroutine fstarpu_conf_set_max_prio (conf, max_prio) bind(C)
use iso_c_binding, only: c_ptr, c_int
type(c_ptr), value, intent(in) :: conf
integer(c_int), value, intent(in) :: max_prio
end subroutine fstarpu_conf_set_max_prio
subroutine fstarpu_conf_set_ncpu (conf, ncpu) bind(C)
use iso_c_binding, only: c_ptr, c_int
type(c_ptr), value, intent(in) :: conf
integer(c_int), value, intent(in) :: ncpu
end subroutine fstarpu_conf_set_ncpu
subroutine fstarpu_conf_set_ncuda (conf, ncuda) bind(C)
use iso_c_binding, only: c_ptr, c_int
type(c_ptr), value, intent(in) :: conf
integer(c_int), value, intent(in) :: ncuda
end subroutine fstarpu_conf_set_ncuda
subroutine fstarpu_conf_set_nopencl (conf, nopencl) bind(C)
use iso_c_binding, only: c_ptr, c_int
type(c_ptr), value, intent(in) :: conf
integer(c_int), value, intent(in) :: nopencl
end subroutine fstarpu_conf_set_nopencl
! starpu_init: see fstarpu_init
! starpu_initialize: see fstarpu_init
! void starpu_pause(void);
subroutine fstarpu_pause() bind(C,name="starpu_pause")
end subroutine fstarpu_pause
! void starpu_resume(void);
subroutine fstarpu_resume() bind(C,name="starpu_resume")
end subroutine fstarpu_resume
! int starpu_is_paused(void);
function fstarpu_is_paused() bind(C,name="starpu_is_paused")
use iso_c_binding, only: c_int
integer(c_int) :: fstarpu_is_paused
end function fstarpu_is_paused
! void starpu_shutdown(void);
subroutine fstarpu_shutdown () bind(C,name="starpu_shutdown")
end subroutine fstarpu_shutdown
! starpu_topology_print
subroutine fstarpu_topology_print () bind(C)
end subroutine fstarpu_topology_print
! int starpu_asynchronous_copy_disabled(void);
function fstarpu_asynchronous_copy_disabled() bind(C,name="starpu_asynchronous_copy_disabled")
use iso_c_binding, only: c_int
integer(c_int) :: fstarpu_asynchronous_copy_disabled
end function fstarpu_asynchronous_copy_disabled
! int starpu_asynchronous_cuda_copy_disabled(void);
function fstarpu_asynchronous_cuda_copy_disabled() bind(C,name="starpu_asynchronous_cuda_copy_disabled")
use iso_c_binding, only: c_int
integer(c_int) :: fstarpu_asynchronous_cuda_copy_disabled
end function fstarpu_asynchronous_cuda_copy_disabled
! int starpu_asynchronous_opencl_copy_disabled(void);
function fstarpu_asynchronous_opencl_copy_disabled() bind(C,name="starpu_asynchronous_opencl_copy_disabled")
use iso_c_binding, only: c_int
integer(c_int) :: fstarpu_asynchronous_opencl_copy_disabled
end function fstarpu_asynchronous_opencl_copy_disabled
! void starpu_display_stats();
subroutine fstarpu_display_stats() bind(C,name="starpu_display_stats")
end subroutine fstarpu_display_stats
! void starpu_get_version(int *major, int *minor, int *release);
subroutine fstarpu_get_version(major,minor,release) bind(C,name="starpu_get_version")
use iso_c_binding, only: c_int
integer(c_int), intent(out) :: major,minor,release
end subroutine fstarpu_get_version
! == starpu_worker.h ==
! unsigned starpu_worker_get_count(void);
function fstarpu_worker_get_count() bind(C,name="starpu_worker_get_count")
use iso_c_binding, only: c_int
integer(c_int) :: fstarpu_worker_get_count
end function fstarpu_worker_get_count
! unsigned starpu_combined_worker_get_count(void);
function fstarpu_combined_worker_get_count() bind(C,name="starpu_combined_worker_get_count")
use iso_c_binding, only: c_int
integer(c_int) :: fstarpu_combined_worker_get_count
end function fstarpu_combined_worker_get_count
! unsigned starpu_worker_is_combined_worker(int id);
function fstarpu_worker_is_combined_worker(id) bind(C,name="starpu_worker_is_combined_worker")
use iso_c_binding, only: c_int
integer(c_int) :: fstarpu_worker_is_combined_worker
integer(c_int), value, intent(in) :: id
end function fstarpu_worker_is_combined_worker
! unsigned starpu_cpu_worker_get_count(void);
function fstarpu_cpu_worker_get_count() bind(C,name="starpu_cpu_worker_get_count")
use iso_c_binding, only: c_int
integer(c_int) :: fstarpu_cpu_worker_get_count
end function fstarpu_cpu_worker_get_count
! unsigned starpu_cuda_worker_get_count(void);
function fstarpu_cuda_worker_get_count() bind(C,name="starpu_cuda_worker_get_count")
use iso_c_binding, only: c_int
integer(c_int) :: fstarpu_cuda_worker_get_count
end function fstarpu_cuda_worker_get_count
! unsigned starpu_opencl_worker_get_count(void);
function fstarpu_opencl_worker_get_count() bind(C,name="starpu_opencl_worker_get_count")
use iso_c_binding, only: c_int
integer(c_int) :: fstarpu_opencl_worker_get_count
end function fstarpu_opencl_worker_get_count
! int starpu_worker_get_id(void);
function fstarpu_worker_get_id() bind(C,name="starpu_worker_get_id")
use iso_c_binding, only: c_int
integer(c_int) :: fstarpu_worker_get_id
end function fstarpu_worker_get_id
! _starpu_worker_get_id_check
! starpu_worker_get_id_check
! int starpu_worker_get_bindid(int workerid);
function fstarpu_worker_get_bindid(id) bind(C,name="starpu_worker_get_bindid")
use iso_c_binding, only: c_int
integer(c_int) :: fstarpu_worker_get_bindid
integer(c_int), value, intent(in) :: id
end function fstarpu_worker_get_bindid
! int starpu_combined_worker_get_id(void);
function fstarpu_combined_worker_get_id() bind(C,name="starpu_combined_worker_get_id")
use iso_c_binding, only: c_int
integer(c_int) :: fstarpu_combined_worker_get_id
end function fstarpu_combined_worker_get_id
! int starpu_combined_worker_get_size(void);
function fstarpu_combined_worker_get_size() bind(C,name="starpu_combined_worker_get_size")
use iso_c_binding, only: c_int
integer(c_int) :: fstarpu_combined_worker_get_size
end function fstarpu_combined_worker_get_size
! int starpu_combined_worker_get_rank(void);
function fstarpu_combined_worker_get_rank() bind(C,name="starpu_combined_worker_get_rank")
use iso_c_binding, only: c_int
integer(c_int) :: fstarpu_combined_worker_get_rank
end function fstarpu_combined_worker_get_rank
! enum starpu_worker_archtype starpu_worker_get_type(int id);
function fstarpu_worker_get_type(id) bind(C)
use iso_c_binding, only: c_int, c_ptr
type(c_ptr) :: fstarpu_worker_get_type ! C function returns c_intptr_t
integer(c_int),value,intent(in) :: id
end function fstarpu_worker_get_type
! int starpu_worker_get_count_by_type(enum starpu_worker_archtype type);
function fstarpu_worker_get_count_by_type(typeid) bind(C)
use iso_c_binding, only: c_int, c_ptr
integer(c_int) :: fstarpu_worker_get_count_by_type
type(c_ptr),value,intent(in) :: typeid ! c_intptr_t expected by C func
end function fstarpu_worker_get_count_by_type
! int starpu_worker_get_ids_by_type(enum starpu_worker_archtype type, int *workerids, int maxsize);
function fstarpu_worker_get_ids_by_type(typeid, workerids, maxsize) bind(C)
use iso_c_binding, only: c_int, c_ptr
integer(c_int) :: fstarpu_worker_get_ids_by_type
type(c_ptr),value,intent(in) :: typeid ! c_intptr_t expected by C func
integer(c_int),intent(out) :: workerids(*)
integer(c_int),value,intent(in) :: maxsize
end function fstarpu_worker_get_ids_by_type
! int starpu_worker_get_by_type(enum starpu_worker_archtype type, int num);
function fstarpu_worker_get_by_type(typeid, num) bind(C)
use iso_c_binding, only: c_int, c_ptr
integer(c_int) :: fstarpu_worker_get_by_type
type(c_ptr),value,intent(in) :: typeid ! c_intptr_t expected by C func
integer(c_int),value,intent(in) :: num
end function fstarpu_worker_get_by_type
! int starpu_worker_get_by_devid(enum starpu_worker_archtype type, int devid);
function fstarpu_worker_get_by_devid(typeid, devid) bind(C)
use iso_c_binding, only: c_int, c_ptr
integer(c_int) :: fstarpu_worker_get_by_devid
type(c_ptr),value,intent(in) :: typeid ! c_intptr_t expected by C func
integer(c_int),value,intent(in) :: devid
end function fstarpu_worker_get_by_devid
! void starpu_worker_get_name(int id, char *dst, size_t maxlen);
subroutine fstarpu_worker_get_name(id, dst, maxlen) bind(C,name="starpu_worker_get_name")
use iso_c_binding, only: c_int, c_char, c_size_t
integer(c_int),value,intent(in) :: id
character(c_char),intent(out) :: dst(*)
integer(c_size_t),value,intent(in) :: maxlen
end subroutine fstarpu_worker_get_name
! int starpu_worker_get_devid(int id);
function fstarpu_worker_get_devid(id) bind(C,name="starpu_worker_get_devid")
use iso_c_binding, only: c_int
integer(c_int) :: fstarpu_worker_get_devid
integer(c_int), value, intent(in) :: id
end function fstarpu_worker_get_devid
! int starpu_worker_get_mp_nodeid(int id);
function fstarpu_worker_get_mp_nodeid(id) bind(C,name="starpu_worker_get_mp_nodeid")
use iso_c_binding, only: c_int
integer(c_int) :: fstarpu_worker_get_mp_nodeid
integer(c_int), value, intent(in) :: id
end function fstarpu_worker_get_mp_nodeid
! struct starpu_tree* starpu_workers_get_tree(void);
! unsigned starpu_worker_get_sched_ctx_list(int worker, unsigned **sched_ctx);
! unsigned starpu_worker_is_blocked(int workerid);
function fstarpu_worker_is_blocked(id) bind(C,name="starpu_worker_is_blocked")
use iso_c_binding, only: c_int
integer(c_int) :: fstarpu_worker_is_blocked
integer(c_int), value, intent(in) :: id
end function fstarpu_worker_is_blocked
! unsigned starpu_worker_is_slave_somewhere(int workerid);
function fstarpu_worker_is_slave_somewhere(id) bind(C,name="starpu_worker_is_slave_somewhere")
use iso_c_binding, only: c_int
integer(c_int) :: fstarpu_worker_is_slave_somewhere
integer(c_int), value, intent(in) :: id
end function fstarpu_worker_is_slave_somewhere
! char *starpu_worker_get_type_as_string(enum starpu_worker_archtype type);
subroutine fstarpu_worker_get_type_as_string(typeid,dst,maxlen) bind(C)
use iso_c_binding, only: c_ptr, c_char, c_size_t
type(c_ptr),value,intent(in) :: typeid ! c_intptr_t expected by C func
character(c_char),intent(out) :: dst(*)
integer(c_size_t),value,intent(in) :: maxlen
end subroutine fstarpu_worker_get_type_as_string
! int starpu_bindid_get_workerids(int bindid, int **workerids);
! == starpu_task.h ==
function fstarpu_task_create_sync (handle, mode) bind(C,name="starpu_task_create_sync")
use iso_c_binding, only: c_ptr
type(c_ptr) :: fstarpu_task_create_sync
type(c_ptr), value, intent(in) :: handle
type(c_ptr), value, intent(in) :: mode
end function fstarpu_task_create_sync
! void starpu_tag_declare_deps_array(starpu_tag_t id, unsigned ndeps, starpu_tag_t *array);
subroutine fstarpu_tag_declare_deps_array(id,ndeps,tag_array) bind(C,name="starpu_tag_declare_deps_array")
use iso_c_binding, only: c_int, c_long_long
integer(c_int), value, intent(in) :: id
integer(c_int), value, intent(in) :: ndeps
integer(c_long_long), intent(in) :: tag_array(*)
end subroutine fstarpu_tag_declare_deps_array
! void starpu_task_declare_deps(starpu_tag_t id, unsigned ndeps, ...);
subroutine fstarpu_task_declare_deps(task,ndeps,root_task) bind(C,name="starpu_task_declare_deps")
use iso_c_binding, only: c_int, c_ptr
type(c_ptr), value, intent(in) :: task
integer(c_int), value, intent(in) :: ndeps
type(c_ptr), value, intent(in) :: root_task
end subroutine fstarpu_task_declare_deps
! void starpu_task_declare_deps_array(struct starpu_task *task, unsigned ndeps, struct starpu_task *task_array[]);
subroutine fstarpu_task_declare_deps_array(task,ndeps,task_array) bind(C,name="starpu_task_declare_deps_array")
use iso_c_binding, only: c_int, c_ptr
type(c_ptr), value, intent(in) :: task
integer(c_int), value, intent(in) :: ndeps
type(c_ptr), intent(in) :: task_array(*)
end subroutine fstarpu_task_declare_deps_array
! void starpu_task_end_dep_add(struct starpu_task *t, int nb_deps)
subroutine fstarpu_task_end_dep_add(task, nb_deps) &
bind(C,name="starpu_task_end_dep_add")
use iso_c_binding, only: c_ptr, c_int
type(c_ptr), value, intent(in) :: task
integer(c_int), value, intent(in) :: nb_deps
end subroutine fstarpu_task_end_dep_add
! void starpu_task_end_dep_release(struct starpu_task *t)
subroutine fstarpu_task_end_dep_release(task) &
bind(C,name="starpu_task_end_dep_release")
use iso_c_binding, only: c_ptr
type(c_ptr), value, intent(in) :: task
end subroutine fstarpu_task_end_dep_release
! int starpu_tag_wait(starpu_tag_t id);
function fstarpu_tag_wait(id) bind(C,name="starpu_tag_wait")
use iso_c_binding, only: c_int, c_long_long
integer(c_int) :: fstarpu_tag_wait
integer(c_long_long), value, intent(in) :: id
end function fstarpu_tag_wait
! int starpu_tag_wait_array(unsigned ntags, starpu_tag_t *id);
function fstarpu_tag_wait_array(ntags,tag_array) bind(C,name="starpu_tag_wait_array")
use iso_c_binding, only: c_int, c_long_long
integer(c_int) :: fstarpu_tag_wait_array
integer(c_int), value, intent(in) :: ntags
integer(c_long_long), intent(in) :: tag_array(*)
end function fstarpu_tag_wait_array
! void starpu_tag_notify_from_apps(starpu_tag_t id);
subroutine fstarpu_tag_notify_from_apps(id) bind(C,name="starpu_tag_notify_from_apps")
use iso_c_binding, only: c_long_long
integer(c_long_long), value, intent(in) :: id
end subroutine fstarpu_tag_notify_from_apps
! void starpu_tag_restart(starpu_tag_t id);
subroutine fstarpu_tag_restart(id) bind(C,name="starpu_tag_restart")
use iso_c_binding, only: c_long_long
integer(c_long_long), value, intent(in) :: id
end subroutine fstarpu_tag_restart
! void starpu_tag_remove(starpu_tag_t id);
subroutine fstarpu_tag_remove(id) bind(C,name="starpu_tag_remove")
use iso_c_binding, only: c_long_long
integer(c_long_long), value, intent(in) :: id
end subroutine fstarpu_tag_remove
! struct starpu_task *starpu_tag_get_task(starpu_tag_t id);
function fstarpu_tag_get_task(id) bind(C,name="starpu_tag_get_task")
use iso_c_binding, only: c_ptr, c_long_long
type(c_ptr) :: fstarpu_tag_get_task
integer(c_long_long), value, intent(in) :: id
end function fstarpu_tag_get_task
! void starpu_task_init(struct starpu_task *task);
subroutine fstarpu_task_init (task) bind(C,name="starpu_task_init")
use iso_c_binding, only: c_ptr
type(c_ptr), value, intent(in) :: task
end subroutine fstarpu_task_init
! void starpu_task_clean(struct starpu_task *task);
subroutine fstarpu_task_clean (task) bind(C,name="starpu_task_clean")
use iso_c_binding, only: c_ptr
type(c_ptr), value, intent(in) :: task
end subroutine fstarpu_task_clean
! struct starpu_task *starpu_task_create(void) STARPU_ATTRIBUTE_MALLOC;
function fstarpu_task_create () bind(C,name="starpu_task_create")
use iso_c_binding, only: c_ptr
type(c_ptr) :: fstarpu_task_create
end function fstarpu_task_create
! void starpu_task_destroy(struct starpu_task *task);
subroutine fstarpu_task_destroy (task) bind(C,name="starpu_task_destroy")
use iso_c_binding, only: c_ptr
type(c_ptr), value, intent(in) :: task
end subroutine fstarpu_task_destroy
! int starpu_task_submit(struct starpu_task *task) STARPU_WARN_UNUSED_RESULT;
function fstarpu_task_submit (task) bind(C,name="starpu_task_submit")
use iso_c_binding, only: c_int,c_ptr
integer(c_int) :: fstarpu_task_submit
type(c_ptr), value, intent(in) :: task
end function fstarpu_task_submit
! int starpu_task_submit_to_ctx(struct starpu_task *task, unsigned sched_ctx_id);
function fstarpu_task_submit_to_ctx (task,sched_ctx_id) bind(C,name="starpu_task_submit_to_ctx")
use iso_c_binding, only: c_int,c_ptr
integer(c_int) :: fstarpu_task_submit_to_ctx
type(c_ptr), value, intent(in) :: task
integer(c_int), value, intent(in) :: sched_ctx_id
end function fstarpu_task_submit_to_ctx
! int starpu_task_finished(struct starpu_task *task) STARPU_WARN_UNUSED_RESULT;
function fstarpu_task_finished (task) bind(C,name="starpu_task_finished")
use iso_c_binding, only: c_int,c_ptr
integer(c_int) :: fstarpu_task_finished
type(c_ptr), value, intent(in) :: task
end function fstarpu_task_finished
! int starpu_task_wait(struct starpu_task *task) STARPU_WARN_UNUSED_RESULT;
function fstarpu_task_wait (task) bind(C,name="starpu_task_wait")
use iso_c_binding, only: c_int,c_ptr
integer(c_int) :: fstarpu_task_wait
type(c_ptr), value, intent(in) :: task