blob: 65bc06663239cd80a8df2a11571359ae34bb9f27 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
(in-package #:ocl)
(defun create-kernel (program kernel-name)
(check-error-arg (%create-kernel program kernel-name)))
(get-cl-objects create-kernels-in-program (program)
%create-kernels-in-program 'cl-kernel)
(defun clone-kernel (source-kernel)
(check-error-arg (%clone-kernel source-kernel)))
(defun retain-kernel (kernel)
(check-error (%retain-kernel kernel)))
(defun release-kernel (kernel)
(check-error (%release-kernel kernel)))
(defmacro with-kernel ((kernel program name) &body body)
`(let ((,kernel (create-kernel ,program ,name)))
(unwind-protect
(progn ,@body)
(release-kernel ,kernel))))
(defun set-kernel-arg (kernel arg-index arg-type arg-value)
(cffi:with-foreign-pointer (value (cffi:foreign-type-size arg-type) size)
(setf (cffi:mem-ref value arg-type) arg-value)
(check-error (%set-kernel-arg kernel arg-index size value))))
(defparameter +kernel-info-type-alist+
'((:kernel-function-name . :string)
(:kernel-num-args . cl-uint)
(:kernel-reference-count . cl-uint)
(:kernel-context . cl-context)
(:kernel-program . cl-program)
(:kernel-attributes . :string)))
(wrap-get-info-function get-kernel-info %get-kernel-info +kernel-info-type-alist+)
(defparameter +kernel-arg-info-type-alist+
'((:kernel-arg-address-qualifier . cl-kernel-arg-address-qualifier)
(:kernel-arg-access-qualifier . cl-kernel-arg-access-qualifier)
(:kernel-arg-type-name . :string)
(:kernel-arg-type-qualifier . cl-kernel-arg-type-qualifier)
(:kernel-arg-name . :string)))
;; %get-kernel-arg-info
(defparameter +kernel-work-group-info-type-alist+
'((:kernel-global-work-size . (:pointer :size))
(:kernel-work-group-size . :size)
(:kernel-compile-work-group-size . (:pointer :size))
(:kernel-local-mem-size . cl-ulong)
(:kernel-preferred-work-group-size-multiple . :size)
(:kernel-private-mem-size . cl-ulong)))
;; %get-kernel-work-group-info
;; (defparameter +kernel-sub-group-info-type-alist+
;; '(()))
;; %get-kernel-sub-group-info
|