Re: HPC in scala ..

2011-01-18 Thread Konrad Hinsen

On 18 Jan 2011, at 07:37, Tim Daly wrote:


I have just finished
Language Virtualization for Heterogeneous Parallel Computing
http://infoscience.epfl.ch/record/148814/files/paper.pdf


Me too!


Clojure clearly fulfills all of the goals of a virtualization language
because it is a Lisp. Lisp systems are clearly capable of building
a DSL that is fully expressive of all of the power of Lisp. By using
the macro facility the DSL syntax can be matched to the problem
domain.


The authors do mention Lisp, saying that it satisfies most of their  
criteria except for safety, because a DSL implemented through Lisp  
macros always has access to all of Lisp, including the DSL's own  
implementation.


I suppose that for most Lispers, Clojure's namespaces are a sufficient  
answer. Just make a namespace for your DSL where you put all the stuff  
that is part of it. Sure, you can always get at the rest of Clojure by  
importing other namespaces and/or using qualified symbols. But you  
would do that only intentionally, not by accident.


People coming from statically-typed languages typically require more  
law enforcement and would probably not be happy with the namespace  
approach. More protection would require a DSL-specific reader that  
checks for namespace-qualified symbols and disallows arbitrary  
imports. But even that would probably be less work to implement than  
what it takes to make Scala virtualizable.


However, I do believe that Scala has a better chance of being accepted  
as a DSL hosting language for mass-market parallel computing,  
because it has familiar syntax.


So I think that Clojure is an excellent virtualization language for  
DSLs.


I certainly agree with that.

Konrad.

--
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en


Re: HPC in scala ..

2011-01-18 Thread Tim Daly



On 18 Jan 2011, at 07:37, Tim Daly wrote:


I have just finished
Language Virtualization for Heterogeneous Parallel Computing
http://infoscience.epfl.ch/record/148814/files/paper.pdf


Me too!


Clojure clearly fulfills all of the goals of a virtualization language
because it is a Lisp. Lisp systems are clearly capable of building
a DSL that is fully expressive of all of the power of Lisp. By using
the macro facility the DSL syntax can be matched to the problem
domain.


The authors do mention Lisp, saying that it satisfies most of their 
criteria except for safety, because a DSL implemented through Lisp 
macros always has access to all of Lisp, including the DSL's own 
implementation.


I suppose that for most Lispers, Clojure's namespaces are a sufficient 
answer. Just make a namespace for your DSL where you put all the stuff 
that is part of it. Sure, you can always get at the rest of Clojure by 
importing other namespaces and/or using qualified symbols. But you 
would do that only intentionally, not by accident.

Well you could use scalac and dynamically load the class.
Or, since it is Java, just create a classloader and load anything.
Even a strong type system can be overcome.

Safety, in my interpretation, means not using anything but the
domain-specific language for portability. That won't stop people
from escaping to the VL but that makes their code non-portable.
C, for example, runs everywhere but compiles nowhere due to
the machine-specific hacking.


People coming from statically-typed languages typically require more 
law enforcement and would probably not be happy with the namespace 
approach. More protection would require a DSL-specific reader that 
checks for namespace-qualified symbols and disallows arbitrary 
imports. But even that would probably be less work to implement than 
what it takes to make Scala virtualizable.


However, I do believe that Scala has a better chance of being accepted 
as a DSL hosting language for mass-market parallel computing, 
because it has familiar syntax.

Sigh. I believe you are right.


So I think that Clojure is an excellent virtualization language for 
DSLs.


I certainly agree with that.

Konrad.

The real question is, given that Europe is willing to fund the DSL
approach to popular computing, what can we learn from this
research trend that will influence Clojure?

I do think that the idea of defining problems in terms of a DSL is
certainly an interesting design approach. It might be useful to have
some Clojure examples of such designs so we can ensure that
DSLs are easily created. One really useful example might be to
create Scala in macros :-)

Tim Daly

--
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en


Re: HPC in scala ..

2011-01-18 Thread cej38
I think the clojure community should be seeking the type of funding to
make it the goto language for HPC.  As a community we definitely have
the brains to make it happen.

While I am not enough of a computer scientist to be able to contribute
to the development, I am willing to help write proposals for funding.



Chad Junkermeier, Ph.D.

-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en


Re: HPC in scala ..

2011-01-18 Thread Konrad Hinsen
On 18 Jan, 2011, at 17:37 , cej38 wrote:

 I think the clojure community should be seeking the type of funding to
 make it the goto language for HPC.  As a community we definitely have
 the brains to make it happen.

The brains, yes, but not the academic infrastructure. Scala is based at EPFL, 
and the work on parallel programming is done in collaboration with Stanford. 
That makes all of a difference when applying for funding in the academic world, 
such as the ERC grant that the Scala guys got.

Just out of curiosity: is there anyone else on this list who has an affiliation 
with an academic institution? Perhaps we could get together and see if we can 
apply for an interesting grant for some Clojure-related work.

Konrad.


-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en


Re: HPC in scala ..

2011-01-18 Thread Konrad Hinsen
On 18 Jan, 2011, at 15:34 , Tim Daly wrote:

 I suppose that for most Lispers, Clojure's namespaces are a sufficient 
 answer. Just make a namespace for your DSL where you put all the stuff that 
 is part of it. Sure, you can always get at the rest of Clojure by importing 
 other namespaces and/or using qualified symbols. But you would do that only 
 intentionally, not by accident.
 
 Well you could use scalac and dynamically load the class.
 Or, since it is Java, just create a classloader and load anything.

My understanding of the article is that the DSLs are compiled to something that 
may or may not be JVM bytecode (one example compiles to C++) and that the DSL 
code doesn't know that its compiler is written in Scala. A programmer who 
does know may resort to tricks such as you describe, but it is a lot 
straightforward than accessing clojure.core in Clojure.

 Safety, in my interpretation, means not using anything but the
 domain-specific language for portability. That won't stop people

Personally I fully agree. I just wonder if everyone else does.

 I do think that the idea of defining problems in terms of a DSL is
 certainly an interesting design approach. It might be useful to have
 some Clojure examples of such designs so we can ensure that
 DSLs are easily created. One really useful example might be to
 create Scala in macros :-)

I'd go for Fortran ;-)

Konrad.


-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en


Re: HPC in scala ..

2011-01-18 Thread Tim Daly



On 18 Jan, 2011, at 17:37 , cej38 wrote:


I think the clojure community should be seeking the type of funding to
make it the goto language for HPC.  As a community we definitely have
the brains to make it happen.

The brains, yes, but not the academic infrastructure. Scala is based at EPFL, 
and the work on parallel programming is done in collaboration with Stanford. 
That makes all of a difference when applying for funding in the academic world, 
such as the ERC grant that the Scala guys got.

Just out of curiosity: is there anyone else on this list who has an affiliation 
with an academic institution? Perhaps we could get together and see if we can 
apply for an interesting grant for some Clojure-related work.

Konrad.



In theory I am affiliated with Carnegie-Mellon University.

Tim Daly

--
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en


Re: HPC in scala ..

2011-01-18 Thread cej38
I am currently at the Naval Research Laboratory, Washington DC.

Chad



On Jan 18, 11:59 am, Konrad Hinsen konrad.hin...@fastmail.net wrote:
 On 18 Jan, 2011, at 17:37 , cej38 wrote:

  I think the clojure community should be seeking the type of funding to
  make it the goto language for HPC.  As a community we definitely have
  the brains to make it happen.

 The brains, yes, but not the academic infrastructure. Scala is based at EPFL, 
 and the work on parallel programming is done in collaboration with Stanford. 
 That makes all of a difference when applying for funding in the academic 
 world, such as the ERC grant that the Scala guys got.

 Just out of curiosity: is there anyone else on this list who has an 
 affiliation with an academic institution? Perhaps we could get together and 
 see if we can apply for an interesting grant for some Clojure-related work.

 Konrad.

-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en


Re: HPC in scala ..

2011-01-18 Thread Tim Daly





On 18 Jan, 2011, at 17:37 , cej38 wrote:


I think the clojure community should be seeking the type of funding to
make it the goto language for HPC.  As a community we definitely have
the brains to make it happen.
The brains, yes, but not the academic infrastructure. Scala is based 
at EPFL, and the work on parallel programming is done in 
collaboration with Stanford. That makes all of a difference when 
applying for funding in the academic world, such as the ERC grant 
that the Scala guys got.


Just out of curiosity: is there anyone else on this list who has an 
affiliation with an academic institution? Perhaps we could get 
together and see if we can apply for an interesting grant for some 
Clojure-related work.


Konrad.



In theory I am affiliated with Carnegie-Mellon University.

Tim Daly


This is too much of a coincidence minutes after I hit enter to send
this note I was informed that our project was cancelled and everyone
in the project is being terminated. So, ummm, it appears that I will not
have any CMU connection every so shortly. Sorry about that.

Tim Daly

--
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en


Re: HPC in scala ..

2011-01-18 Thread Myriam Abramson

Hi Chad!

Where are you at NRL? I'm also working there. I was dreaming of having 
a clojure users group there. 


-- 
   myriam
cej38 junkerme...@gmail.com writes:

 I am currently at the Naval Research Laboratory, Washington DC.

 Chad



 On Jan 18, 11:59 am, Konrad Hinsen konrad.hin...@fastmail.net wrote:
 On 18 Jan, 2011, at 17:37 , cej38 wrote:

  I think the clojure community should be seeking the type of funding to
  make it the goto language for HPC.  As a community we definitely have
  the brains to make it happen.

 The brains, yes, but not the academic infrastructure. Scala is based at 
 EPFL, and the work on parallel programming is done in collaboration with 
 Stanford. That makes all of a difference when applying for funding in the 
 academic world, such as the ERC grant that the Scala guys got.

 Just out of curiosity: is there anyone else on this list who has an 
 affiliation with an academic institution? Perhaps we could get together and 
 see if we can apply for an interesting grant for some Clojure-related work.

 Konrad.

From the cat's little instruction handbook:

Learn to appreciate fine books -- especially when somebody else is
reading them.

-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en


HPC in scala ..

2011-01-17 Thread Sunil S Nandihalli
Hello Everybody,

not directly related to clojure .. but it is interesting to know that scala
people got a huge funding to further the state of the art in HPC...

http://www.scala-lang.org/node/8579

Sunil.

-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Re: HPC in scala ..

2011-01-17 Thread Tim Daly



Hello Everybody,

not directly related to clojure .. but it is interesting to know that 
scala people got a huge funding to further the state of the art in HPC...


http://www.scala-lang.org/node/8579

Sunil.

--
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient 
with your first post.

To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Very interesting. I wonder if Clojure can be one of the polymorphic targets.
Certainly the Clojure macro facility can lift raw Clojure toward the DSL.

Sigh. Yet more papers to read. :-)

Tim Daly

--
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en


Re: HPC in scala ..

2011-01-17 Thread Tim Daly



Hello Everybody,

not directly related to clojure .. but it is interesting to know that 
scala people got a huge funding to further the state of the art in HPC...


http://www.scala-lang.org/node/8579

Sunil.

--
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient 
with your first post.

To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en


I have just finished
Language Virtualization for Heterogeneous Parallel Computing
http://infoscience.epfl.ch/record/148814/files/paper.pdf

The fundamental idea is defining a DSL (domain specific language)
to express some ideas. The DSL lives in a layer above the implementation
language but is embedded into the implementation language. That is,
the DSL does not have a separate compiler. DSLs define languages
that can support this as virtualization languages (VL). The VL needs
to provide four properties:
1) expressiveness -- everything should be expressible in the VL
2) performance -- the DSL should perform at VL speeds
3) safety -- the DSL should not reach into the underlying VL
4) effort -- the DSL should be easy to implement.

DSLs should be easy to combine because they both rest on the
same VL. Thus, a developer can provide capabilities of multiple
DSLs in the same image.

Clojure clearly fulfills all of the goals of a virtualization language
because it is a Lisp. Lisp systems are clearly capable of building
a DSL that is fully expressive of all of the power of Lisp. By using
the macro facility the DSL syntax can be matched to the problem
domain.

Macros allow the Clojure code to dynamically generate high performance
code that takes advantage of domain specific optimizations.

The macro language can be defined independent of the underlying
lisp so that there is no need to reach below the VL into Clojure.
This gives the DSL portability.

Macros are minimal effort. It is easy to develop macros and easy to
incrementally develop and enhance them to support any DSL features.

So I think that Clojure is an excellent virtualization language for DSLs.

While I do not know of any large Clojure applications yet, I know that
Axiom can be viewed as a mathematical domain specific language
in Common Lisp with facilities similar to Mathematica. ACL2 is a
logical domain specific language in Common Lisp with the ability
to prove lisp programs. Because they have a common VL they can
be combined into the same lisp image and ACL2 can be used to
prove Axiom mathematical statements. Lisp systems like Clojure
make this combination simple to implement.

I believe that, given enough time for Clojure to mature, we will see
large domain specific languages developed. These will be easy to
combine in a single Clojure image.

This paper provides a potential way to write parallel code for specific
domains. It attracted multi-million euro funding and could represent a
specific way forward for parallel Clojure programs.

Tim Daly

--
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en