DrTimothyAldenDavis / GraphBLAS

SuiteSparse:GraphBLAS: graph algorithms in the language of linear algebra. For production: (default) STABLE branch. Code development: ask me for the right branch before submitting a PR. video intro: https://youtu.be/Tj5y6d7FegI .
http://faculty.cse.tamu.edu/davis/GraphBLAS.html
Other
355 stars 62 forks source link

Allow enabling and disabling JIT for operators and types with get/set #249

Open rayegun opened 10 months ago

rayegun commented 10 months ago

Right now compilation is controlled in one of two ways: globally with GxB_JIT_C_CONTROL and quasi-local control in the form of type / operator definitions (providing a definition enables JIT, not providing one disables it. This is a one time switch though).

I would like to allow users more manual control, and to allow me to JIT only when I deem it worth the overhead. I propose allowing GxB_JIT_C_CONTROL to be set on individual operators and types as well. I believe I understand the compilation pipeline relatively well now, and I don't think the overhead to do this would be too extreme (as the JIT works currently).

The default would be the same as the global.

DrTimothyAldenDavis commented 10 months ago

That wouldn't be too hard to do, like GrB_set (operator, GxB_JIT_C_CONTROL, GxB_JIT_OFF) or something. It could be done for types, monoids, ops, semirings, etc without much difficulty.