Threadable
torchlinops.linops.Threadable
Mixin to enable parallel execution of sub-linops using Python threads.
When threaded=True, the linop's fn and adj_fn methods will run
each sub-linop in parallel using a ThreadPoolExecutor. This is useful when
sub-linops are I/O bound or release the GIL (e.g., PyTorch tensor operations).
The mixin manages sub-linops through the linops property, which automatically
creates shallow copies of each linop when assigned. This ensures that shared
linops (e.g., Add(A, A)) have independent identities for threading while
still sharing tensor data.
| ATTRIBUTE | DESCRIPTION |
|---|---|
linops |
The list of linops to run in parallel. Setting this property triggers automatic shallow copying and input listener setup.
TYPE:
|
threaded |
Whether to run sub-linops in parallel. Default is True.
TYPE:
|
num_workers |
Number of worker threads. If None, defaults to the number of sub-linops.
TYPE:
|
settings |
Dictionary with
TYPE:
|
Source code in src/torchlinops/linops/threadable.py
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 | |
linops
property
writable
The list of sub-linops managed by this Threadable.
This is a property rather than a direct attribute to intercept assignment and perform automatic housekeeping whenever linops are set. The setter creates shallow copies of each linop (preserving tensor data sharing) and sets up input listeners for event coordination.
| RETURNS | DESCRIPTION |
|---|---|
ModuleList
|
The list of sub-linops. |
settings
property
writable
Get threading settings as a dictionary.
| RETURNS | DESCRIPTION |
|---|---|
dict
|
Dictionary with |
__init__
| PARAMETER | DESCRIPTION |
|---|---|
threaded
|
Whether to run sub-linops in parallel. Default is True.
TYPE:
|
num_workers
|
Number of worker threads. If None, defaults to the number of
sub-linops when
TYPE:
|
linops
|
The list of linops to run in parallel. If assigned via the
TYPE:
|
Source code in src/torchlinops/linops/threadable.py
threaded_apply
Wrapper around _threaded_apply
Source code in src/torchlinops/linops/threadable.py
threaded_apply_sum_reduce
Wrapper around _threaded_apply_sum_reduce.