Jim Kuzdrall <gnh...@intrel.com> wrote on 10/13/2009 02:04:36 PM:

> On Tuesday 13 October 2009 10:54, bruce.lab...@autoliv.com wrote:
> > gnhlug-discuss-boun...@mail.gnhlug.org wrote on 10/13/2009 08:13:12 
> AM:
> > > Greetings Bruce,
> > >
> > >     Still thinking about your problem...
> >
> > Well, thank you for that!
> >
> 
> > Data is converted to string prior to transmit.  This is an area for
> > improvement.  However, the timing numbers I've indicated 'should' be
> > just the transmission of the string buffer.
> 
>     If I can remember my C programming, you do something non-portable 
> like:
> ...
> /* number of pairs (initialize to the correct number) */
> int npair=128;
> /* the double does a boundary alignment */
> union {
>     double align;
>     float  ansf[npair][2];
>     char   ansc[npair*2*4]
>     } answer;
> 
> /* check that they are the same size (this does not guarantee
>    that they are aligned right; check the received data for that) */
> printf("float array size is %d and text array size is %d\n",
>         sizeof(answer.ansf), sizeof(answer.ansc));
> 
> cnt= fwrite( (char *)&answer.ansc, 4*2, npair, &output_dev);
> printf("The count was %d and it should be %d",cnt,npair);
> exit(0);
> ...
> 

The transfer is complete, the numbers do get across, and they are even 
correct.  I separated the problem into two parts - packing into strings, 
and sending the string over the socket.  The packing works well enough for 
now.  It is just the network transfer rate that isn't fast enough. 

>     Wow, C seems so unfamiliar after a few years away from it.  I hope 
> that gives you the gist of what I am suggesting to try.  There may be a 
> better choice of functions, but I thought a for-loop on fputc() would 
> cost a lot more cpu cycles.
> 

fputc is REALLY slow.  fwrite using big blocks is MUCH faster, orders of 
magnitude faster.

>     To get this to work, you may have to get the FFT program and the I/O 

> program to be separate processes - pipe or socket or something does 
> that.
> 
>     Maybe somebody more experience will make a suggestion.
> 
>     I got the speed increase more optimistic than justified, but you can 

> get about 4x by adding another data link.  Send the odd chunks to one 
> and the even chunks to the other.
> 

I have been toying with sending the real and imaginary parts on separate 
sockets in their own threads.  That is what psockets was supposed to do. 
(Striped network transfer).  It still bugs me that the utilization of the 
network is so bad.  A striped transfer, even if it is just two stripes, 
will be better than just one socket.  That is if I can get it to work... 
If I were to go to multiple sockets, I might as well use someone else's 
library, after all, why reinvent the wheel.

I'm still think it is a misconfigured/mistuned system.  I hope it is just 
a mismatch of parameters between the two computers.  Still, the most 
likely answer is that the problem lies in my code.  Time to dive in 
again...

Thanks!
Bruce


******************************
Neither the footer nor anything else in this E-mail is intended to or 
constitutes an <br>electronic signature and/or legally binding agreement in the 
absence of an <br>express statement or Autoliv policy and/or procedure to the 
contrary.<br>This E-mail and any attachments hereto are Autoliv property and 
may contain legally <br>privileged, confidential and/or proprietary 
information.<br>The recipient of this E-mail is prohibited from distributing, 
copying, forwarding or in any way <br>disseminating any material contained 
within this E-mail without prior written <br>permission from the author. If you 
receive this E-mail in error, please <br>immediately notify the author and 
delete this E-mail.  Autoliv disclaims all <br>responsibility and liability for 
the consequences of any person who fails to <br>abide by the terms herein. <br>
******************************

_______________________________________________
gnhlug-discuss mailing list
gnhlug-discuss@mail.gnhlug.org
http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/

Reply via email to