Skip to content

Commit

Permalink
Update serializer_settings
Browse files Browse the repository at this point in the history
  • Loading branch information
user committed May 9, 2024
1 parent c7b8af6 commit 92d90a8
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 33 deletions.
5 changes: 5 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,11 @@ Set the Score-P Python bindings arguments. For a documentation of arguments, see

![](doc/pythonBindings_setup.png)

`%%serializer_settings`

Set serializer used for persistence and mode of communicating persistence between notebook and subprocess. Currently available serializers: `dill`, `cloudpickle`; modes of communication: `disk`, `memory`. If no arguments were provided, will print current configuration.

When using persistence in `disk` mode, user can also define directory to which serializer output will be saved with `SCOREP_KERNEL_PERSISTENCE_DIR` environment variable.

## Executing Cells

Expand Down
20 changes: 13 additions & 7 deletions src/scorep_jupyter/kernel.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,14 +66,20 @@ def serializer_settings(self, code):
# Clean files/pipes before switching
self.pershelper.postprocess()

serializer, mode = code.split('\n')[1:3]

error_message = self.pershelper.serializer_settings(serializer, mode)
if error_message:
self.cell_output(f'KernelError: ' + error_message, 'stderr')
else:
self.cell_output(f"Serializer set to '{serializer}', mode set to '{mode}'.")
serializer_match = re.search(r'SERIALIZER=(\w+)', code.split('\n', 1)[1])
mode_match = re.search(r'MODE=(\w+)', code.split('\n', 1)[1])
serializer = serializer_match.group(1) if serializer_match else None
mode = mode_match.group(1) if mode_match else None

if serializer:
if not self.pershelper.set_serializer(serializer):
self.cell_output(f"Serializer '{serializer}' is not recognized, kernel will use '{self.pershelper.serializer}'.", 'stderr')
return self.standard_reply()
if mode:
if not self.pershelper.set_mode(mode):
self.cell_output(f"Serialization mode '{mode}' is not recognized, kernel will use '{self.pershelper.mode}'.", 'stderr')

self.cell_output(f"Kernel uses '{self.pershelper.serializer}' serializer in '{self.pershelper.mode}' mode.")
return self.standard_reply()

def set_scorep_env(self, code):
Expand Down
21 changes: 7 additions & 14 deletions src/scorep_jupyter/userpersistence.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,20 +71,13 @@ def postprocess(self):
if os.path.exists(scorep_script_name):
os.remove(scorep_script_name)

def serializer_settings(self, serializer, mode):
error_message = ""

if serializer in ['dill', 'cloudpickle']:
self.serializer = serializer
else:
error_message += f"'{serializer}' serializer backend is not supported.\n"

if mode in ['disk', 'memory']:
self.mode = mode
else:
error_message += f"'{mode}' serialization mode is not recognized, use one of the following options: 'disk', 'memory'.\n"

return error_message
def set_serializer(self, serializer):
valid_serializers = {'dill', 'cloudpickle'}
return serializer in valid_serializers and (setattr(self, 'serializer', serializer) or True)

def set_mode(self, mode):
valid_modes = {'disk', 'memory'}
return mode in valid_modes and (setattr(self, 'mode', mode) or True)

def jupyter_dump(self):
"""
Expand Down
24 changes: 12 additions & 12 deletions tests/kernel/scorep_exec.yaml
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
-
- |-
%%serializer_settings
dill
memory
- - "Serializer set to 'dill', mode set to 'memory'."
SERIALIZER=dill
MODE=memory
- - "Kernel uses 'dill' serializer in 'memory' mode."
-
- |-
%%execute_with_scorep
Expand All @@ -16,9 +16,9 @@
-
- |-
%%serializer_settings
dill
disk
- - "Serializer set to 'dill', mode set to 'disk'."
SERIALIZER=dill
MODE=disk
- - "Kernel uses 'dill' serializer in 'disk' mode."
-
- |-
%%execute_with_scorep
Expand All @@ -31,9 +31,9 @@
-
- |-
%%serializer_settings
cloudpickle
memory
- - "Serializer set to 'cloudpickle', mode set to 'memory'."
SERIALIZER=cloudpickle
MODE=memory
- - "Kernel uses 'cloudpickle' serializer in 'memory' mode."
-
- |-
%%execute_with_scorep
Expand All @@ -46,9 +46,9 @@
-
- |-
%%serializer_settings
cloudpickle
disk
- - "Serializer set to 'cloudpickle', mode set to 'disk'."
SERIALIZER=cloudpickle
MODE=disk
- - "Kernel uses 'cloudpickle' serializer in 'disk' mode."
-
- |-
%%execute_with_scorep
Expand Down

0 comments on commit 92d90a8

Please sign in to comment.