diff --git a/fortran_examples/test_n2.F90 b/fortran_examples/test_n2.F90 index 85315cb95c2bc3af8eb9c15f07f7cffa1711fa09..0943a542e5c3b4f013eaad741ffc78262a1b96ba 100644 --- a/fortran_examples/test_n2.F90 +++ b/fortran_examples/test_n2.F90 @@ -131,7 +131,7 @@ end do End Subroutine -Subroutine init_cells(cell_num, count) +Subroutine cell_init(cell_num, count) Integer, Intent(in) :: cell_num, count Allocate(cells(cell_num)%fx(1:count)) @@ -153,7 +153,7 @@ cells(cell_num)%dx = cells(cell_num)%dx * 10.0_dp cells(cell_num)%dy = cells(cell_num)%dy * 10.0_dp cells(cell_num)%dz = cells(cell_num)%dz * 10.0_dp -End Subroutine init_cells +End Subroutine cell_init Subroutine runner(typ, data) BIND(C) Use, Intrinsic :: ISO_C_BINDING @@ -167,7 +167,7 @@ Integer(Kind=C_INT), Pointer :: c(:) call c_f_pointer(data, c, [2]) If(typ == type_self) then -call Interact_self(c(1)) +call Interact_single(c(1)) else call Interact(c(1), c(2)) end if @@ -190,6 +190,13 @@ Type(C_PTR) :: dat_ptr Integer(Kind=C_INT), Dimension(1:1000) :: cell_res Type(C_FUNPTR) :: runner_func Double Precision :: t_start, t_total +Integer(Kind=C_INT) :: num_threads + +!$omp parallel +!$omp single +num_threads = omp_get_thread_num() +!$omp end single +!$omp end parallel runner_func = C_FUNLOC(runner) @@ -199,7 +206,7 @@ do i = 1, 1000 end do sched = f_qsched_create() -call qsched_init(sched, 24, 0) +call qsched_init(sched, num_threads, 0) do i=1, 1000 cell_res(i) = qsched_addres(sched, qsched_owner_none, qsched_res_none) @@ -219,7 +226,7 @@ end do t_start = omp_get_wtime() -call qsched_run(sched, 24, runner_func) +call qsched_run(sched, num_threads, runner_func) t_total = omp_get_wtime() - t_start print *, "Took", t_total