From: lycmit@x1sun6.ccl.itri.org.tw (Yin-Chih Lin)
Newsgroups: fj.mail-lists.parallel
Subject: How to parallelize?
Date: 12 Aug 92 12:21:40 GMT
Distribution: fj

Greetings:

I would like to apologize in advance, if the similar subject had been
discussed before.

Currently, I was asked for the possibility of using the idle CPU's times
of workstations to do the jobs for remote computers. The intention is
doing the work concurrently on many computers for obtaining the better
throughput rate and performance than the single one.

Somewhere in some textbooks or journals (I can't tell according my
hand-on info) adverted that the parallelism can be achieved in
different levels:
	
	o hardware (ex. VLIW, superscalar, multi-processors)

	o O.S. (ex. distributed OS, multi-threaded OS, some
	        specific MP-based commerical OS)

	o user (ex. Linda, Strand, PVM and other distributed
	        data structures or libraries)

The *hardware* level seems very obviously. You can explore the
parallelism by concate many processors/instructions to the machine
and get better performance. However, in most cases, you should 
spend additional costage for obtaining this parallelism ($30,0000
for one desktop parallel computer for instance).

And the *OS* level might be the parallelism approached from the
software aspect. The operating system kernels provide the 
facilities to parallelize the programs execution in user
transparent way. It can supports the parallelism to you without
extra hardware expansion. But replacing the current O.S. with the
brand new one, however, is not a trivial task for users or 
administors. It is true there are some micro-kernel based O.S. 
(such as Locus, V, Mach, Amoeba, Chorus, Plan 9) emerging from
diverse corners. I won't try to invoke any debate about these OSs,
the only fact I know is that such OSs won't be possible installed
in my units for the near feature. Cause, you could not make sure the
previous codes would still be executed correctly without 
recompilation or recoding.

The *user* level parallelism won't rely on the last two levels if 
such facilities are missing. Users only need to rewrite their
programs for integrating the parallelism functions into their codes
then recompile. It will be OK, if you could get the source code of
the programs. But for many programs, you have no way to obtain the
source codes of them for recodeing and recompiling.

So I wonder, does there have someone proposed any method to
parallelize the current task without buying the new hardware platforms, 
installing the new O.S. and recoding the programs. It might be a 
addle-header question or a silly one to ask.

I believe there is one article in IEEE Tran. of Computers (or Computer)
talked about using the CPU idle time of workstations to execute
the concurrent tasks. But I am not quite sure that such proposition 
won't need to recode the programs.

Please don't blame me for ignoring the importance in hardware, O.S. and
user level parallelisms. I am just highly interesting to figure out the
best ways to utilize my workstation clusters. They had once been the 
outstandings in performance (and also cost ;-), but seems decrepit
and would be sent to hell if I couldn't save them.

Please forward your opinions and comments to me directly, I appreciate
for any reply message casue it might just save my baby computers.

Regards,

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Yin-Chih Lin                   Industrial Technology Research Institute (ITRI)
Design Eng.                    Computer & Communication Research Labs.  (CCL)
lycmit@x1sun6.ccl.itri.org.tw  Microcomputer System Department X100
Tel: 886-35-917331             14 Bldg, 195 Chung Hsing Rd., Section 4
Fax: 886-35-917503             Chutung, Hsinchu 31015
                               Taiwan, R.O.C. 
Disclaimer: I only speak for myself.