On Mon, 2006-08-28 at 12:52 -0400, Peter Tanski wrote:

I'm sending this part to language list, and also CC
to Markus Elfring who I know is interested in such things.

> > All languages with dlopen() can do this already, although
> > this method of gaining a partial evaluator is very crude.
> > [But it is what Felix will use]
> 
> dlopen() can be tricky, can't it?

Oh, it's a horrible technique. I know Erick is an LLVM fan ..
this might be better. Though .. I'm seriously thinking of
two other alternatives:

(a) write my own assembler for a high level assembler language
(b) A VM such as Neko

Neko is cool, the major downside is it uses Boehm GC,
which is a bit fragile and insists on visible pointers,
some very fast techniques are going to break that,
eg page tables/tries can't be used because they chop
up machine addresses into streams. Its also unlikely
they'd work with overlays or other techniques using
mmap to manage memory manually. And shared memory
would be an issue (process wide).

ALso the 'world stop' is a killer for some kinds
of applications.

> >> parallelise Fortran code (using OpenMP)
> >
> > ah .. looking at OpenMP for Felix implementation ..
> 
> Careful with OpenMP: it is not supported everywhere yet, since it  
> requires significant support from the compiler and linker (unless you  
> build a separate parser).  

noted, but that's not what I meant. Felix is a compiler..
I meant supporting it *in Felix*.

OpenMP specifies various constructions for C++.

My thought is to provide matching Felix constructions
with similar semantics.

> Apple-gcc-4.0.1 does not support OpenMP  
> although IBM's XLC compiler for the ppc did; gcc-4.2.0 does, which is  
> the basis for my version of gfortran (and its OpenMP support), but  
> that doesn't mean OpenMP will be available on other systems.  In any  
> case, of all the messaging protocols OpenMP is the easiest to use  

well yes .. since it isn't a messaging protocol, that part is easy :)
It provides hints about how to distribute work between processors.

I have yet to check, but completely ignoring these hints
appears to be a valid implementation. In C++ the hints
are all pragmas, and the parallelised code can be executed
'as written' sequentially with the same semantics.

> since it doesn't require you to have a messaging-system daemon  
> running, as PVM and MPI do. 

I have yet to look at PVM and MPI. My understanding is
OpenMP is for shared memory multi-processor, that is,
low level parallelisation by threading with shared memory.

Whereas PVM and MPI are for high level network wide job sharing
between processes by message passing.

No reason you can't do both: they're two different levels of
granularity.

>  Berkeley UPC doesn't require a messaging- 
> system daemon, like OpenMP, but you would have to work with it like  
> you currently do with pthreads (i.e., no pragmas).

-- 
John Skaller <skaller at users dot sf dot net>
Felix, successor to C++: http://felix.sf.net


-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Felix-language mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/felix-language

Reply via email to