arrayfire / arrayfire/arrayfire-python
Backend choice reset inside of threads
- 主要言語
- Python
- スター
- 422
- フォーク
- 63
- PR マージ指標
- 30日以内にマージされた PR はありません
説明
Inside a new thread, Arrayfire uses the default backend rather than the backend set by the parent thread:
```python
>>> import arrayfire as af
>>> af.get_available_backends()
('cpu', 'cuda', 'opencl')
>>> af.get_active_backend()
'cuda'
>>> af.set_backend('opencl')
>>> af.get_active_backend()
'opencl'
>>> from threading import Thread
>>> Thread(target=lambda: print(af.get_active_backend())).start()
cuda
```
Is this expected behavior and/or documented anywhere? I would think that the active backend should be process local rather than thread local.
If it matters, here's my version info:
OS: Ubuntu 20.04
arrayfire: 3.9.0 (commit [955152b6](https://github.com/arrayfire/arrayfire/commit/955152b6570c608ae74ebd9e6b31d48351cb8a16))
arrayfire-python: 3.8.10
cuda: 11.4.0-1
ocl-icd-libopencl1: 2.2.11-1
intel-mkl: 2020.0.166-1
コントリビューションガイド
このリポジトリのコントリビューションガイドは索引されていません
調査の方向性
Start by reproducing the behavior through the Python threading.Thread entry point and the get_active_backend and set_backend calls shown in the report. Check whether backend selection is documented as thread-local or process-local, and compare the child-thread result with the parent setting. Done means the expected behavior is documented or the reported reset is resolved and covered by a regression test.
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- python
- 領域
- backend-api-design
- issue の種類
- バグ
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 停滞
- 明瞭さ
- 説明が足りない
- 初心者へのやさしさ
- 30/100