Hi Magnus,

What inputs are you using for the benchmarks? I don't recall this happening, but they haven't been tested extensively, so it wouldn't be a huge surprise if this happened when you use different input sizes or numbers of processors. The Tru64 pthreads library (like the Linux pthreads library) has a "manager" thread in addition to the application threads. In order to keep the m5 support manageable, we don't create a manager thread (because then you'd have N+1 threads trying to run on only N CPUs). If the application ever gets into the situation where all the worker threads are waiting on the manager thread then you're hosed. We don't see that happen under SPLASH (since they're pretty simple in their use of threads) but it could be you've run into a situation where that's happening.

I don't believe it's possible to build a cross-compiler for Tru64 Alpha binaries; at least we've never been able to. Thus unless you have a native Tru64 Alpha machine you can't really generate new binaries for the existing SPLASH support.

Unfortunately supporting Linux pthreads in SE mode is even harder than under Tru64 (and the situation with Tru64 is that my goal was to support pthreads but I gave up partway through, which is why it's kind of a mess). This question comes up a lot, so if you're interested you can probably find more detailed answers in the mailing list archive.

Actually this question comes up often enough that I'm just going to create a wiki page for it:

http://www.m5sim.org/wiki/index.php/Splash_benchmarks

The bottom line is that you're probably best off running with Linux pthreads in FS mode.

Steve

Magnus Jahre wrote:

Hi,

I’m using the precompiled Splash benchmarks for M5 version 1.1 and the SE mode. The problem is that many of these benchmarks eventually deadlock. I have traced the problem to the synchronization functions in alpha_tru64_process.cc. Here, all processors end up calling the m5_cond_waitFunc() method and they all suspend. The really bad thing is that if you simulate for a fixed number of clock cycles, it is very difficult to see that something has gone wrong.

I’ve added the following code to the end of the m5_cond_waitFunc() method to detect the problem:

if(process->waitList.size() == process->numCpus()){
fatal("We have a deadlock");
}

Have you seen this problem before?

I think it might be a problem with the thread library. However, I have not been able to look into this as I do not have a working cross compiler. Have you been able to build a cross compiler for the Splash benchmarks and the thread libraries?

Regards,
Magnus Jahre

_______________________________________________
m5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/m5-users
_______________________________________________
m5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/m5-users

Reply via email to