Skip to content

Commit

Permalink
Testing graal-native pathways without code generation.
Browse files Browse the repository at this point in the history
  • Loading branch information
cnuernber committed Mar 19, 2021
1 parent ef5b8ae commit 1fee902
Showing 1 changed file with 27 additions and 105 deletions.
132 changes: 27 additions & 105 deletions src/tech/v3/tensor/dimensions/global_to_local.clj
Original file line number Diff line number Diff line change
Expand Up @@ -92,30 +92,33 @@
reduced-dims))))


(defonce ^ConcurrentHashMap defined-classes (ConcurrentHashMap.))

(defonce sig->constructor-fn
(graal-native/if-defined-graal-native
elem-idx->addr-fn
(try
(let [insn-fn
(requiring-resolve 'tech.v3.tensor.dimensions.gtol-insn/generate-constructor)]
(fn [signature]
(try
(insn-fn signature)
(catch Throwable e
(log/warnf e "Index function generation failed for sig %s" signature)
elem-idx->addr-fn))))
(catch Throwable e
(log/warn e "insn unavailable-falling back to default indexing system")
elem-idx->addr-fn))))


(defn- absent-sig-fn
[signature]
(reify Function
(apply [this signature]
(sig->constructor-fn signature))))
(graal-native/if-defined-graal-native
(do
(log/infof "Graal Native Defined -- insn custom indexing disabled!"))
(do
(log/infof "insn custom indexing enabled!")
(defonce ^ConcurrentHashMap defined-classes (ConcurrentHashMap.))

(defonce sig->constructor-fn
(try
(let [insn-fn
(requiring-resolve 'tech.v3.tensor.dimensions.gtol-insn/generate-constructor)]
(fn [signature]
(try
(insn-fn signature)
(catch Throwable e
(log/warnf e "Index function generation failed for sig %s" signature)
elem-idx->addr-fn))))
(catch Throwable e
(log/warn e "insn unavailable-falling back to default indexing system")
elem-idx->addr-fn)))


(defn- absent-sig-fn
[signature]
(reify Function
(apply [this signature]
(sig->constructor-fn signature))))))


(defn make-indexing-obj
Expand Down Expand Up @@ -239,87 +242,6 @@
(pmath/inc idx)))
val)))))))))

(def builtin-signatures
[{:n-dims 3,
:direct-vec [false false true],
:offsets? false,
:broadcast? false,
:trivial-last-stride? true}
{:n-dims 2,
:direct-vec [true true],
:offsets? false,
:broadcast? true,
:trivial-last-stride? false}
{:n-dims 2,
:direct-vec [true true],
:offsets? false,
:broadcast? false,
:trivial-last-stride? true}
{:n-dims 1,
:direct-vec [true],
:offsets? false,
:broadcast? false,
:trivial-last-stride? false}
{:n-dims 2,
:direct-vec [true false],
:offsets? false,
:broadcast? true,
:trivial-last-stride? false}
{:n-dims 2,
:direct-vec [true true],
:offsets? true,
:broadcast? false,
:trivial-last-stride? true}
{:n-dims 2,
:direct-vec [true false],
:offsets? false,
:broadcast? false,
:trivial-last-stride? true}
{:n-dims 2,
:direct-vec [true true],
:offsets? false,
:broadcast? true,
:trivial-last-stride? true}
{:n-dims 2,
:direct-vec [true false],
:offsets? true,
:broadcast? true,
:trivial-last-stride? false}
{:n-dims 1,
:direct-vec [true],
:offsets? false,
:broadcast? false,
:trivial-last-stride? true}
{:n-dims 2,
:direct-vec [true false],
:offsets? false,
:broadcast? true,
:trivial-last-stride? true}
{:n-dims 2,
:direct-vec [true true],
:offsets? false,
:broadcast? false,
:trivial-last-stride? false}
{:n-dims 2,
:direct-vec [true false],
:offsets? true,
:broadcast? true,
:trivial-last-stride? true}
{:n-dims 2,
:direct-vec [false true],
:offsets? false,
:broadcast? false,
:trivial-last-stride? true}
{:n-dims 2,
:direct-vec [true false],
:offsets? false,
:broadcast? false,
:trivial-last-stride? false}])

;;Implement builtin signatures that we always want to have
(doseq [sig builtin-signatures]
(.computeIfAbsent defined-classes sig (absent-sig-fn sig)))


(comment
(require '[tech.v3.tensor.dimensions :as dims])
Expand Down

0 comments on commit 1fee902

Please sign in to comment.