(defpackage #:ocl-ffi (:use #:cl) (:export ;; Platform APIs %get-platform-ids %get-platform-info ;; Device APIs %get-device-ids %get-device-info %create-sub-devices %retain-device %release-device %set-default-device-command-queue %get-device-and-host-timer %get-host-timer ;; Context APIs %create-context %create-context-from-type %retain-context %release-context %get-context-info set-context-destructor-callback ;; Command Queue APIs %create-command-queue-with-properties %retain-command-queue %release-command-queue %get-command-queue-info ;; Memory Object APIs %create-buffer create-sub-buffer create-image %create-pipe create-buffer-with-properties create-image-with-properties %retain-mem-object %release-mem-object %get-supported-image-formats %get-mem-object-info %get-image-info %get-pipe-info set-mem-object-destructor-callback ;; SVM Allocation APIs svm-alloc svm-free ;; Sampler APIs %create-sampler-with-properties %retain-sampler %release-sampler %get-sampler-info ;; Program Object APIs %create-program-with-source create-program-with-binary create-program-with-built-in-kernels create-program-with-il %retain-program %release-program %build-program %compile-program %link-program set-program-release-callback set-program-specialization-constant %unload-platform-compiler %get-program-info %get-program-build-info ;; Kernel Object APIs %create-kernel %create-kernels-in-program %clone-kernel %retain-kernel %release-kernel %set-kernel-arg set-kernel-arg-svm-pointer set-kernel-exec-info %get-kernel-info %get-kernel-arg-info %get-kernel-work-group-info %get-kernel-sub-group-info ;; Event Object APIs %wait-for-events %get-event-info %create-user-event %retain-event %release-event %set-user-event-status set-event-callback ;; Profiling APIs %get-event-profiling-info ;; Flush and Finish APIs %flush %finish ;; Enqueued Commands APIs %enqueue-read-buffer enqueue-read-buffer-rect enqueue-write-buffer enqueue-write-buffer-rect enqueue-fill-buffer enqueue-copy-buffer enqueue-copy-buffer-rect enqueue-read-image enqueue-write-image enqueue-fill-image enqueue-copy-image enqueue-copy-image-to-buffer enqueue-copy-buffer-to-image enqueue-map-buffer enqueue-map-image enqueue-unmap-mem-object enqueue-migrate-mem-objects %enqueue-nd-range-kernel enqueue-native-kernel enqueue-marker-with-wait-list enqueue-barrier-with-wait-list %enqueue-svm-free %enqueue-svm-memcpy %enqueue-svm-memfill %enqueue-svm-map %enqueue-svm-unmap %enqueue-svm-migrate-mem ;; Extension function access get-extension-function-address-for-platform ;; Deprecated OpenCL 1.0 APIs set-command-queue-property ;; Deprecated OpenCL 1.1 APIs create-image-2d create-image-3d enqueue-marker %enqueue-wait-for-events enqueue-barrier unload-compiler get-extension-function-address ;; Deprecated OpenCL 2.0 APIs %create-command-queue create-sampler enqueue-task ;; Types cl-char cl-uchar cl-short cl-ushort cl-int cl-uint cl-long cl-ulong cl-half cl-float cl-double cl-platform-id cl-device-id cl-context cl-command-queue cl-mem cl-program cl-kernel cl-event cl-sampler cl-error-code cl-bool cl-bitfield cl-properties cl-platform-info cl-device-info cl-device-mem-cache-type cl-device-local-mem-type cl-context-info cl-command-queue-info cl-channel-order cl-channel-type cl-mem-object-type cl-mem-info cl-image-info cl-pipe-info cl-addressing-mode cl-filter-mode cl-sampler-info cl-program-info cl-program-build-info cl-build-status cl-kernel-info cl-kernel-arg-info cl-kernel-arg-address-qualifier cl-kernel-arg-access-qualifier cl-kernel-work-group-info cl-kernel-sub-group-info cl-kernel-exec-info cl-event-info cl-command-type cl-buffer-create-type cl-profiling-info cl-khronos-vendor-id cl-device-type cl-device-fp-config cl-device-exec-capabilities cl-device-svm-capabilities cl-command-queue-properties cl-device-affinity-domain cl-mem-flags cl-svm-mem-flags cl-mem-migration-flags cl-program-binary-type cl-map-flags cl-kernel-arg-type-qualifier cl-device-atomic-capabilities cl-device-device-enqueue-capabilities cl-mem-properties cl-queue-properties cl-device-partition-property cl-context-properties cl-pipe-properties cl-sampler-properties cl-version cl-image-format cl-buffer-region cl-name-version cl-image-desc)) (defpackage #:ocl (:use #:cl #:alexandria #:ocl-ffi)) (in-package #:ocl) (cffi:define-foreign-library libopencl (:unix (:or "libOpenCL.so" "/gnu/store/i70jq190cpc45crbnrw8g8lgb4djyi9r-opencl-icd-loader-2021.06.30/lib/libOpenCL.so")) (t (:default "libOpenCL"))) (cffi:use-foreign-library libopencl)