     b)
   BlasPlus
   (set-all [_ alpha a]
-    (tr-set-scal modl "tr_set" (double alpha) a)
+    (tr-set-scal modl hstream "tr_set" (double alpha) a)
     a)
   (axpby [_ alpha a beta b]
-    (tr-axpby modl (double alpha) ^CUTRMatrix a (double beta) b)
+    (tr-axpby modl hstream (double alpha) ^CUTRMatrix a (double beta) b)
     b))
 
-(deftype FloatTREngine [cublas-handle modl]
+(deftype FloatTREngine [cublas-handle modl hstream]
   BlockEngine
   (equals-block [_ a b]
-    (tr-equals modl a b))
+    (tr-equals modl hstream a b))
   Blas
   (swap [_ a b]
-    (tr-map modl "tr_swap" a b)
+    (tr-map modl hstream "tr_swap" a b)
     a)
   (copy [_ a b]
-    (tr-map modl "tr_copy" a b)
+    (tr-map modl hstream "tr_copy" a b)
     b)
   (scal [_ alpha a]
-    (tr-set-scal modl "tr_scal" (float alpha) a)
+    (tr-set-scal modl hstream "tr_scal" (float alpha) a)
     a)
   (axpy [_ alpha a b]
-    (tr-axpby modl (float alpha) a (float 1.0) b)
+    (tr-axpby modl hstream (float alpha) a (float 1.0) b)
     b)
   (mv [this alpha a x beta y]
     (tr-mv a))

            [uncomplicate.neanderthal.internal.device
             [common :refer :all]
             [cublock :refer :all]])
  (:import jcuda.runtime.JCuda
           [jcuda.jcublas JCublas2 cublasHandle cublasOperation cublasSideMode cublasDiagType
            cublasFillMode]
           [uncomplicate.neanderthal.internal.api Vector Matrix TRMatrix Block DataAccessor

    c)
  BlasPlus
  (set-all [_ alpha a]
    (ge-set modl hstream (double alpha) a)
    a)
  (axpby [_ alpha a beta b]
    (ge-am cublas-handle JCublas2/cublasDgeam (double alpha) ^CUGEMatrix a (double beta) ^CUGEMatrix b)
    b))

(deftype FloatGEEngine [cublas-handle modl hstream]
  BlockEngine
  (equals-block [_ a b]
    (ge-equals modl hstream a b))
  Blas
  (swap [_ a b]
    (ge-swap cublas-handle JCublas2/cublasSswap modl hstream ^CUGEMatrix a ^CUGEMatrix b)
    a)
  (copy [_ a b]
    (ge-am cublas-handle JCublas2/cublasSgeam (float 1) ^CUGEMatrix a (float 0) ^CUGEMatrix b)
