.Modules, whose construction can be complex and prohibitively cumbersome to coerce into a `setup` string. Finally, most builtin types are sufficiently well behaved and sufficiently common to warrant allowing as well. (e.g. `globals={"n": 1}` is very convenient.) Fortunately, all have well defined serialization semantics. This class is responsible for enabling the Valgrind subprocess to use elements in `globals` so long as they are an allowed type. Caveats: The user is required to acknowledge this serialization by wrapping elements in `globals` with `CopyIfCallgrind`. While ScriptFunction and ScriptModule are expected to save and load quite robustly, it is up to the user to ensure that an nn.Module can un-pickle successfully. `torch.Tensor` and `np.ndarray` are deliberately excluded. The serialization/deserialization process perturbs the representation of a tensor in ways that could result in incorrect measurements. For example, if a tensor lives in pinned CPU memory, this fact would not be preserved by a dump, and that will in turn change the performance of certain CUDA operations. rŪ