Add fused-pipeline primitive and test for compiled CUDA kernels
This commit is contained in:
43
test_fused_pipeline.sexp
Normal file
43
test_fused_pipeline.sexp
Normal file
@@ -0,0 +1,43 @@
|
||||
;; Test Fused Pipeline - Should be much faster than interpreted
|
||||
;;
|
||||
;; This uses the fused-pipeline primitive which compiles all effects
|
||||
;; into a single CUDA kernel instead of interpreting them one by one.
|
||||
|
||||
(stream "fused_pipeline_test"
|
||||
:fps 30
|
||||
:width 1920
|
||||
:height 1080
|
||||
:seed 42
|
||||
|
||||
;; Load primitives
|
||||
(require-primitives "streaming_gpu")
|
||||
(require-primitives "image")
|
||||
(require-primitives "math")
|
||||
|
||||
;; Define the effects pipeline (compiled to single CUDA kernel)
|
||||
(def effects-pipeline
|
||||
[{"op" "rotate" "angle" 0}
|
||||
{"op" "zoom" "amount" 1.0}
|
||||
{"op" "hue_shift" "degrees" 30}
|
||||
{"op" "ripple" "amplitude" 15 "frequency" 10 "decay" 2 "phase" 0 "center_x" 960 "center_y" 540}
|
||||
{"op" "brightness" "factor" 1.0}])
|
||||
|
||||
;; Frame pipeline
|
||||
(frame
|
||||
(let [;; Create a gradient image
|
||||
r (+ 0.5 (* 0.5 (math:sin (* t 1))))
|
||||
g (+ 0.5 (* 0.5 (math:sin (* t 1.3))))
|
||||
b (+ 0.5 (* 0.5 (math:sin (* t 1.7))))
|
||||
color [(* r 255) (* g 255) (* b 255)]
|
||||
base (image:make-image 1920 1080 color)
|
||||
|
||||
;; Dynamic parameters (change per frame)
|
||||
angle (* t 30)
|
||||
zoom (+ 1.0 (* 0.2 (math:sin (* t 0.5))))
|
||||
phase (* t 2)]
|
||||
|
||||
;; Apply fused pipeline - all effects in ONE CUDA kernel!
|
||||
(streaming_gpu:fused-pipeline base effects-pipeline
|
||||
:rotate_angle angle
|
||||
:zoom_amount zoom
|
||||
:ripple_phase phase))))
|
||||
Reference in New Issue
Block a user