aboutsummaryrefslogtreecommitdiff
path: root/Carpet/LoopControl/src/type_sizes.F90
diff options
context:
space:
mode:
authorErik Schnetter <schnetter@gmail.com>2013-01-16 14:46:17 -0500
committerErik Schnetter <schnetter@gmail.com>2013-01-16 14:46:17 -0500
commite0ddb73239c73c6de42a01204194173ce65ebff4 (patch)
treed0380bec049f7807836d68a0001f2ec492f62d0e /Carpet/LoopControl/src/type_sizes.F90
parent1cddd960d62da42ccd111022f1326740f688b48d (diff)
LoopControl: Rewrite
Rewrite code in C++. Remove dependency on GSL. Modify algorithm; now traverses arrays bottom-up (by splitting the looping region into equal-sized blocks) instead of top-down (splitting the region into a certain number of blocks) Make multi-threading dynamic Support SMT (hyper-threading), i.e. threads which share the same cache
Diffstat (limited to 'Carpet/LoopControl/src/type_sizes.F90')
-rw-r--r--Carpet/LoopControl/src/type_sizes.F9021
1 files changed, 21 insertions, 0 deletions
diff --git a/Carpet/LoopControl/src/type_sizes.F90 b/Carpet/LoopControl/src/type_sizes.F90
new file mode 100644
index 000000000..86e8304d8
--- /dev/null
+++ b/Carpet/LoopControl/src/type_sizes.F90
@@ -0,0 +1,21 @@
+#include "cctk.h"
+#include "cctk_Functions.h"
+
+
+
+subroutine lc_get_fortran_type_sizes(type_sizes)
+ use loopcontrol_types
+ implicit none
+ DECLARE_CCTK_FUNCTIONS
+ CCTK_POINTER :: type_sizes(4)
+
+ type(lc_vec_t) :: vec(2)
+ type(lc_ivec_t) :: ivec(2)
+ type(lc_space_t) :: space(2)
+ type(lc_control_t) :: control(2)
+
+ type_sizes(1) = CCTK_PointerTo(vec(2)) - CCTK_PointerTo(vec(1))
+ type_sizes(2) = CCTK_PointerTo(ivec(2)) - CCTK_PointerTo(ivec(1))
+ type_sizes(3) = CCTK_PointerTo(space(2)) - CCTK_PointerTo(space(1))
+ type_sizes(4) = CCTK_PointerTo(control(2)) - CCTK_PointerTo(control(1))
+end subroutine lc_get_fortran_type_sizes