Please send me code. I wonder if it is purely a timing issue and
has something to do with a case when a RT thread runs out of time
while using FP. This would be easy to check. In fact, you could
try the following
rtl_no_interrupts(x)
while(1){
do floating point
rtl_sched(); /* call the scheduler, don't wait for resched */
}
On Tue, Apr 11, 2000 at 01:53:50PM -0400, [EMAIL PROTECTED] wrote:
> I'd like to second David Christini's problem.
>
> Like Pavel, I have various RT applications that use doubles. (I never use
> floats to avoid unnecessary bugs.) I use several math functions,
> specifically: exp(), sin(), cos() and sqrt();
>
> Like David however, none of my systems are particularly stable. As
> Pavel suggested I think the instability is coming from memory related
> issues, but not the user/kernel type.
>
> All of my modules are stable if I use a 'small' number of doubles,
> and a 'small' number of operations on those doubles (per period in a
> periodic rt thread.) I observe two possibly related phenomena--
>
> 1) as I increase the number of double operations in a cycle, the cpu will
> eventually lock up. This doesn't concern me, perhaps I'm asking
> too much of it --
> It works with something like 100 double fxns
> {ie. exp(),sin(),etc.} & 1000 double operations {ie +-*/}
> every 100 microseconds, on a 450MHz PIII.
>
> 2) as I increase the number of doubles I use, the system will eventually
> spontaneously reboot itself. This phenomenon is unpredictable.
> ~100 double variables -> works every time.
> 'every time' = hundreds of trials for up to
> millions of periods per trial.
> ~1000 double variables -> reboots every time.
> ~100->1000 double variables -> works/reboots randomly.
>
> Obviously I observe this when using arrays of doubles, and the
> numbers I listed above are highly dependent on the number of
> operations I perform in a given period. But even if I perform
> almost no operations in a loop (say, only one typecast), an array
> of 2000 doubles in my module will reboot the system upon
> insertion. Understand that for a given operation number, the
> number of stable double variables is a constant.
>
> Two examples:
> 1) 1 array of 100 doubles & 10 other doubles
> ~400 operations & 99 functions
> -works fine every time
> 1 array of 105 doubles & 10 other doubles
> ~400 operations & 99 functions (extra doubles aren't used)
> - reboots every time
>
> 2) 4 arrays of 10 doubles & 30 other doubles
> ~150 operations & 78 functions
> - works fine every time
> 4 arrays of 11 doubles & 30 other doubles
> ~150 operations & 78 functions (extra doubles aren't used)
> - reboots every time
>
> If I use 'int' in place of 'double', (of course I can't use the math
> fxns), but I find arrays of 100,000 members reliable, without any crash
> or reboot. (I assume I could go to millions of members before running into
> a problem.)
>
> After extreme frustration, I gave up pressing this issue about a month
> ago, and just restricted myself to small double arrays. But I suspect that
> my issues are related to David Christini's, so I thought I'd bring it up.
>
> If anyone is interested in examining my problem,
> let me know and I'll send out the code...
>
> Chuck
>
> On Tue, 11 Apr 2000, Pavel Andris wrote:
> > David,
> > I use kernel 2.2.13, RTL 2.0. My RT application uses double variables
> > and operations heavily including sin(), cos(), sqrt(), atan2(). I also
> > use shared memory (Tomek Motylewski's mbuff). I don't remember any
> > crash caused by floating point operations. I'd expect your trouble is
> > caused by something else (float/double confusion?, kernel/user memory
> > context trouble?).
> > Regards, Pavel Andris
>
> -- [rtl] ---
> To unsubscribe:
> echo "unsubscribe rtl" | mail [EMAIL PROTECTED] OR
> echo "unsubscribe rtl <Your_email>" | mail [EMAIL PROTECTED]
> ---
> For more information on Real-Time Linux see:
> http://www.rtlinux.org/rtlinux/
--
---------------------------------------------------------
Victor Yodaiken
FSMLabs: www.fsmlabs.com www.rtlinux.com
FSMLabs is a servicemark and a service of
VJY Associates L.L.C, New Mexico.
-- [rtl] ---
To unsubscribe:
echo "unsubscribe rtl" | mail [EMAIL PROTECTED] OR
echo "unsubscribe rtl <Your_email>" | mail [EMAIL PROTECTED]
---
For more information on Real-Time Linux see:
http://www.rtlinux.org/rtlinux/