Data Tracing in GPH
Mon, 17 Jun 2002 02:13:41 +0100
Content-Type: text/plain; charset=US-ASCII
[Forwarded to GpH list]
About tracing and visualisation: You can produce per-PE activity
profiles that show what's going on on the different PEs (gr2pe).
Usually they show the load, as the number of threads in the
runnable queue on that PE. At the moment we don't have a more detailed
mechanism of showing the data distribution or the heap fragmentation.
There are indirect ways, such as producing a summary of the number
of GAs produced in the execution, but that info is a bit cryptic
and more for implementors rather than GPH programmers. For a
summary of available visualisation tools check the Gentle Intro to GPH
About controling distribution: The idea in GpH is that only partitioning
of the program into threads is explicit, but mapping to PEs and
scheduling of threads on PEs is implicit. Therefore, you don't have
constructs for direct placement. I have toyed with some constructs to
give more control on the data distribution, but none of these are
mature enough to make it into the main release. You can do some
data clustering on the language level, however, and our HLPP
paper discusses how:
Alternatively use GdH, which provides an explcit constuct for
placing a computation on a particular machine:
Hope that helps!
On Sun, 16 Jun 2002 11:25:31 -0700 (PDT)
Ma Changming <email@example.com> wrote:
> Hi there,
> Does anyone know how to trace the GPH program to see
> the data processed at specific processors?
> I'm using gum-4.06, PVM3, RedHat Linux6.2. When I
> execute the following QuickSort program, I want to
> make sure what happens with different CPUs, i.e., how
> the data are partitioned between processors? Is there
> any debugging tools to trace the data?
> Thanks in advance.
> Changming Ma
> PS: QuickSort
> module Main(main) where
> import System(getArgs)
> import Parallel
> forceList :: [a] -> ()
> forceList  = ()
> forceList (x:xs) = x `seq` forceList xs
> quicksortF  = 
> quicksortF [x] = [x]
> quicksortF (x:xs) =
> (forceList losort) `par`
> (forceList hisort) `par`
> losort ++ (x:hisort)
> losort = quicksortF [y|y <- xs, y < x]
> hisort = quicksortF [y|y <- xs, y >= x]
> args_to_IntList :: [String] -> [Int]
> args_to_IntList a = if length a < 1
> then error "Parallel Quick Sort: no enough
> args \n"
> else map read a
> main = getArgs >>= \ a ->
> l = args_to_IntList a
> putStr ("get " ++ (show (quicksortF l))++"\n")
> Do You Yahoo!?
> Yahoo! - Official partner of 2002 FIFA World Cup
> Haskell-Cafe mailing list
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.6 (GNU/Linux)
-----END PGP SIGNATURE-----