Skip to content

Uncaught Error: argument bit ratio not found #600

Open
@peakpoint

Description

@peakpoint

What is wrong?

Adding certain custom functions causes the error: Uncaught Error: argument bit ratio not found

Where does it happen?

Not system specific

How do we replicate the issue?

<script>
const gpu = new GPU()

gpu.addFunction(function f(x, y) {
    return y[0]
})

const test = gpu.createKernel(function (a) {
    f(1, a)
}).setOutput([4, 4]).setGraphical(true)

test([0])
</script>

Setting setGraphical(true) causes the error for some reason

How important is this (1-5)?

3 or 4 maybe?

Expected behavior (i.e. solution)

No error

Other Comments

In FunctionBuilder.assignArgumentBitRatio, replacing calleeNode.argumentBitRatios[i] with calleeNode.argumentBitRatios[argumentIndex] should fix the problem.

Also, why does having a blank return statement cause an error

const test = gpu.createKernel(function () {
    // stuff
    return
}).setOutput([4, 4]).setGraphical(true)
test() // Uncaught Error: Unexpected return statement on ...

when there is no error with having no return statements

const test = gpu.createKernel(function () {
    // stuff
}).setOutput([4, 4]).setGraphical(true)
test()

Activity

harshkhandeparkar

harshkhandeparkar commented on Apr 9, 2020

@harshkhandeparkar

When you are using setGraphical(true), you need to do a this.color(r, g, b, a) as the output and not return a number as a value.

robertleeplummerjr

robertleeplummerjr commented on Apr 9, 2020

@robertleeplummerjr
Member

We need to throw more descriptive errors here.

robertleeplummerjr

robertleeplummerjr commented on Apr 9, 2020

@robertleeplummerjr
Member

The problem is that you aren't passing in the second variable, y that you are referencing, and there somehow the logical checks for that weren't handled early enough.

peakpoint

peakpoint commented on Apr 10, 2020

@peakpoint
Author

What do you mean by "you aren't passing in the second variable"?

robertleeplummerjr

robertleeplummerjr commented on May 3, 2020

@robertleeplummerjr
Member

I think I misspoke, I haven't had time to properly look into this.

mweitzel

mweitzel commented on May 25, 2020

@mweitzel

I'm experiencing this as well, when I pass an array more than a single function call from the kernel.

addFunction(foo(array) {
  return [array[0], array[1]]
})
addFunction(bar(array) {
  return foo(array)
})
k = createKernal(function(array) {
  foo(array) // totally fine
  bar(array) // errs with "gpu-browser.js:6923 Uncaught Error: Bit ratio for argument objList not found in function bar"
})
k([1,2,3,4,5])
added a commit that references this issue on Dec 2, 2021
988a626
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      Participants

      @mweitzel@robertleeplummerjr@peakpoint@harshkhandeparkar

      Issue actions

        Uncaught Error: argument bit ratio not found · Issue #600 · gpujs/gpu.js