# StarPU --- Runtime system for heterogeneous multicore architectures. # # Copyright (C) 2020 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. # import Libdl using StarPU @target STARPU_CPU @codelet function variable(val ::Ref{Float32}) :: Nothing val[] = val[] + 1 return end starpu_init() function variable_with_starpu(val ::Ref{Float32}, niter) @starpu_block let hVal = starpu_data_register(val) @starpu_sync_tasks for task in (1 : niter) @starpu_async_cl variable(hVal) [STARPU_RW] end end end function display(niter) foo = Ref(0.0f0) variable_with_starpu(foo, niter) println("variable -> ", foo[]) if foo[] == niter println("result is correct") else error("result is incorret") end end display(10) starpu_shutdown()