[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [help-GIFT] patches
From: |
risc |
Subject: |
Re: [help-GIFT] patches |
Date: |
Wed, 16 Aug 2006 15:24:51 -0500 |
User-agent: |
Mutt/1.4.1i |
Patch 70-* has been re-generated. was just reversed. whoops!
attaching to this email. cheers!
Julia Longtin <address@hidden>
On Wed, Aug 16, 2006 at 01:04:21PM -0500, address@hidden wrote:
> whoops. patch 70 is reversed, and not as tidy as i'd like, i'll re-generate
> it.
>
> Julia Longtin <address@hidden>
>
> On Wed, Aug 16, 2006 at 12:58:07PM -0500, address@hidden wrote:
> > I'm commiting the earlier discussed patches.
> >
> > the patches i'm commiting change the performance from 1.9, to 1.7. 10%
> > speed boost. ;D
> >
> > attatched, you will find even more patches. per patch policy, i post them
> > for review. i'll apply friday if no-one objects.
> >
> > patch 60 speeds things up slightly, as does patch 70. the important thing
> > about 70 is that it allows me to pull my "sse2 neat trick" in the next round
> > of patches!
> >
> > for your perusal...
> >
> > Julia Longtin <address@hidden>
>
> > --- ../../dev2/gift/ChangeLog 2006-08-13 17:18:40.000000000 +0000
> > +++ ChangeLog 2006-08-13 17:21:22.000000000 +0000
> > @@ -1,3 +1,9 @@
> > +2006-08-13 <address@hidden>
> > +
> > + * FeatureExtraction/gabor.c
> > + dont use calloc for conv, instead declare, and clear manually.
> > + change to C99 datatypes in gabor_filter().
> > +
> > 2006-08-02 <address@hidden>
> > * FeatureExtraction/extract_block_features.c
> > define the kernals here, pass to gabor.c for init, use
>
> > --- ../../dev2/gift/FeatureExtraction/gabor.c 2006-08-13
> > 16:47:51.000000000 +0000
> > +++ FeatureExtraction/gabor.c 2006-08-13 17:07:00.000000000 +0000
> > @@ -79,15 +79,18 @@
> > }
> > }
> >
> > -void gabor_filter(double *image, int width, int height, int filter_scale,
> > int orientation, double ** kernelsxy, double *output) {
> > +void gabor_filter(double *image, int width, int height, int filter_scale,
> > int orientation, double **kernelsxy, double *output) {
> >
> > - double *conv;
> > - int x, y, t_x, t_y;
> > - int i;
> > + uint32_t x, y;
> > + int32_t t_x, t_y;
> > + uint32_t i;
> > double * target_kernal;
> > + double conv[65536]; /* take advantage of our fixed image size. 65536 ==
> > width*height */
> >
> > -
> > - conv = (double *)calloc(width*height, sizeof(double));
> > + for (i = 0; i < width*height; i++)
> > + {
> > + conv[i]= 0; /* needs to be zeroed */
> > + }
> >
> > target_kernal=kernelsxy[filter_scale*num_gabors_per_scale+orientation];
> >
> > @@ -144,5 +147,4 @@
> > }
> > }
> >
> > - free(conv);
> > }
>
> > --- ../../dev2/gift/ChangeLog 2006-08-14 01:54:51.000000000 +0000
> > +++ ChangeLog 2006-08-14 02:03:22.000000000 +0000
> > @@ -1,3 +1,8 @@
> > +2006-08-14 <address@hidden>
> > +
> > + * FeatureExtraction/gabor.c
> > + remove int32_t t_x, replace with uint32_t k. uint32_t is slightly
> > faster, and simplifies the inner loops.
> > +
> > 2006-08-13 <address@hidden>
> >
> > * FeatureExtraction/gabor.c
>
> > --- FeatureExtraction/gabor.c 2006-08-14 01:56:25.000000000 +0000
> > +++ ../../dev2/gift/FeatureExtraction/gabor.c 2006-08-14
> > 01:54:58.000000000 +0000
> > @@ -82,36 +82,33 @@
> > void gabor_filter(double *image, int width, int height, int filter_scale,
> > int orientation, double **kernelsxy, double *output) {
> >
> > uint32_t x, y;
> > - int32_t t_y;
> > + int32_t t_x, t_y;
> > uint32_t i;
> > - uint32_t k;
> > double * target_kernal;
> > double conv[65536]; /* take advantage of our fixed image size. 65536 ==
> > width*height */
> > - double * target_conv;
> > - double * target_image;
> >
> > for (i = 0; i < width*height; i++)
> > {
> > conv[i]= 0; /* needs to be zeroed */
> > - output[i]= 0; /* needs to be zeroed */
> > }
> >
> > - /* first convolution */
> > target_kernal=kernelsxy[filter_scale*num_gabors_per_scale+orientation];
> > +
> > + /* first convolution */
> > for (x = 0; x < width; x++) {
> > for (y = 0; y < height; y++) {
> > -
> > target_image=&image[(width*height)-(y*width+x+kernal_size[filter_scale]/2)];
> > - for (k=0; k < kernal_size[filter_scale]; k++) {
> > - if ((x+kernal_size[filter_scale]/2 >= k) &&
> > (x+kernal_size[filter_scale]/2 < width+k)) {
> > + output[y*width + x] = 0; /* might as well be here */
> > + for (t_x = -kernal_size[filter_scale]/2; t_x <=
> > kernal_size[filter_scale]/2; t_x++) {
> > + if (((x - t_x) >= 0) && ((x - t_x) < width)) {
> > conv[y*width + x] +=
> > - target_kernal[k]*target_image[k];
> >
> > + target_kernal[t_x +
> > kernal_size[filter_scale]/2]*image[65536-(y*width+ (x - t_x))];
> > }
> > }
> > }
> > }
> >
> > - /* second convolution */
> > target_kernal=&target_kernal[kernal_size[filter_scale]];
> > + /* second convolution */
> > for (x = 0; x < width; x++) {
> > for (y = 0; y < height; y++) {
> > for (t_y = -kernal_size[filter_scale]/2; t_y <=
> > kernal_size[filter_scale]/2; t_y++) {
> > @@ -125,22 +122,21 @@
> > for (i = 0; i < width*height; i++)
> > conv[i] = 0;
> >
> > - /* third convolution */
> > target_kernal=&target_kernal[kernal_size[filter_scale]];
> > + /* third convolution */
> > for (x = 0; x < width; x++) {
> > for (y = 0; y < height; y++) {
> > -
> > target_image=&image[(width*height)-(y*width+x+kernal_size[filter_scale]/2)];
> > - for (k=0; k < kernal_size[filter_scale]; k++) {
> > - if ((x+kernal_size[filter_scale]/2 >= k) &&
> > (x+kernal_size[filter_scale]/2 < width+k)) {
> > + for (t_x = -kernal_size[filter_scale]/2; t_x <=
> > kernal_size[filter_scale]/2; t_x++) {
> > + if (((x - t_x) >= 0) && ((x - t_x) < width)) {
> > conv[y*width + x] +=
> > - target_kernal[k]*target_image[k];
> >
> > + target_kernal[t_x +
> > kernal_size[filter_scale]/2]*image[65536-(y*width + (x - t_x))];
> > }
> > }
> > }
> > }
> >
> > - /* fourth convolution */
> > target_kernal=&target_kernal[kernal_size[filter_scale]];
> > + /* fourth convolution */
> > for (x = 0; x < width; x++) {
> > for (y = 0; y < height; y++) {
> > for (t_y = -kernal_size[filter_scale]/2; t_y <=
> > kernal_size[filter_scale]/2; t_y++) {
>
> > _______________________________________________
> > help-GIFT mailing list
> > address@hidden
> > http://lists.gnu.org/mailman/listinfo/help-gift
70-ChangeLog
Description: Text document
70-FeatureExtraction_gabor.c_remove_t_x_and_intro_k.patch
Description: Text document