microsoft / onnxjs

ONNX.js: run ONNX models using JavaScript

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

How to contribute to Webgl ops?

Manojbhat09 opened this issue · comments

Please provide a short guide on how to write ops.

This commit is a good example of adding implementation for a operator on one or more backends.

A rough instruction -

  1. add a new file (if it doesn't exist) under lib/ops/ for the operator, implement an abstract class derived from Operator with member function initialize, checkInputs and checkInputTypes. Operator attributes are usually put here too.

  2. add a new file under lib/backends/webgl/ops/ for the operator, implement a class that extends the abstract class described in (1) and implement interface WebGLOperator as well.

    • function run usually implement as calling WebGLOperatorHelper.run(), unless a custom step is required
    • function createProgramInfo returns the shader and layout
    • function createRunData returns the texture data and uniform binding (if any)
  3. add resolve rules in /lib/backends/webgl/op-resolve-rules.ts for the newly implemented operator.

  4. add standard node test or custom operator test in unittest-whitelist.jsonc.

Let me know if you have further questions

Hi, @fs-eire Thanks for your response.
I wanted to know how to do tests. There are .pd files I guess generated from TensorFlow.
I was wondering if we can generate the same from Pytorch?
How would that look like?

I did a PR but failed due to tests I think.
#220