Helper function for reduce_* functions.
(reduction, tensors)
| 237 | |
| 238 | |
| 239 | def _apply_reduce(reduction, tensors): |
| 240 | """Helper function for reduce_* functions.""" |
| 241 | if not tensors: |
| 242 | raise ValueError('Must pass >0 tensors to reduce operations') |
| 243 | |
| 244 | for t in tensors: |
| 245 | _check_device(t) |
| 246 | result = gen_nccl_ops.nccl_reduce(input=tensors, reduction=reduction) |
| 247 | try: |
| 248 | next(t for t in tensors if t.device == result.device) |
| 249 | except StopIteration: |
| 250 | raise ValueError('One input tensor must be assigned to current device') |
| 251 | return result |
| 252 | |
| 253 | |
| 254 | def _get_shared_name(): |
no test coverage detected