Skip to content

Commit

Permalink
Added decent-platform to toolbox.
Browse files Browse the repository at this point in the history
  • Loading branch information
blueberry committed Jun 1, 2019
1 parent 3623319 commit 1fa5191
Show file tree
Hide file tree
Showing 10 changed files with 35 additions and 24 deletions.
4 changes: 2 additions & 2 deletions project.clj
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
;; the terms of this license.
;; You must not remove this notice, or any other, from this software.

(defproject uncomplicate/clojurecl "0.11.0"
(defproject uncomplicate/clojurecl "0.12.0-SNAPSHOT"
:description "ClojureCL is a Clojure library for parallel computations with OpenCL."
:url "https://github.com/uncomplicate/clojurecl"
:scm {:name "git"
Expand All @@ -31,7 +31,7 @@
uncomplicate.clojurecl.internal.utils]}

:profiles {:dev {:plugins [[lein-midje "3.2.1"]
[lein-codox "0.10.3"]]
[lein-codox "0.10.6"]]
:global-vars {*warn-on-reflection* true
*assert* true
*unchecked-math* :warn-on-boxed
Expand Down
3 changes: 3 additions & 0 deletions src/clojure/uncomplicate/clojurecl/toolbox.clj
Original file line number Diff line number Diff line change
Expand Up @@ -57,3 +57,6 @@
(let [res (float-array 1)]
(enq-read! queue cl-buf res)
(aget res 0)))

(defn decent-platform [platforms]
(first (filter #(< 0 (num-devices % :gpu)) (remove legacy? platforms))))
17 changes: 9 additions & 8 deletions test/clojure/uncomplicate/clojurecl/core_test.clj
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@
[uncomplicate.fluokitten.core :refer [fmap]]
[uncomplicate.clojurecl
[core :refer :all]
[info :refer [reference-count mem-base-addr-align opencl-c-version queue-context]]]
[info :refer [reference-count mem-base-addr-align opencl-c-version queue-context]]
[toolbox :refer [decent-platform]]]
[uncomplicate.clojurecl.internal
[protocols :refer [size ptr byte-buffer wrap extract]]
[impl :refer :all]]
Expand All @@ -38,7 +39,7 @@
(facts
"num-devices tests."

(let [p (first (remove legacy? (platforms)))]
(let [p (decent-platform (platforms))]
(num-devices* p CL/CL_DEVICE_TYPE_ALL) => (num-devices p :all)

(< 0 (num-devices p :all)) => true
Expand All @@ -62,7 +63,7 @@
(facts
"devices tests"

(let [p (first (remove legacy? (platforms)))]
(let [p (decent-platform (platforms))]
;;(vec (devices* p CL/CL_DEVICE_TYPE_ALL)) => (devices p :all)

(count (devices p :all)) => (num-devices p :all)
Expand All @@ -83,7 +84,7 @@
(facts
"Root level devices resource management."

(let [p (first (remove legacy? (platforms)))
(let [p (decent-platform (platforms))
da (first (devices p))
db (first (devices p))]
(reference-count da) => 1
Expand All @@ -101,7 +102,7 @@
(:errinfo (<!! ch)) => "Some error")))
(set! *warn-on-reflection* true)

(let [p (first (remove legacy? (platforms)))]
(let [p (decent-platform (platforms))]
(with-platform p
(with-release [devs (devices p)
dev (first (filter #(<= 2.0 (double (:version (opencl-c-version %)))) devs))]
Expand Down Expand Up @@ -204,7 +205,7 @@
"cl-buffer and cl-sub-buffer reading/writing tests."
(let [alignment (mem-base-addr-align
(first (filter #(<= 2.0 (double (:version (opencl-c-version %))))
(devices (first (remove legacy? (platforms)))))))]
(devices (decent-platform (platforms))))))]
(with-release [cl-buf (cl-buffer (* 4 alignment Float/BYTES))
cl-subbuf (cl-sub-buffer cl-buf (* alignment Float/BYTES) (* alignment Float/BYTES))]
(cl-buffer? cl-subbuf) => true
Expand Down Expand Up @@ -321,7 +322,7 @@
ev-write (event)
wsize (work-size [8])]

(with-release [devs (devices (first (remove legacy? (platforms))))
(with-release [devs (devices (decent-platform (platforms)))
ctx (context devs)
queue1 (command-queue ctx (first devs))
queue2 (command-queue ctx (first devs))
Expand Down Expand Up @@ -354,7 +355,7 @@
(enq-unmap! queue1 cl-data mapped-write) => queue1)))

(with-release [dev (first (filter #(= 2.0 (:version (opencl-c-version %)))
(devices (first (remove legacy? (platforms))) :gpu)))
(devices (decent-platform (platforms)) :gpu)))
ctx (context [dev])
queue (command-queue ctx dev)
svm (svm-buffer ctx (* cnt Float/BYTES) 0)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@
[uncomplicate.commons
[core :refer [with-release]]
[utils :refer [put-float get-float]]]
[uncomplicate.clojurecl.core :refer :all]))
[uncomplicate.clojurecl.core :refer :all]
[uncomplicate.clojurecl.toolbox :refer [decent-platform]]))

(def program-source (slurp "test/opencl/examples/jocl/hello-kernel.cl"))

Expand All @@ -21,7 +22,7 @@
src-array-b (float-array (range n))
dest-array (float-array n)
work-sizes (work-size [n] [1])]
(with-release [devs (devices (first (platforms)))
(with-release [devs (devices (decent-platform (platforms)))
dev (first devs)
ctx (context devs)
cqueue (command-queue ctx dev)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,13 @@
[utils :refer [direct-buffer]]]
[uncomplicate.clojurecl
[core :refer :all]
[info :refer [endian-little]]]))
[info :refer [endian-little]]
[toolbox :refer [decent-platform]]]))

(let [notifications (chan)
follow (register notifications)]

(with-release [dev (first (devices (first (platforms))))
(with-release [dev (first (devices (decent-platform (platforms))))
ctx (context [dev])
cqueue (command-queue ctx dev)]

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,11 @@
(:require [midje.sweet :refer :all]
[clojure.java.io :as io]
[uncomplicate.commons.core :refer [with-release info]]
[uncomplicate.clojurecl.core :refer :all]))
[uncomplicate.clojurecl
[core :refer :all]
[toolbox :refer [decent-platform]]]))

(with-release [dev (first (devices (first (platforms))))
(with-release [dev (first (devices (decent-platform (platforms))))
ctx (context [dev])
cqueue (command-queue ctx dev)]

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,10 @@
[utils :refer [direct-buffer]]]
[uncomplicate.clojurecl
[core :refer :all]
[info :refer [profiling-info durations end opencl-c-version]]]))
[info :refer [profiling-info durations end opencl-c-version]]
[toolbox :refer [decent-platform]]]))

(with-release [dev (first (sort-by-cl-version (devices (first (platforms)))))
(with-release [dev (first (sort-by-cl-version (devices (decent-platform (platforms)))))
ctx (context [dev])
cqueue (command-queue ctx dev :profiling)]

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,12 @@
[utils :refer [direct-buffer]]]
[uncomplicate.clojurecl
[core :refer :all]
[info :refer [durations profiling-info]]]))
[info :refer [durations profiling-info]]
[toolbox :refer [decent-platform]]]))

(set! *unchecked-math* true)

(with-release [dev (nth (sort-by-cl-version (devices (first (platforms)))) 0)
(with-release [dev (nth (sort-by-cl-version (devices (decent-platform (platforms)))) 0)
ctx (context [dev])
cqueue (command-queue ctx dev :profiling)]

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,13 @@
[uncomplicate.commons.core :refer [with-release info]]
[uncomplicate.clojurecl
[core :refer :all]
[info :refer [durations profiling-info opencl-c-version]]]))
[info :refer [durations profiling-info opencl-c-version]]
[toolbox :refer [decent-platform]]]))

(set! *unchecked-math* true)

(with-release [dev (first (filter #(= 2.0 (:version (opencl-c-version %)))
(devices (first (platforms)))))
(with-release [dev (first (filter #(<= 2.0 (:version (opencl-c-version %)))
(devices (decent-platform (platforms)))))
ctx (context [dev])
cqueue (command-queue ctx dev :profiling)]

Expand Down
2 changes: 1 addition & 1 deletion test/clojure/uncomplicate/clojurecl/toolbox_test.clj
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
program-source [(slurp "src/opencl/uncomplicate/clojurecl/kernels/reduction.cl")
(slurp "test/opencl/toolbox_test.cl")]]

(with-release [dev (first (devices (first (remove legacy? (platforms)))))
(with-release [dev (first (devices (decent-platform (platforms))))
ctx (context [dev])
queue (command-queue ctx dev)
wgs (max-work-group-size dev)
Expand Down

0 comments on commit 1fa5191

Please sign in to comment.