Yup On Mon, Aug 26, 2013 at 2:34 AM, Tobias Hammer <tobias.ham...@dlr.de> wrote: > I guess you should replace it in the function body too > > diff --git a/opencl/c/syntax.rkt b/opencl/c/syntax.rkt > index 909b2c8..3848e1b 100644 > --- a/opencl/c/syntax.rkt > +++ b/opencl/c/syntax.rkt > @@ -216,13 +216,13 @@ > (define (id:selector arg_id ... _param_type) > (case (hash-ref id-selector-map _param_type #f) > [(_vtype) > - (local [(define len (id:length _arg_type ... _param_type))] > + (local [(define len (id:length arg_id ... _param_type))] > (if (zero? len) > _vtype-default > - (id:_vtype _arg_type ... _param_type len)))] > + (id:_vtype arg_id ... _param_type len)))] > ... > [(_ftype) > - (id:_ftype _arg_type ... _param_type)] > + (id:_ftype arg_id ... _param_type)] > ... > [else > (error 'id:selector "Invalid parameter: ~e" _param_type)])) > > > > On Sun, 25 Aug 2013 04:02:54 +0200, Dane Larsen <d...@larsendt.com> wrote: > >> Hmm. I think I almost have it, but there's one error I can't seem to track >> down. >> >> Switching from _arg_type to arg_id seems to have almost worked, but now >> I'm stuck. When I try to run my context sharing test program >> (https://github.com/larsendt/cl-gl-context-sharing/) I get the following: >> >> vector-length: contract violation >> expected: vector? >> given: #<ctype> >> context...: >> /home/dane/chematox/local/racket-5.90.0.6/collects/ffi/unsafe.rkt:27:27: >> vector->cblock >> /home/dane/git/opencl/opencl/c/syntax.rkt:160:13 >> /home/dane/git/opencl/opencl/c/syntax.rkt:216:11: >> clGetGLContextInfoKHR:generic >> /home/dane/git/opencl/opencl/sinemesh/sinemesh-gl.rkt:30:6 >> /home/dane/git/opencl/opencl/sinemesh/sinemesh-gl.rkt:18:2 >> >> /home/dane/chematox/local/racket-5.90.0.6/collects/racket/private/class-internal.rkt:4070:0: >> continue-make-object >> >> /home/dane/chematox/local/racket-5.90.0.6/collects/racket/private/class-internal.rkt:4051:0: >> do-make-object >> /home/dane/git/opencl/opencl/sinemesh/sinemesh-gl.rkt: [running body] >> >> It looks like the error is happening in the definition of _vector, which >> calls vector->cblock. I assumed that would be in the conversion of the input >> 'properties' vector >> (https://github.com/larsendt/cl-gl-context-sharing/blob/master/sinemesh-gl.rkt#L46), >> but that's definitely a vector, not a ctype. There aren't any other inputs >> being passed to _vector, so I honestly have no idea what's causing it. >> >> I put up my fork of the opencl module with the changes at >> https://github.com/larsendt/opencl/. The definition of clGetGLContextInfoKHR >> lives at >> https://github.com/larsendt/opencl/blob/master/opencl/c/9-7.rkt#L19. >> >> Thanks for the help so far. I'm still getting my bearings in macro-world, >> and it's definitely showing today. >> >> Dane >> >> >> On 08/23/2013 09:29 AM, Jay McCarthy wrote: >>> >>> Hi Dane, >>> >>> Thanks for working on this. >>> >>> If you look at line 106 of the definition of define-opencl-info, it >>> uses the _arg_type as the name of the selector's arguments. I think >>> you could safely replace that with arg_id, if not, then you would want >>> to create new ids with generate-temporaries, but try arg_id first. >>> >>> Since this looks like a simple change, try it on your end and we can >>> just include it in the pull request/patch you send me. >>> >>> Jay >>> >>> >>> On Thu, Aug 22, 2013 at 7:54 PM, Dane Larsen <d...@larsendt.com> wrote: >>>> >>>> Hi all, >>>> >>>> I'm a little new to Racket (and Lispy languages in general). I'm working >>>> on >>>> extending the OpenCL module to add support for OpenGL context sharing. >>>> >>>> My questions are somewhat specific to the OpenCL module, but hopefully I >>>> can >>>> provide enough context to minimize that. >>>> >>>> Right now I'm working on clGetGLContextInfoKHR in, and it's been a bit >>>> more >>>> challenging than I anticipated. It's a CL extension function, so >>>> get-ffi-obj >>>> fails to find it. This hasn't been a huge problem. I ended up creating >>>> an >>>> alternate version of define-opencl ( >>>> https://github.com/jeapostrophe/opencl/blob/master/opencl/c/lib.rkt#L17) >>>> which I've called define-opencl-extension. Rather than calling >>>> get-ffi-obj, >>>> it calls clGetExtensionFunctionAddress. That part works great. >>>> >>>> The big problem that I'm having right now is with define-opencl-info ( >>>> >>>> https://github.com/jeapostrophe/opencl/blob/master/opencl/c/syntax.rkt#L18), >>>> which essentially provides a convenient interface for the clGet*Info >>>> functions (which all have similar arguments). clGetGLContextInfoKHR >>>> follows >>>> that pattern with one exception. It's primary input argument takes a >>>> vector >>>> of values, rather than a single value. >>>> >>>> A call to define-opencl-info looks like this: >>>> https://github.com/jeapostrophe/opencl/blob/master/opencl/c/5-3.rkt#L76 >>>> >>>> I thought I had the correct syntax by essentially replacing line 79 with >>>> the >>>> following: >>>> >>>> (args [properties : (_vector i _cl_context_properties) >>>> _cl_context_properties_vector/c]) >>>> >>>> (I've also replaced the other types and argument names and whatnot, but >>>> that >>>> all seems to work). >>>> Anyway, with the (_vector ...) call, I get the following error: >>>> >>>> ; c/9-7.rkt:26:22: define: not an identifier, identifier with default, >>>> or >>>> ; keyword for procedure argument >>>> ; at: (_vector i _cl_context_properties) >>>> ; in: (define (clGetGLContextInfoKHR:generic (_vector i >>>> ; _cl_context_properties) _cl_gl_context_info) (case (hash-ref >>>> ; id-selector-map _cl_gl_context_info #f) ((_cl_device_id*) (local >>>> ((define >>>> ; len (clGetGLContextInfoKHR:length (_vector i >>>> _cl_context_properties)... >>>> ; [,bt for context] >>>> >>>> I'm not sure what that error is referring to, or how to fix it. >>>> Here's the backtrack, but it's not terribly helpful (that I can see, >>>> anyway): >>>> >>>> ; c/9-7.rkt:26:22: define: not an identifier, identifier with default, >>>> or >>>> keyword for procedure argument >>>> ; at: (_vector i _cl_context_properties) >>>> ; in: (define (clGetGLContextInfoKHR:generic (_vector i >>>> _cl_context_properties) _cl_gl_context_info) (case (hash-ref >>>> id-selector-map >>>> _cl_gl_context_info #f) ((_cl_device_id*) (local ((define len >>>> (clGetGLContextInfoKHR:length (_vector i _cl_context_properties)... >>>> ; context...: >>>> ; >>>> >>>> /home/dane/encrypted/work/chematox/local/racket-5.90.0.6/collects/racket/private/norm-define.rkt:46:33: >>>> simple-proto >>>> ; >>>> >>>> /home/dane/encrypted/work/chematox/local/racket-5.90.0.6/collects/racket/private/norm-define.rkt:134:33: >>>> general-proto >>>> ; try-next >>>> ; >>>> >>>> /home/dane/encrypted/work/chematox/local/racket-5.90.0.6/collects/racket/private/kw.rkt:804:2 >>>> ; >>>> >>>> /home/dane/encrypted/work/chematox/local/racket-5.90.0.6/collects/racket/private/modbeg.rkt:46:4 >>>> ; >>>> >>>> /home/dane/encrypted/work/chematox/local/racket-5.90.0.6/share/pkgs/xrepl-lib/xrepl/xrepl.rkt:1346:0 >>>> ; standard-module-name-resolver >>>> ; >>>> >>>> /home/dane/encrypted/work/chematox/local/racket-5.90.0.6/share/pkgs/xrepl-lib/xrepl/xrepl.rkt:1346:0 >>>> ; standard-module-name-resolver >>>> ; >>>> >>>> /home/dane/encrypted/work/chematox/local/racket-5.90.0.6/share/pkgs/xrepl-lib/xrepl/xrepl.rkt:1346:0 >>>> ; standard-module-name-resolver >>>> ; >>>> >>>> /home/dane/encrypted/work/chematox/local/racket-5.90.0.6/share/pkgs/xrepl-lib/xrepl/xrepl.rkt:1346:0 >>>> ; >>>> >>>> /home/dane/encrypted/work/chematox/local/racket-5.90.0.6/collects/racket/private/misc.rkt:87:7 >>>> >>>> In addition, when I replace the (_vector ...) stuff with a plain old >>>> _cl_context_properties, everything works fine (but the contract fails >>>> when I >>>> actually try to call clGetGLContextInfoKHR, as expected). >>>> >>>> What am I doing wrong? It looks like (_vector i _cl_context_properties) >>>> is >>>> just as much of a ctype as _cl_context_properties, so why does it fail >>>> when >>>> I make it a vector? >>>> >>>> Thanks a ton, >>>> Dane Larsen >>>> >>>> ____________________ >>>> Racket Users list: >>>> http://lists.racket-lang.org/users >>>> >>> >>> >>> >> >> ____________________ >> Racket Users list: >> http://lists.racket-lang.org/users > > > > -- > --------------------------------------------------------- > Tobias Hammer > DLR / Robotics and Mechatronics Center (RMC) > Muenchner Str. 20, D-82234 Wessling > Tel.: 08153/28-1487 > Mail: tobias.ham...@dlr.de
-- Jay McCarthy <j...@cs.byu.edu> Assistant Professor / Brigham Young University http://faculty.cs.byu.edu/~jay "The glory of God is Intelligence" - D&C 93 ____________________ Racket Users list: http://lists.racket-lang.org/users