---
title: Using examine
description: >-
  We recommend using Thunder's examine() before compiling a function or a
  module.
canonical: 'https://lightning.ai/docs/thunder/stable/home/examine'
---
# Using examine {#using-examine}

We recommend using Thunder's `examine()` before compiling a function or a module.

Thunder cannot run every PyTorch module, but you can quickly find out what is missing using `examine()`.

`examine()` not only determines if Thunder can compile the module, but provides a helpful report to use when filing an issue requesting support.

You can run examine like this:

```python
from thunder.examine import examine

model = MyModel(...)
examine(model, *args, **kwargs)
```

Where `*args and **kwargs` are valid inputs to the model. If examine determines that Thunder can run the module or function as expected, it will print:

```python
The function appears to be working as expected
```

When `examine` encounters a module or function with one or more operators it doesn't support, it will specify the operators, like this:

```python
def foo(a):
  return torch.triu(a)

import torch
import thunder
from thunder.examine import examine

a = torch.full((2, 2), 1., device='cuda')
examine(foo, a)
```

Running the above will print:

```python
Found 1 distinct operations, of which 0 (0.0%) are supported
Please file an issue requesting the following operators here: https://github.com/Lightning-AI/lightning-thunder/issues/new
_VariableFunctionsClass.triu of torch
```

To recap, `examine()` lets you know if Thunder can run a module, and if it can't it will provide a report to file an issue asking for support.

---

**Navigation**

- Parent: [Home](/docs/thunder/0.2.6/home.md)
