OpenCL interoperability does not work on 64-bit OS
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Accessibilité débutants
- 48/100
Piste de recherche
Les points d’entrée concernés se trouvent dans arrayfire/opencl.py autour des lignes 88 et 156, ainsi que dans les autres utilisations de c_int_t de ce fichier. Lisez d’abord ces déclarations ctypes, puis reproduisez la configuration OpenCL/PyOpenCL sur Windows 64 bits ; le travail est terminé lorsque les identifiants des périphériques et les valeurs partagées du périphérique, du contexte et de la file d’attente ne débordent plus et que l’interopérabilité fonctionne.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Currently the OpenCL interoperability does not work on 64-bit Windows machine. The reason for this is the use of c_int_t which defaults to long on Windows (which on the other hand is 32-bit). This can be problematic with things like device IDs as they can easily go over 2^32/2-1. For example https://github.com/arrayfire/arrayfire-python/blob/master/arrayfire/opencl.py#L88 uses c_int_t, as well as a few other functions in the same file. This can be fixed by replacing the c_int_t with, for example, c_void_ptr_t as it is used with the context. Is there by the way some specific reason why context is treated differently?
There is also another issue. When the context is created by PyOpenCL, the input device, context and queue values are input as python ints in order to use the same context and queue, but on Windows you get <class 'OverflowError'>: int too long to convert errors then. These can be avoided by casting them to, for example, c_int64-types. For example in https://github.com/arrayfire/arrayfire-python/blob/master/arrayfire/opencl.py#L156, replace safe_call(backend.get().afcl_add_device_context(dev, ctx, que)) with safe_call(backend.get().afcl_add_device_context(ct.c_int64(dev), ct.c_int64(ctx), ct.c_int64(que))) (using c_void_p seems to work too).
I haven't tested these changes extensively, but they do seem to get things working on 64-bit Windows. I can provide a PR if needed.
- Langage dominant
- Python
- Étoiles
- 422
- Forks
- 63
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de arrayfire/arrayfire-python
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 25/100
arrayfire/arrayfire-python#271 ·
-
Unwrap phase function Ouverte
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 25/100
arrayfire/arrayfire-python#270 ·
-
Difficulté 4/5 3-5 jours Accessibilité débutants 35/100
arrayfire/arrayfire-python#269 ·
-
Difficulté 4/5 3-5 jours Accessibilité débutants 38/100
arrayfire/arrayfire-python#268 · 1 commentaire ·
-
Difficulté 3/5 1-2 jours Accessibilité débutants 48/100
arrayfire/arrayfire-python#267 · 1 commentaire · 1 réaction ·
Toutes les issues de arrayfire/arrayfire-python
Issues similaires
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 90/100
learningequality/ricecooker#747 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
BSData/horus-heresy-3rd-edition#3171 ·
-
enhancement
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
run-llama/llama_index#23199 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
KhronosGroup/glTF-Blender-IO#2769 ·