Changeset 6962


Ignore:
Timestamp:
09/14/10 10:44:50 (9 years ago)
Author:
rlentz
Message:

latest

Location:
OpenCLIterative3DDeconvolution/src/publication
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • OpenCLIterative3DDeconvolution/src/publication/SobelFilterExample.java

    r6961 r6962  
    11package publication; 
    22 
    3 //Reference:http://www.pages.drexel.edu/~weg22/edge.html 
     3 
    44 
    55 
     
    7979                queue = context.getMaxFlopsDevice().createCommandQueue( CLCommandQueue.Mode.PROFILING_MODE ); 
    8080 
     81                if( DEBUG ) 
     82                { 
     83                        System.out.println( "Max work group size is " + queue.getDevice().getMaxWorkGroupSize() ); 
     84                        System.out.println( "Max work item dimensions is " + queue.getDevice().getMaxWorkItemDimensions() ); 
     85                        System.out.println( "Max parameter size is " + queue.getDevice().getMaxParameterSize() ); 
     86                        for(int i = 0; i < queue.getDevice().getMaxWorkItemDimensions(); i++) 
     87                        System.out.println( "Max work item size is " + queue.getDevice().getMaxWorkItemSizes()[i] ); 
     88                         
     89                } 
     90                 
    8191                if( DEBUG )  System.out.println( "find the max compute unites"); 
    8292                maxComputeUnits = queue.getDevice().getMaxComputeUnits(); 
     
    116126        {                
    117127                //if( DEBUG ) { System.out.println("Writing the input data set and the convolveKernel to the device...");} 
    118                 queue.putWriteBuffer( clFloatBufferData, true ); 
     128                queue.putWriteBuffer( clFloatBufferData, false ); 
    119129 
    120130                //make a copy of the data buffer 
     
    125135 
    126136                //if( DEBUG ) { System.out.println("Enqueing the kernel w...");} 
    127                 queue.put2DRangeKernel(kernel, 0, 0, imageWidth, imageHeight, 1, 1); 
     137                queue.put2DRangeKernel(kernel, 0, 0, imageWidth, imageHeight, 0, 0 ); 
    128138 
    129139                //if( DEBUG ) { System.out.println("Waiting for CLFinish to return...");} 
     
    142152        { 
    143153                final int numVariables = 4; 
    144                 final int numIterations = 50; 
     154                final int numIterations = 1; 
    145155                long[] times = new long[numVariables]; 
    146156                 
     
    197207                                        testImage[ i*testHeight+j ] = getAvg( inputImage[ i*testHeight+j ]); 
    198208 
     209                        //Clone the input data 
     210                        float[] testImageCopy = testImage.clone(); 
     211                         
    199212                        //Start the performance timer 
    200213                        long time = System.currentTimeMillis(); 
     
    224237                        time = System.currentTimeMillis(); 
    225238 
    226                         filter3x3( testImage, testWidth, testHeight ); 
     239                        filter3x3( testImageCopy, testWidth, testHeight ); 
    227240 
    228241                        //Stop the performance timer 
     
    230243                        totalTime[3] += time; 
    231244                        System.out.println("It took...  " + time + " nanoseconds to execute sobel filter in Java for image size " + testHeight + " x " + testWidth ); 
     245                         
     246                        //Compare the results 
     247                        int success = 0, failed = 0; 
     248                        for( int i = 0; i < testWidth; i++ ) 
     249                                for( int j = 0; j < testHeight; j++ ) 
     250                                        if (testImage[ i*testHeight+j ] == testImageCopy[ i*testHeight+j ] ) 
     251                                        { 
     252                                                success++; 
     253                                        }       else { failed++;  
     254                                        if (failed < 100) 
     255                                                System.out.println("Reference value " + testImageCopy[ i*testHeight+j ] + " not equal " + testImage[ i*testHeight+j ] + " for index " + (i*testHeight+j) );} 
     256                        System.out.println("The test passed " + success + " values and failed " + failed + " of " + testWidth*testHeight + " values."); 
    232257                         
    233258                         
  • OpenCLIterative3DDeconvolution/src/publication/sobel.cl

    r6961 r6962  
    66    int x = get_global_id(0); 
    77    int y = get_global_id(1); 
    8     float p[9]; 
     8    float p0, p1, p2, p3, p4, p5, p6, p7, p8 = 0; 
    99    int offset = y * width + x; 
    1010if( x < 1 || y < 1 || x > width - 2 || y > height - 2 ) 
     
    1414else 
    1515{ 
    16     p[0] = input[offset - width - 1] ; 
    17     p[1] = input[offset - width] ; 
    18     p[2] = input[offset - width + 1] ; 
    19     p[3] = input[offset - 1] ; 
    20     p[4] = input[offset] ; 
    21     p[5] = input[offset + 1] ; 
    22     p[6] = input[offset + width - 1] ; 
    23     p[7] = input[offset + width] ; 
    24     p[8] = input[offset + width + 1] ; 
     16    p0 = input[offset - width - 1] ; 
     17    p1 = input[offset - width] ; 
     18    p2 = input[offset - width + 1] ; 
     19    p3 = input[offset - 1] ; 
     20    p4 = input[offset] ; 
     21    p5 = input[offset + 1] ; 
     22    p6 = input[offset + width - 1] ; 
     23    p7 = input[offset + width] ; 
     24    p8 = input[offset + width + 1] ; 
    2525 
    26     float sum1 = p[0] + 2*p[1] + p[2] - p[6] - 2*p[7] - p[8];  //GY 
    27     float sum2 = p[0] + 2*p[3] + p[6] - p[2] - 2*p[5] - p[8];  //GX 
     26    float sum1 = p0 + 2*p1 + p2 - p6 - 2*p7 - p8;  //GY 
     27    float sum2 = p0 + 2*p3 + p6 - p2 - 2*p5 - p8;  //GX 
    2828    
    2929    output[offset] = sqrt(  sum1*sum1 + sum2*sum2 ); 
Note: See TracChangeset for help on using the changeset viewer.