Unexpected output indexing arrays with array values
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 45/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Ferma
- Stack tecnologico
- javascript
- Ambito
- computer-graphics
Direzione di ricerca
Inizia con l’esempio minimo riproducibile di createKernel nell’issue ed eseguilo sia in modalità gpu sia in modalità cpu, confrontando il risultato con l’output previsto. Analizza il percorso di indicizzazione degli array utilizzato dal kernel GPU; il lavoro è completato quando la modalità gpu restituisce gli stessi valori della modalità cpu per questo esempio.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione

What is wrong?
As part of a project that I'm trying to integrate GPU.js into to enhance performance, I've encountered some bizarre output when running a kernel. If indexing an array with another, the output appears to have been taken from the values of the inner array. This is best explained with an example.
Where does it happen?
See the following for a minimal reproducible example.
const gpu = new GPU({ mode: 'gpu' });
const arr1 = [0, 1, 3, 4];
const arr2 = [10, 11, 12, 13, 14];
const arrKernel = gpu.createKernel(function(arr1, arr2) {
return arr2[arr1[this.thread.x]];
}).setOutput([4]);
const result = arrKernel(arr1, arr2);
// Expected output: "10,11,13,14"
// jsfiddle output with mode: 'gpu': "0,1,4,0"
// jsfiddle output with mode: 'cpu': "10,11,13,14" (as expected)
console.log(result.toString());
- Create two arrays
- Use
this.thread.xto index the first, and use the values of that to index the second - Observe unexpected output
I have a JS fiddle that can recreate this issue at jsfiddle.net/TomWyllie/c5khtu9g/. The source of the seemingly arbitrary output seems to be the values in the inner array as I mentioned above. That is, if I had written return arr1[arr1[this.thread.x]]; instead of return arr2[arr1[this.thread.x]]; all would be as expected.
This was tested using:
- GPU.js 2.9.4
- GPU: NVIDIA GeForce GTX 1060 3GB
- Google Chrome Version 83.0.4103.97 (Official Build) (64-bit), but same issue in Firefox
- Windows 10
I couldn't replicate the issue on my phone (Samsung Galaxy S9) and haven't tried any other devices.
How important is this (1-5)?
Probably a 3 4, it's pretty annoying but is probably possible to work around in my use case. But it'd make things unnecessarily complicated and other people might spend time debugging not suspecting this has happened - it's a very strange result.
Other Comments
I am very new to GPU.js (like, < 1 week) so am not 100% sure if this is a genuine bug, or if I have somehow ventured into unsupported territory, but given that the expected result is returned in mode: cpu, and also in mode: gpu on my phone in the JS Fiddle I thought it'd be worth flagging up. If I've missed something stupid please do let me know!
Finally, although not relevant to this issue in case anybody is wondering about the context, my use-case is traversing a matrix in diagonals, as only the diagonals can be computed in parallel due to the recursive nature of each entry. This is part of a string alignment algorithm. I am using (or trying to) this.thread.x to parameterise the position along each diagonal, the indices of which are computed outside the kernel.
Any comments or thoughts much appreciated! 😊
- Lingua principale
- JavaScript
- Stelle
- 15.5k
- Fork
- 663
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di gpujs/gpu.js
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 65/100
-
WebGL backend silently returns all zeros for long-running kernels (no GL error, no context loss) Aperta
Difficoltà 5/5 Più di una settimana Idoneità per principianti 42/100
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 20/100
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 25/100
-
Bitwise result not correct Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 25/100
Tutte le issue di gpujs/gpu.js
Issue simili
-
Difficoltà 1/5 1-3 ore Idoneità per principianti 78/100
Mintplex-Labs/anything-llm#6490 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
-
[quality] workflow-scripts guard reads test:unit:coverage as skipping the unit suite, blocking #632 Apertaagent/quality hive/hosted-available-lke648397-260827-5n31 quality testing
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
-
area-clientside-dartpad
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100