Return to BSD News archive
Received: by minnie.vk1xwt.ampr.org with NNTP id AA6231 ; Wed, 06 Jan 93 05:16:02 EST Xref: sserve comp.unix.bsd:9722 comp.sys.sgi:25981 comp.sys.sgi.apps:37 Path: sserve!manuel.anu.edu.au!munnari.oz.au!spool.mu.edu!olivea!sgigate!sgi!rhyolite!vjs From: vjs@rhyolite.wpd.sgi.com (Vernon Schryver) Newsgroups: comp.unix.bsd,comp.sys.sgi,comp.sys.sgi.apps Subject: Re: Problem to transfer large data via socket communication - Need Help Message-ID: <ukfuhr4@rhyolite.wpd.sgi.com> Date: 8 Jan 93 17:25:55 GMT References: <1993Jan8.071612.13716@news.uni-stuttgart.de> <106513@bu.edu> Organization: Silicon Graphics, Inc. Mountain View, CA Lines: 40 In article <106513@bu.edu>, tasos@cs.bu.edu (Anastasios Kotsikonas) writes: >... > $> But now we've problems sending/receiving large data for > $> example 50*50*50 matrix of floats or larger. Is there any > $> transfer-bufferlimitation by using streamsockets, that we can > $> manipulate ? Exists there no more comfortable possibility to > $> transfer the data ? Please mail me your informations > > Depending on the system the limits may vary. For example, if you are on > a CRAY there are routines to call which pack and unpack floats before > sending them across. AIX poses a limit of 32K minus a few bytes per read. > Most UNIX systems fail when sending over 50,000 bytes roughly (this is the > limit on most UNIX systems). So, you should set the buffer size for the > socket on both ends. There are limits to the size of the buffers that can be read or written over sockets in the Silicon Graphics operating system, but 50K is not close to the limits. I have not heard of a system that would be limited to only 50KB; which are they? 125000 floats or doubles is only 1MByte, and should work. Depending on the speed of the network, it may take more time to pack up 125,000 numbers that it would save to send them over the wire. Even on an ethernet, a pair of modern workstations should be able to move the entire array in less than 2 seconds. They could probably move the array over an FDDI ring in less than 0.2 seconds. 2 seconds is equivalent to only a modest number of cycles per floating point number, and so is probably much less than the time spent by the application doing its real work. I would just use write() and read() and attempt optimizations only when they are necessary. By the way, I ignored the "Followup-To: comp.unix.bsd" line because the original author seemed to be asking about the Silicon Graphics version of UNIX. Vernon Schryver, vjs@sgi.com