From 931b0ce94d133206a374e51e6b5be3c856532d71 Mon Sep 17 00:00:00 2001
From: Vakho Tsulaia <vakhtang.tsulaia@cern.ch>
Date: Fri, 14 Feb 2025 06:32:46 +0100
Subject: [PATCH] AthenaMPConfig: added support for input-less jobs (e.g.,
 hello world)

---
 Control/AthenaMP/python/AthenaMPConfig.py | 59 ++++++++++++-----------
 1 file changed, 31 insertions(+), 28 deletions(-)

diff --git a/Control/AthenaMP/python/AthenaMPConfig.py b/Control/AthenaMP/python/AthenaMPConfig.py
index fc2752c02a7..efb0a563dea 100644
--- a/Control/AthenaMP/python/AthenaMPConfig.py
+++ b/Control/AthenaMP/python/AthenaMPConfig.py
@@ -181,37 +181,40 @@ def getChunkSize(flags) -> int:
         chunk_size = flags.MP.ChunkSize
         msg.info('Chunk size set to %i', chunk_size)
     else:
-        md = GetFileMD(flags.Input.Files)
-        #Don't use auto flush for shared reader
-        if flags.MP.UseSharedReader:
-            msg.info('Shared Reader in use, chunk_size set to default (%i)', chunk_size)
-        #Use auto flush only if file is compressed with LZMA, else use default chunk_size
-        elif flags.MP.ChunkSize == -1:
-            if md.get('file_comp_alg',-1) == 2:
-                chunk_size = md.get('auto_flush',-1)
-                msg.info('Chunk size set to auto flush (%i)', chunk_size)
-            else:
-                msg.info('LZMA algorithm not in use, chunk_size set to default (%i)', chunk_size)
-        #Use auto flush only if file is compressed with LZMA or ZLIB, else use default chunk_size
-        elif flags.MP.ChunkSize == -2:
-            if md.get('file_comp_alg',-1) in [1,2]:
-                chunk_size = md.get('auto_flush',-1)
-                msg.info('Chunk size set to auto flush (%i)', chunk_size)
-            else:
-                msg.info('LZMA nor ZLIB in use, chunk_size set to default (%i)', chunk_size)
-        #Use auto flush only if file is compressed with LZMA, ZLIB or LZ4, else use default chunk_size
-        elif flags.MP.ChunkSize == -3:
-            if md.get('file_comp_alg',-1) in [1,2,4]:
+        if '_ATHENA_GENERIC_INPUTFILE_NAME_' in flags.Input.Files:
+            msg.info('Running an input-less job. Setting Chunk Size to 1')
+        else:
+            md = GetFileMD(flags.Input.Files)
+            #Don't use auto flush for shared reader
+            if flags.MP.UseSharedReader:
+                msg.info('Shared Reader in use, chunk_size set to default (%i)', chunk_size)
+            #Use auto flush only if file is compressed with LZMA, else use default chunk_size
+            elif flags.MP.ChunkSize == -1:
+                if md.get('file_comp_alg',-1) == 2:
+                    chunk_size = md.get('auto_flush',-1)
+                    msg.info('Chunk size set to auto flush (%i)', chunk_size)
+                else:
+                    msg.info('LZMA algorithm not in use, chunk_size set to default (%i)', chunk_size)
+            #Use auto flush only if file is compressed with LZMA or ZLIB, else use default chunk_size
+            elif flags.MP.ChunkSize == -2:
+                if md.get('file_comp_alg',-1) in [1,2]:
+                    chunk_size = md.get('auto_flush',-1)
+                    msg.info('Chunk size set to auto flush (%i)', chunk_size)
+                else:
+                    msg.info('LZMA nor ZLIB in use, chunk_size set to default (%i)', chunk_size)
+            #Use auto flush only if file is compressed with LZMA, ZLIB or LZ4, else use default chunk_size
+            elif flags.MP.ChunkSize == -3:
+                if md.get('file_comp_alg',-1) in [1,2,4]:
+                    chunk_size = md.get('auto_flush',-1)
+                    msg.info('Chunk size set to auto flush (%i)', chunk_size)
+                else:
+                    msg.info('LZMA, ZLIB nor LZ4 in use, chunk_size set to (%i)', chunk_size)
+            #Use auto flush value for chunk_size, regardless of compression algorithm
+            elif flags.MP.ChunkSize <= -4:
                 chunk_size = md.get('auto_flush',-1)
                 msg.info('Chunk size set to auto flush (%i)', chunk_size)
             else:
-                msg.info('LZMA, ZLIB nor LZ4 in use, chunk_size set to (%i)', chunk_size)
-        #Use auto flush value for chunk_size, regardless of compression algorithm
-        elif flags.MP.ChunkSize <= -4:
-            chunk_size = md.get('auto_flush',-1)
-            msg.info('Chunk size set to auto flush (%i)', chunk_size)
-        else:
-            msg.warning('Invalid ChunkSize, Chunk Size set to default (%i)', chunk_size)
+                msg.warning('Invalid ChunkSize, Chunk Size set to default (%i)', chunk_size)
 
     return chunk_size
 
-- 
GitLab