cuda.libraries, cuda.syntax: factor generated CUDA-FUNCTION: word bodies into a "cuda-invoke" macro; add CUDA-GLOBAL: for referencing global symbols
parent
f0a7f039bd
commit
efe7e94a07
|
@ -155,17 +155,29 @@ MACRO: cuda-arguments ( c-types -- quot: ( args... function -- ) )
|
|||
[ cached-module ] dip
|
||||
2array cuda-functions get [ first2 get-function-ptr* ] cache ;
|
||||
|
||||
: define-cuda-word ( word module-name function-name arguments -- )
|
||||
[
|
||||
'[
|
||||
_ _ cached-function
|
||||
[ nip _ cuda-arguments ]
|
||||
[ run-grid ] 2bi
|
||||
]
|
||||
]
|
||||
MACRO: cuda-invoke ( module-name function-name arguments -- )
|
||||
'[
|
||||
_ _ cached-function
|
||||
[ nip _ cuda-arguments ]
|
||||
[ run-grid ] 2bi
|
||||
] ;
|
||||
|
||||
: cuda-global* ( module-name symbol-name -- device-ptr size )
|
||||
[ CUdeviceptr <c-object> c:uint <c-object> ] 2dip
|
||||
[ cached-module ] dip
|
||||
'[ _ _ cuModuleGetGlobal cuda-error ] 2keep [ c:*uint ] bi@ ; inline
|
||||
|
||||
: cuda-global ( module-name symbol-name -- device-ptr )
|
||||
cuda-global* drop ; inline
|
||||
|
||||
: define-cuda-function ( word module-name function-name arguments -- )
|
||||
[ '[ _ _ _ cuda-invoke ] ]
|
||||
[ 2nip \ grid suffix c:void function-effect ]
|
||||
3bi define-declared ;
|
||||
|
||||
: define-cuda-global ( word module-name symbol-name -- )
|
||||
'[ _ _ cuda-global ] (( -- device-ptr )) define-declared ;
|
||||
|
||||
TUPLE: cuda-library name path handle ;
|
||||
|
||||
: <cuda-library> ( name path -- obj )
|
||||
|
|
|
@ -10,6 +10,9 @@ SYNTAX: CUDA-LIBRARY:
|
|||
[ drop current-cuda-library set-global ] 2bi ;
|
||||
|
||||
SYNTAX: CUDA-FUNCTION:
|
||||
scan [ create-in current-cuda-library get ] [ ] bi
|
||||
";" scan-c-args drop define-cuda-word ;
|
||||
scan [ create-in current-cuda-library get ] keep
|
||||
";" scan-c-args drop define-cuda-function ;
|
||||
|
||||
SYNTAX: CUDA-GLOBAL:
|
||||
scan [ create-in current-cuda-library get ] keep
|
||||
define-cuda-global ;
|
||||
|
|
Loading…
Reference in New Issue