[parsec-users] canneal on sparc?

Christian Bienia cbienia at CS.Princeton.EDU
Sun Jun 29 12:46:43 EDT 2008


Hi Javier,

My suggestion was more or less just an 'educated guess'. If that didn't
solve it then we should check where it exactly the unaligned access happens.
Your debugger should tell you that if you compile without optimizations and
with debugging symbols. Once the location is known it shouldn't be hard to
fix it.

- Chris


-----Original Message-----
From: parsec-users-bounces at lists.cs.princeton.edu
[mailto:parsec-users-bounces at lists.cs.princeton.edu] On Behalf Of Javier
Lira
Sent: Wednesday, June 25, 2008 3:27 AM
To: Huan Fang
Cc: PARSEC Users
Subject: Re: [parsec-users] canneal on sparc?

Hi,

I was working on the solution that Chris provide us on this topic, but I
was unable to solve this issue. I would appreciate if someone can spend
some time on supporting Parsec workloads on Solaris/Sparc because AFAIK
only 7 of them are able to compile and execute.

Many thanks,

Javier

On Tue, 2008-06-24 at 16:56 +0000, Huan Fang wrote:
> Hi Javier,
> 
> Have you figured out how to fix the bugs for canneal on SPARC? I really 
> appreciate if you can give me some help on that. Thank you very much!
> 
> Best Regards,
> Huan
> > Hi Javier,
> >
> > I believe the program breaks on Sparc because the AtomicPtr class uses
> > unaligned accesses. AtomicPtr assumes to swap 32-bit or 64-bit pointers,
if
> > the wrong type is used it can easily cause an unaligned access. Have a
look
> > at the definition of ATOMIC_TYPE in AtomicPtr.h, the compiler might
simply
> > use the wrong type here:
> >
> > //determine whether machine uses 32-bit or 64-bit pointers and set
pointer
> > type
> > #if defined(atomic_store_rel_64) || defined(atomic_set_64)
> >     typedef long unsigned int ATOMIC_TYPE;
> > #else
> >     typedef unsigned int ATOMIC_TYPE;
> > #endif //atomic_store_rel_64
> >
> >
> > The AtomicPtr class casts all pointers and values to ATOMIC_TYPE so the
> > atomic instructions get the type they expect. On x86 CPUs that's
unsigned
> > int (i386) and long unsigned int (amd64) respectively. Make sure the
pointer
> > width (32-bit vs. 64-bit) is detected correctly and the same type is
used as
> > in the atomic instruction header files for Sparc and the program should
work
> > fine.
> >
> > - Chris
> >
> >
> >
> > -----Original Message-----
> > From: parsec-users-bounces at lists.cs.princeton.edu
> > [mailto:parsec-users-bounces at lists.cs.princeton.edu] On Behalf Of Javier
> > Lira
> > Sent: Wednesday, May 28, 2008 11:37 AM
> > To: PARSEC Users
> > Subject: Re: [parsec-users] canneal on sparc?
> >
> > Hi,
> >
> > I am trying to execute canneal in SPARC, but I face the same result as
> > Huan (bus error). I has been investigating on it, and this exceptions
> > appears when AtomicPtr.Get() calls the function atomic_load_acq_ptr
> > which calls to some SPARC dependent methods.
> >
> > My guessing is that the atomic.h, cpufunc.h and asi.h should work
> > properly because as I checked, they are the same files (with some
> > shrink) as FreeBSD project.
> >
> > So, I am going deeply in the issue, but it still does not work... Could
> > you help me on that?
> >
> > Many thanks in advance,
> >
> > Javier
> >
> > On Thu, 2008-05-22 at 13:09 -0400, Christian Bienia wrote:
> >   
> >> Huan,
> >>
> >> Canneal should run without problems on sparc if that error gets fixed.
I
> >> believe it's caused because the atomic instructions which swap two
netlist
> >> elements assume a different word size than used for the netlist
elements.
> >> You can change that e.g. in the AtomicPtr class.
> >>
> >> - Chris
> >>
> >>
> >> -----Original Message-----
> >> From: parsec-users-bounces at lists.cs.princeton.edu
> >> [mailto:parsec-users-bounces at lists.cs.princeton.edu] On Behalf Of Huan
> >>     
> > Fang
> >   
> >> Sent: Thursday, May 22, 2008 9:46 AM
> >> To: PARSEC Users
> >> Subject: [parsec-users] canneal on sparc?
> >>
> >> Hello,
> >>
> >> I am wondering if canneal supports Sparc platform because there is 
> >> always some bus error as following:
> >>
> >> [HOOKS] PARSEC Hooks Version 1.0
> >> Threadcount: 1
> >> 5 moves per thread
> >> Start temperature: 100
> >> netlist filename: 10.nets
> >> ./parsecmgmt: line 864:  2334 Bus Error               (core dumped)
> >>
> >>     
> >
/home/parsec-1.0/bin/../pkgs/kernels/canneal/inst/sparc-solaris.gcc-hooks/bi
> >   
> >> n/canneal 
> >> 1 5 100 10.nets
> >>
> >> Has anyone tested that?
> >>
> >> /Huan
> >>
> >> _______________________________________________
> >> parsec-users mailing list
> >> parsec-users at lists.cs.princeton.edu
> >> https://lists.cs.princeton.edu/mailman/listinfo/parsec-users
> >>
> >> _______________________________________________
> >> parsec-users mailing list
> >> parsec-users at lists.cs.princeton.edu
> >> https://lists.cs.princeton.edu/mailman/listinfo/parsec-users
> >>     
> >
> > _______________________________________________
> > parsec-users mailing list
> > parsec-users at lists.cs.princeton.edu
> > https://lists.cs.princeton.edu/mailman/listinfo/parsec-users
> >
> > _______________________________________________
> > parsec-users mailing list
> > parsec-users at lists.cs.princeton.edu
> > https://lists.cs.princeton.edu/mailman/listinfo/parsec-users
> >   

_______________________________________________
parsec-users mailing list
parsec-users at lists.cs.princeton.edu
https://lists.cs.princeton.edu/mailman/listinfo/parsec-users



More information about the parsec-users mailing list