Revision f442e4230a41d0d40f81346c1707f946f743cbcf authored by Jeff Bezanson on 09 June 2021, 02:51:34 UTC, committed by GitHub on 09 June 2021, 02:51:34 UTC
This PR implements a way to keep tables of methods that are
not part of the internal method table, but still participate
in the special support we have for keeping tables of methods,
in particular unification through precompilation and efficient
lookup. The intended design use case is to allow for method overlay
tables for various non-CPU backends (e.g. GPU and TPU). These
backends would like to modify basic function like `sin` to
perform better on the device in question (or in the case of TPU
to define them over non-LLVM intrinsics).

It is worth noting that this PR only gives the ability to keep
these tables of methods. It assigns no particular meaning to them
and the runtime (and regular inference) do not look at them.
They are designed as an implementation detail for external
compilers and similar tools.

 # Demo

```julia
julia> using Base.Experimental: @overlay, @MethodTable

julia> @MethodTable(mt)
 # 0 methods:

julia> @overlay mt function sin(x::Float64)
           1
       end

julia> @overlay mt function cos(x::Float64)
           1
       end

julia> mt
 # 2 methods:
[1] cos(x::Float64) in Main at REPL[5]:1
[2] sin(x::Float64) in Main at REPL[4]:1

julia> Base._methods_by_ftype(Tuple{typeof(sin), Float64}, mt, 1, typemax(UInt))
1-element Vector{Any}:
 Core.MethodMatch(Tuple{typeof(sin), Float64}, svec(), sin(x::Float64) in Main at REPL[4]:1, true)

julia> Base._methods_by_ftype(Tuple{typeof(sin), Float64}, 1, typemax(UInt))
1-element Vector{Any}:
 Core.MethodMatch(Tuple{typeof(sin), Float64}, svec(Float64), sin(x::T) where T<:Union{Float32, Float64} in Base.Math at special/trig.jl:29, true)
```

Co-authored-by: Tim Besard <tim.besard@gmail.com>
Co-authored-by: Julian P Samaroo <jpsamaroo@jpsamaroo.me>
Co-authored-by: Keno Fischer <keno@juliacomputing.com>
1 parent 0e3276c
Raw File
.mailmap
JuliaLang <julia-dev@googlegroups.com> <julia-dev@googlegroups.com>
JuliaLang <julia-dev@googlegroups.com> <julia-math@googlegroups.com>

Jeff Bezanson <jeff.bezanson@gmail.com> <jeff.bezanson@gmail.com>
Jeff Bezanson <jeff.bezanson@gmail.com> <bezanson@beagle.darwinproject.mit.edu>
Jeff Bezanson <jeff.bezanson@gmail.com> <bezanson@caspian.caspian.mit.edu>
Jeff Bezanson <jeff.bezanson@gmail.com> <bezanson@evolution.local>
Jeff Bezanson <jeff.bezanson@gmail.com> <bezanson@mathstation045.mit.edu>
Jeff Bezanson <jeff.bezanson@gmail.com> <bezanson@mathstation049.mit.edu>
Jeff Bezanson <jeff.bezanson@gmail.com> <bezanson@mathstation186.mit.edu>
Jeff Bezanson <jeff.bezanson@gmail.com> <bezanson@post.harvard.edu>
Jeff Bezanson <jeff.bezanson@gmail.com> <bezanson@scooby-doo.csail.mit.edu>
Jeff Bezanson <jeff.bezanson@gmail.com> <bezanson@shaggy.csail.mit.edu>
Jeff Bezanson <jeff.bezanson@gmail.com> <jeff@lagann.(none)>
Jeff Bezanson <jeff.bezanson@gmail.com> <julia@beowulf1.csail.mit.edu>
Jeff Bezanson <jeff.bezanson@gmail.com> <vcloud@julia02.domain.local>
Jeff Bezanson <jeff.bezanson@gmail.com> <je24857@gp42-bezanson.llan.ll.mit.edu>

Stefan Karpinski <stefan@karpinski.org> <stefan@karpinski.org>
Stefan Karpinski <stefan@karpinski.org> <stefan.karpinski@gmail.com>
Stefan Karpinski <stefan@karpinski.org> <stefan.karpinski@post.harvard.edu>

Viral B. Shah <viral@mayin.org> <viral@mayin.org>
Viral B. Shah <viral@mayin.org> <viral@beowulf1.csail.mit.edu>
Viral B. Shah <viral@mayin.org> <viral@neumann.cs.ucsb.edu>
Viral B. Shah <viral@mayin.org> <viral@ubuntu-VirtualBox.(none)>

George Xing <gxing@mit.edu> <gxing@mit.edu>
George Xing <gxing@mit.edu> <noobiecubie@gmail.com>

Stephan Boyer <boyers@mit.edu> <boyers@mit.edu>
Stephan Boyer <boyers@mit.edu> <stephan@julialang.xvm.mit.edu>
Stephan Boyer <boyers@mit.edu> <stephan@ubuntu.(none)>
Stephan Boyer <boyers@mit.edu> <stephan@ubuntu.ubuntu-domain>

Jiahao Chen <jiahao@mit.edu> Jiahao Chen (陈家豪) <jiahao@mit.edu>

Giuseppe Zingales <giuseppe.pet.zingales@gmail.com> <giuseppe.pet.zingales@gmail.com>
Giuseppe Zingales <giuseppe.pet.zingales@gmail.com> <g3@ubuntu.ubuntu-domain>

Jameson Nash <jameson@juliacomputing.com> <jameson@juliacomputing.com>
Jameson Nash <jameson@juliacomputing.com> <vtjnash@comcast.net>
Jameson Nash <jameson@juliacomputing.com> <vtjnash@gmail.com>
Jameson Nash <jameson@juliacomputing.com> <vtjnash@users.noreply.github.com>
Jameson Nash <jameson@juliacomputing.com> <jameson@mit.edu>

Alan Edelman <mit.edelman@gmail.com> <mit.edelman@gmail.com>

PlayMyCode <joe@playmycode.com> <joe@playmycode.com>
PlayMyCode <joe@playmycode.com> <hello@playmycode.com>

Corey M. Hoffstein <corey@hoffstein.com> <corey@hoffstein.com>
Corey M. Hoffstein <corey@hoffstein.com> <corey@newfoundresearch.com>

Stefan Kroboth <stefan.kroboth@gmail.com> <stefan.kroboth@gmail.com>

Tim Holy <tim.holy@gmail.com> <tim.holy@gmail.com>
Tim Holy <tim.holy@gmail.com> <holy@wustl.edu>

Patrick O'Leary <patrick.oleary@gmail.com> <patrick.oleary@gmail.com>

Ivan Mantova <horphus@gmail.com> <horphus@gmail.com>

Keno Fischer <keno@juliacomputing.com> <keno@juliacomputing.com>
Keno Fischer <keno@juliacomputing.com> <kfischer@college.harvard.edu>
Keno Fischer <keno@juliacomputing.com> <keno@alumni.harvard.edu>
Keno Fischer <keno@juliacomputing.com> <kfischer+github@college.harvard.edu>
Keno Fischer <keno@juliacomputing.com> <kenof@stanford.edu>
Keno Fischer <keno@juliacomputing.com> <keno@30-9-48.wireless.csail.mit.edu>

Harlan Harris <harlan@harris.name> <harlan@harris.name>
Harlan Harris <harlan@harris.name> <harlan.harris@kaplan.com>

Douglas Bates <dmbates@gmail.com> <dmbates@gmail.com>

Andreas Noack Jensen <andreasnoackjensen@gmail.com> <andreasnoackjensen@gmail.com>
Andreas Noack Jensen <andreasnoackjensen@gmail.com> <andreas@Andreass-MacBook-Pro.local>
Andreas Noack Jensen <andreasnoackjensen@gmail.com> <andreasnoack@Andreass-MacBook-Pro-2.local>
Andreas Noack Jensen <andreasnoackjensen@gmail.com> <andreas@noack.dk>

Westley Argentum Hennigh <WestleyArgentum@gmail.com> <WestleyArgentum@gmail.com>
Westley Argentum Hennigh <WestleyArgentum@gmail.com> <whennigh@forio.com>

George V. Neville-Neil <gnn@freebsd.org> <gnn@freebsd.org>
George V. Neville-Neil <gnn@freebsd.org> <gvnn3>

Alessandro Andrioni Silva <alessandroandrioni@gmail.com> <alessandroandrioni@gmail.com>
Alessandro Andrioni Silva <alessandroandrioni@gmail.com> <jakedust@gmail.com>

Toivo Henningsson <toivo.h.h@gmail.com> <toivo.h.h@gmail.com>
Toivo Henningsson <toivo.h.h@gmail.com> <toivo@control.lth.se>

Adam Savitzky <adam.savitzky@gmail.com> <adam.savitzky@gmail.com>
Adam Savitzky <adam.savitzky@gmail.com> <asavitzky@forio.com>

David Slate <dslate@speakeasy.net> <dslate@speakeasy.net>

Francois Pepin <fpepin@gmail.com> <fpepin@gmail.com>

Waldir Pimenta <waldir@email.com> <waldir@email.com>

Steven G. Johnson <stevenj@alum.mit.edu> <stevenj@mit.edu>
Steven G. Johnson <stevenj@alum.mit.edu> <stevenj@math.mit.edu>
Steven G. Johnson <stevenj@alum.mit.edu> <stevenj@fftw.org>
Steven G. Johnson <stevenj@alum.mit.edu> <stevenj.mit@gmail.com>
Steven G. Johnson <stevenj@alum.mit.edu> <stevenj@ab-initio.mit.edu>

Isaiah Norton <isaiah.norton@gmail.com> <isaiah.norton@gmail.com>
Isaiah Norton <isaiah.norton@gmail.com> <inorton@bwh.harvard.edu>
Isaiah Norton <isaiah.norton@gmail.com> <ihnorton@users.noreply.github.com>
Blake Johnson <blakejohnson04@gmail.com> <blakejohnson04@gmail.com>
Blake Johnson <blakejohnson04@gmail.com> <bjohnson@bbn.com>

Marcus Silva <msilva@bbn.com> <msilva@bbn.com>
Marcus Silva <msilva@bbn.com> <marcus.ps+github@gmail.com>

Amit Murthy <amit.murthy@gmail.com> <amit.murthy@gmail.com>

Tanmay Mohapatra <tanmaykm@gmail.com> <tanmaykm@gmail.com>
Tanmay Mohapatra <tanmaykm@gmail.com> <tanmaykm@julia.mit.edu>

Dan Luu <danluu@gmail.com> <danluu@gmail.com>
Dan Luu <danluu@gmail.com> <Dan>

Kevin Bache <kevin.bache@gmail.com> <kevin.bache@gmail.com>
Kevin Bache <kevin.bache@gmail.com> <trendymoniker@gmail.com>

Rick <rickhg12hs@gmail.com> <rickhg12hs@gmail.com>
Rick <rickhg12hs@gmail.com> <rickhg12hs@users.noreply.github.com>

David Smith <david.smith@gmail.com> <david.smith@gmail.com>
David Smith <david.smith@gmail.com> <david.smith@vanderbilt.edu>

Carlos Becker  <carlosbecker@gmail.com> <cjbecker@iccvlabsrv22.epfl.ch>

Fabian R Lischka <github@fabian-lischka.de> <hackerschool@fabian-lischka.de>

James J Porter <porterjamesj@gmail.com>

Jay Weisskopf <jay@jayschwa.net> <jweisskopf@ebay.com>

Joseph Perla <joseph@notanemail.com> <joseph@ not an email.com>

Jutho <jutho.haegeman@ugent.be> <jutho.haegeman@ugent.be>
Jutho <jutho.haegeman@ugent.be> <Jutho@users.noreply.github.com>

Tomas Lycken <tomas.lycken@gmail.com> <tomas.lycken@gmail.com>
Tomas Lycken <tomas.lycken@gmail.com> <tlycken@kth.se>

Simon Byrne <simon.byrne@gmail.com> <byrne@stats.ucl.ac.uk>
Simon Byrne <simon.byrne@gmail.com> <simonbyrne@gmail.com>

Jake Bolewski <jakebolewski@gmail.com>

Leah Hanson <astrieanna@gmail.com> <leah.a.hanson@gmail.com>

Lei Wang <kookbond@gmail.com> <kookbond@gmail.com>
Lei Wang <kookbond@gmail.com> <wlbksy@users.noreply.github.com>

Kevin Squire <kevin.squire@gmail.com> <kevin@secondspectrum.com>

Michael Fox <415fox@gmail.com> <m@antikc.com>

Miles Gould <mgould1@inf.ed.ac.uk> <miles@assyrian.org.uk>

Pierre-Yves Gerardy <py@py.gy> <pygy79@gmail.com>

Ron Rock <rrock@uchicago.edu> <rsrock@users.noreply.github.com>

Tony Kelman <tony@kelman.net>

Tobias Knopp <tobias@knoppweb.de>

Ben Arthur <bjarthur70@gmail.com> <bjarthur70@gmail.com>
Ben Arthur <bjarthur70@gmail.com> <arthurb@hhmi.org>

Odd Andersen <odd.andersen@gmail.com> <odd.andersen@gmail.com>
Odd Andersen <odd.andersen@gmail.com> <odd.andersen@sintef.no>

Ronan Arraes Jardim Chagas <ronisbr@gmail.com> <ronisbr@gmail.com>
Ronan Arraes Jardim Chagas <ronisbr@gmail.com> <ronan.chagas@ronanchagas-ops.ete.inpe.br>

Tim Besard <tim.besard@gmail.com> <tim.besard@gmail.com>
Tim Besard <tim.besard@gmail.com> <tim.besard@elis.ugent.be>

Tracy Wadleigh <twadleigh@arete.com> <twadleigh@arete.com>
Tracy Wadleigh <twadleigh@arete.com> <twadleigh@.corp.arete.com>

Mike Innes <mike.j.innes@gmail.com>

Sean Garborg <sean.garborg@gmail.com>

Scott P. Jones <scottjones@alum.mit.edu> <scottjones@alum.mit.edu>
Scott P. Jones <scottjones@alum.mit.edu> <ScottPJones@users.noreply.github.com>

M. Prentis <mcprentiss@gmail.com> <mcprentiss@gmail.com>
M. Prentis <mcprentiss@gmail.com> <mprentis@yahoo.com>

Peter <peter.margo@gmx.de> <peter.margo@gmx.de>
Peter <peter.margo@gmx.de> <https://github.com/peter1000>

Rafael Fourquet <fourquet.rafael@gmail.com> <fourquet.rafael@gmail.com>
Rafael Fourquet <fourquet.rafael@gmail.com> <fourquet.rafael+github@gmail.com> <fourquet.rafael+github@gmail.com>
Rafael Fourquet <fourquet.rafael@gmail.com> <rfourquet@users.noreply.github.com>

Dan Wlasiuk <milktrader@gmail.com> <milktrader@gmail.com>
Dan Wlasiuk <milktrader@gmail.com> <milktrader@hushmail.com>

Rene Donner <rene@donner.at> <rene@donner.at>
Rene Donner <rene@donner.at> <github@donner.at>

Waldir Pimenta <waldyrious@gmail.com> <waldyrious@gmail.com>
Waldir Pimenta <waldyrious@gmail.com> <waldir@email.com>

Young Wu <doomsplayer@gmail.com> <doomsplayer@gmail.com>

Daan Huybrechs <daan.huybrechs@cs.kuleuven.be> <daan.huybrechs@cs.kuleuven.be>

Jey Kottalam <jey@kottalam.net> <jey@kottalam.net>
Jey Kottalam <jey@kottalam.net> <jey@cs.berkeley.edu>

John Myles White <jmw@johnmyleswhite.com> <jmw@johnmyleswhite.com>
John Myles White <jmw@johnmyleswhite.com> <johnmyleswhite@gmail.com>

Katharine Hyatt <kslimes@gmail.com> <kslimes@gmail.com>
Katharine Hyatt <kslimes@gmail.com> <kshyatt@users.noreply.github.com>
Katharine Hyatt <kslimes@gmail.com> <kshyatt@users.noreply.github.com>
Katharine Hyatt <kslimes@gmail.com> <kshyatt@physics.ucsb.edu>
Katharine Hyatt <kslimes@gmail.com> <khyatt@flatironinstitute.org>

Oscar Blumberg <naellyn@gmail.com> <naellyn@gmail.com>
Oscar Blumberg <naellyn@gmail.com> <oscar.blumberg@ens.fr>

Seth Bromberger <seth@ncisecurity.com> <seth@ncisecurity.com>
Seth Bromberger <seth@ncisecurity.com> <sbromberger@users.noreply.github.com>

Tomas Lycken <tomas.lycken@gmail.com> <tomas.lycken@gmail.com>
Tomas Lycken <tomas.lycken@gmail.com> <tlycken@users.noreply.github.com>

Tracy Wadleigh <tracy.wadleigh@gmail.com> <tracy.wadleigh@gmail.com>
Tracy Wadleigh <tracy.wadleigh@gmail.com> <twadleigh@arete.com>

Sacha Verweij <sacha.vers@gmail.com> <sacha.vers@gmail.com>
Sacha Verweij <sacha@stanford.edu> <sacha.vers@gmail.com>
Sacha Verweij <sacha@stanford.edu> <Sacha0@users.noreply.github.com>
Sacha Verweij <sacha@stanford.edu> <5799177+Sacha0@users.noreply.github.com>

Kristoffer Carlsson <kcarlsson89@gmail.com> <kcarlsson89@gmail.com>
Kristoffer Carlsson <kristoffer.carlsson@chalmers.se> <kcarlsson89@gmail.com>

Valentin Churavy <vchuravy@mit.edu> <vchuravy@mit.edu>
Valentin Churavy <vchuravy@mit.edu> <v.churavy@gmail.com>
Valentin Churavy <vchuravy@mit.edu> <vchuravy@users.noreply.github.com>

Curtis Vogt <curtis.vogt@gmail.com> <curtis.vogt@gmail.com>
Curtis Vogt <curtis.vogt@gmail.com> <curtis.vogt@invenia.ca>

Rafael Fourquet <fourquet.rafael@gmail.com> <fourquet.rafael@gmail.com>
Rafael Fourquet <fourquet.rafael@gmail.com> <fourquet.rafael+github@gmail.com>
back to top