We currently run on 32bit windows and 32/64but solaris with near future plans to run on 64bit windows. The product is for a specific client so we can assume 4gb or more of physical ram.
As for Matlab, the problem is that the library routines for embedding matlab spawn a separate process and use IPC to talk to it (COM under windows I believe) so data sent is copied to another address space.
COM!
Then the matlab COM server must be run inproc to be able share memory from the same address space. COM marshalling detects that and does nothing. Otherwise you'll loose. Looks at the various COM books which exist online.
"Inside OLE 2" by Craig Brockschmidt is a good tip:
http://msdn.microsoft.com/library/books/inole/S10AA.HTM
This has nothing to do with cygwin, normal microsoft windows API calls will succeed.
Again, we can assume sufficient RAM for a data set and even if a page is swapped out to disk, it should be data that's not actively processing so the impact on performance should be less than processing directly on disk. ------------------------------ Trevor R.H. Clarke [EMAIL PROTECTED] Ball Aerospace & Technologies Corp
-----Original Message-----
From: Dave Korn [mailto:[EMAIL PROTECTED] Sent: Wednesday, August 04, 2004 1:37 PM
To: [EMAIL PROTECTED]
Subject: RE: question about shared memory in the cygwin daemon
-----Original Message----- From: cygwin-owner On Behalf Of Clarke, Trevor Sent: 04 August 2004 17:54
I'm currently developing image processing software which will use matlab
as a "plugin" for interactive processing. The problem is, matlab, when
called from another program, spawns a separate matlab engine process.
The data we are working with can get very large (4gb+) so we can't pass
copies of it around. We are looking at using cygwin's shared memory
functionality to get around this on windows (NT derivatives only).
Your data won't even fit into a 32-bit address space, so I don't think shared memory is going to help you.
Even if you're using an x86-64 platform, you have to bear in mind that you've got a virtual memory system there. If your data set is 4Gb, and your system RAM is < 4Gb, then even mapping it into shared memory between processes will involve it going out to disk and back when the pagefile starts swapping.
Is there not a library version of matlab you can link to your application and call into from the same process space?
cheers, DaveK
-- Reini Urban http://xarch.tu-graz.ac.at/home/rurban/
-- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/