Browse Source

Make all burst kernels

Tomas Farago 9 years ago
parent
commit
dbc68f3263
2 changed files with 11 additions and 11 deletions
  1. 3 6
      src/kernels/CMakeLists.txt
  2. 8 5
      src/kernels/tools/make_burst_kernels.py

+ 3 - 6
src/kernels/CMakeLists.txt

@@ -17,12 +17,9 @@ add_custom_command(
     COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/${Z_TEMPLATE} ${Z_TEMPLATE}
     COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/${CENTER_TEMPLATE} ${CENTER_TEMPLATE}
     COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/${LAMINO_TEMPLATE} ${LAMINO_TEMPLATE}
-    COMMAND python ${GENERATOR} ${Z_TEMPLATE} 1 > ${Z_KERNEL}
-    COMMAND python ${GENERATOR} ${Z_TEMPLATE} ${BP_BURST} >> ${Z_KERNEL}
-    COMMAND python ${GENERATOR} ${CENTER_TEMPLATE} 1 > ${CENTER_KERNEL}
-    COMMAND python ${GENERATOR} ${CENTER_TEMPLATE} ${BP_BURST} >> ${CENTER_KERNEL}
-    COMMAND python ${GENERATOR} ${LAMINO_TEMPLATE} 1 > ${LAMINO_KERNEL}
-    COMMAND python ${GENERATOR} ${LAMINO_TEMPLATE} ${BP_BURST} >> ${LAMINO_KERNEL}
+    COMMAND python ${GENERATOR} ${Z_TEMPLATE} 1 2 4 8 16 > ${Z_KERNEL}
+    COMMAND python ${GENERATOR} ${CENTER_TEMPLATE} 1 2 4 8 16 > ${CENTER_KERNEL}
+    COMMAND python ${GENERATOR} ${LAMINO_TEMPLATE} 1 2 4 8 16 > ${LAMINO_KERNEL}
     DEPENDS ${GENERATOR} ${COMMON_TEMPLATE} ${Z_TEMPLATE} ${CENTER_TEMPLATE} ${LAMINO_TEMPLATE}
     COMMENT "Generating burst backprojection kernels")
 

+ 8 - 5
src/kernels/tools/make_burst_kernels.py

@@ -34,7 +34,7 @@ def parse_args():
     """Parse command line arguments."""
     parser = argparse.ArgumentParser()
     parser.add_argument('filename', type=str, help='File name with the kernel template')
-    parser.add_argument('burst', type=int,
+    parser.add_argument('burst', type=int, nargs='+',
                         help='Number of projections processed by one kernel invocation')
 
     return parser.parse_args()
@@ -44,14 +44,17 @@ def main():
     """execute program."""
     args = parse_args()
     allowed_bursts = [2 ** i for i in range(5)]
-    if args.burst not in allowed_bursts:
-        raise ValueError('Specified burst mode `{}` must be one of `{}`'.format(args.burst,
-                                                                                allowed_bursts))
     in_tmpl = "read_only image2d_t projection_{},"
     common_filename = os.path.join(os.path.dirname(args.filename), 'common.in')
     kernel_outer = open(common_filename, 'r').read()
     comp_tmpl, kernel_inner = open(args.filename, 'r').read().split('\n%nl\n')
-    print fill_kernel_template(in_tmpl, comp_tmpl, kernel_outer, kernel_inner, args.burst)
+    kernels = ''
+    for burst in args.burst:
+        if burst not in allowed_bursts:
+            raise ValueError('Burst mode `{}` must be one of `{}`'.format(burst, allowed_bursts))
+        kernels += fill_kernel_template(in_tmpl, comp_tmpl, kernel_outer, kernel_inner, burst)
+
+    print kernels
 
 
 if __name__ == '__main__':