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
|
[ cached-module ] dip
|
||||||
2array cuda-functions get [ first2 get-function-ptr* ] cache ;
|
2array cuda-functions get [ first2 get-function-ptr* ] cache ;
|
||||||
|
|
||||||
: define-cuda-word ( word module-name function-name arguments -- )
|
MACRO: cuda-invoke ( module-name function-name arguments -- )
|
||||||
[
|
'[
|
||||||
'[
|
_ _ cached-function
|
||||||
_ _ cached-function
|
[ nip _ cuda-arguments ]
|
||||||
[ nip _ cuda-arguments ]
|
[ run-grid ] 2bi
|
||||||
[ 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 ]
|
[ 2nip \ grid suffix c:void function-effect ]
|
||||||
3bi define-declared ;
|
3bi define-declared ;
|
||||||
|
|
||||||
|
: define-cuda-global ( word module-name symbol-name -- )
|
||||||
|
'[ _ _ cuda-global ] (( -- device-ptr )) define-declared ;
|
||||||
|
|
||||||
TUPLE: cuda-library name path handle ;
|
TUPLE: cuda-library name path handle ;
|
||||||
|
|
||||||
: <cuda-library> ( name path -- obj )
|
: <cuda-library> ( name path -- obj )
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,9 @@ SYNTAX: CUDA-LIBRARY:
|
||||||
[ drop current-cuda-library set-global ] 2bi ;
|
[ drop current-cuda-library set-global ] 2bi ;
|
||||||
|
|
||||||
SYNTAX: CUDA-FUNCTION:
|
SYNTAX: CUDA-FUNCTION:
|
||||||
scan [ create-in current-cuda-library get ] [ ] bi
|
scan [ create-in current-cuda-library get ] keep
|
||||||
";" scan-c-args drop define-cuda-word ;
|
";" 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