Doesn't build with nvidia CL implementation:

:40: error: subscripted value is neither array nor pointer
                    if (result_distances[x][y] < min_dist && resistancemap[x]
[y] != args[NO_DATA_VALUE]) {
                                                             ^                
~
:52: error: subscripted value is neither array nor pointer
                    if (x >= 0 && y >= 0 && x < n_rows && y < n_cols && 
resistancemap[x][y] != args[NO_DATA_VALUE]) {
                                                                        ^       
         
~
:54: error: subscripted value is neither array nor pointer
                            alt = result_distances[loc.y][loc.x] + 
resistancemap[x][y]/2 + resistancemap[loc.y][loc.x]/2;
                                                                   ^            
    
~
:56: error: subscripted value is neither array nor pointer
                            alt = result_distances[loc.y][loc.x] + SQRT_TWO * 
resistancemap[x][y] + SQRT_TWO * resistancemap[loc.y][loc.x];
                                                                              ^ 
               
~
:66: error: subscripted value is neither array nor pointer
            resistancemap[loc.y][loc.x] = args[NO_DATA_VALUE];
            ^                    ~~~~~

Andreas

On Sonntag 18 Oktober 2009, Nick Gaens wrote:
> Hello all,
> 
> we're trying to get a variation on the Dijkstra algorithm to run in
> pyOpenCL, but we're getting a weird segmentation fault on the line where
> the ALERT comment is located. A print statement before and after this
> line indicates this position.
> 
> Following is the code that initializes the arrays and stuff and loads
> the C code of Dijkstra (located in Dijkstra.cl):
> 
> Dijkstra_cl.py:
>        ...
>         ctx = cl.Context([device])
>         queue = cl.CommandQueue(ctx,
> properties=cl.command_queue_properties.PROFILING_ENABLE)
> 
>         # Contains the resistance map
>         table = numpy.zeros(shape=(100,100))
> 
>         # Contains the remaining arguments for the Dijkstra call
>         # [no_data_value, start_x, start_y, end_x, end_y]
>         Dijkstra_args = numpy.ndarray((5,), buffer=numpy.array([-9999,
> 0, 1, 2, 3]), dtype = numpy.int32)
> 
>         # The map 'table' will be read from and written to by the
> Dijkstra-method
>         mf = cl.mem_flags
>         table_buff = cl.Buffer(ctx, mf.READ_WRITE | mf.USE_HOST_PTR,
> hostbuf = table)
> 
>         Dijkstra_cl_src = ""
>         try:
>             Dijkstra_cl_file = open("Dijkstra.cl")
>             Dijkstra_cl_src = Dijkstra_cl_file.read()
>             Dijkstra_cl_file.close()
>         except IOError as error:
>             print error
>         prg = cl.Program(ctx, Dijkstra_cl_src).build()
> 
>         exec_evt = prg.Dijkstra(queue, table.shape, table_buff,
> Dijkstra_args) # ALERT: segfaults here
>         exec_evt.wait()
> 
>         elapsed = 1e-9 * (exec_evt.profile.end - exec_evt.profile.start)
>         print "Execution time of test: %g s" % elapsed
> 
>         c = numpy.empty_like(table)
>         cl.enqueue_read_buffer(queue, table, c).wait()
> 
> Dijkstra.cl:
>         ...
>         __kernel void Dijkstra ( __global float* resistancemap, __global
> const int* args ) {
>                 // Dijkstra
>                 // Remark: the parameter "resistancemap" is read from
> and written to, but since we've previously set the READ_WRITE flag, this
> should not be a problem or is it?
>         }
> 
> Can someone point us out what exactly is going wrong? I've attached both
> source files in case important information is missing.
> 
> A second question is: is it possible to somehow debug the C-code that
> you build and run via print-statements or so?
> Regarding the second question: what about #include statements in C? The
> compiler just says e.g.: "file <math.h> not found" when trying to
> regularly including it.
> 
> Thx in advance,
> 
> Nick
> 

Attachment: signature.asc
Description: This is a digitally signed message part.

_______________________________________________
PyOpenCL mailing list
[email protected]
http://tiker.net/mailman/listinfo/pyopencl_tiker.net

Reply via email to