Date: Fri, 29 Mar 2024 07:06:44 -0500 (CDT)
Message-ID: <945290078.1165.1711714004174@wiki-n2.rice.edu>
Subject: Exported From Confluence
MIME-Version: 1.0
Content-Type: multipart/related;
boundary="----=_Part_1164_1951310478.1711714004155"
------=_Part_1164_1951310478.1711714004155
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
Content-Location: file:///C:/exported.html
Habanero-Java Library
Habanero-Java =
(HJ) is a pedagogic parallel programming model being developed at Rice Univ=
ersity. Habanero-Java library (HJ-lib) is the new library implementation of=
HJ that can be used with any standard Java 8 implementation. The library-b=
ased approach is attractive since it does not require modifying a compiler =
as with language-based approaches.
HJ integrates a wide range of parallel programming constructs (e.g=
., async tasks, futures, data-driven tasks, forall, barriers, phasers, tran=
sactions, actors) in a single programming model that enables unique combina=
tions of these constructs (e.g., nested combinations of task and actor para=
llelism). The orthogonal classes of parallel constructs enables progr=
ammers with a basic knowledge of Java to get started quickly with expressin=
g a wide range of parallel patterns. HJ is capable of expressing many diffe=
rent forms of parallel patterns including data parallelism, pipeline parall=
elism, stream parallelism, loop parallelism, and divide-and-conquer paralle=
lism.
HJ-lib is built using lambda expressions and can run on any Java 8 JVM. Older JVMs can be t=
argeted by relying on external bytecode transformations tools for compatibi=
lity. The HJ runtime is responsible for orchestrating the creation, executi=
on, and termination of HJ tasks, and features both work-sharing and work-st=
ealing schedulers. HJ is used at Rice University as an introductory paralle=
l programming language for second-year undergraduate students. A wide varie=
ty of benchmarks have been ported to HJ, including a full application that =
was originally written in Fortran 90. Being a pedagogic programming model, =
HJ-lib is also an attractive tool for educators with numerous educational r=
esources available from the sophomore-level COMP 322 course offered at Rice=
University.
Links to HJ Resources
Using Maven to run HJlib projects
Using IntelliJ to download =
and run an example HJlib project
Acknowledgment
This material is based upon work supported in part by the National Scien=
ce Foundation under Grant No. 1302570. Any opinions, findings and conclusio=
ns or recomendations expressed in this material are those of the author(s) =
and do not necessarily reflect the views of the National Science Foundation=
(NSF).
------=_Part_1164_1951310478.1711714004155
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
Content-Location: file:///C:/3fabac5433ac229ecb50e03ee4e55a09
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
REPEu0iPyNLIR4uNFksWd0bJR8VF1UdNRXtFl0VLl1gsWbPkRoxajCCmPRYfGxV7JHZyqffS3UuH
4+ziCuPuLjNclrPs2nK15anLz66QX8FZcSoeGx8d3xD/iRPCqeVMrvRfuXflBNeTu4f7kufGK+eN
8V34ZfyRBJeEsoTRRJfEXYljSa5JFUnjAk9BteB1sl/ygeSplJCUoykzqdGpzWmEtPi000IlYYqw
K10zPSe9L8M0ozBDuspp1e5VE6JA0ZFMKHNZZruYjv5M9UiMJJslg1kLs2qy3mdHZZ/KUcwR5vTk
muRuyx3J88n7fjVmNXd1Z752/ob8wTXuaw6thdauXNu5Tnddwbrh9b7rj20gbUjZ8MtGy41lG99u
it7UUaBRsL5gaLPv5sZCuUJR4b0tzlsObMVsFWzt3WazrWrblyJe0fViy+KK4k8l3JLr31l9V/nd
zPaE7b2l9qX7d+B2CHfc3em681iZYlle2dCu4F2t5czyovK3u1fsvlZhW3FgD2mPZI+0MqiyvUqv
akfVp+qk6oEaj5rmvep7t+2d2sfb17/fbX/TAY0DxQc+HhQcvH/I91BrrUFtxWHc4azDz+ui6rq/
Z39ff0TtSPGRz0eFR6XHwo911TvU1zeoN5Q2wo2SxrHjccdv/eD1Q3sTq+lQM6O5+AQ4ITnx4sf4
H++eDDzZeYp9qukn/Z/2ttBailqh1tzWibakNml7THvf6YDTnR3OHS0/m/989Iz2mZqzymdLz5HO
FZybOZ93fvJCxoXxi4kXhzpXdD66tOTSna6wrt7LgZevXvG5cqnbvfv8VZerZ645XTt9nX297Yb9
jdYeu56WX+x+aem172296XCz/ZbjrY6+BX3n+l37L972un3ljv+dGwOLBvruLr57/17cPel93v3R
B6kPXj/Mejj9aP1j7OOiJwpPKp6qP6391fjXZqm99Oyg12DPs4hnj4a4Qy//lfmvT8MFz6nPK0a0
RupHrUfPjPmM3Xqx9MXwy4yX0+OFvyn+tveV0auffnf7vWdiycTwa9HrmT9K3qi+OfrW9m3nZOjk
03dp76anit6rvj/2gf2h+2P0x5Hp7E/4T5WfjT93fAn88ngmbWbm3/eE8/syOll+AAAACXBIWXMA
AAsTAAALEwEAmpwYAAACN2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxu
czp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJE
RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMi
PgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0
aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx0aWZmOlhSZXNv
bHV0aW9uPjcyPC90aWZmOlhSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpZUmVzb2x1dGlvbj43
MjwvdGlmZjpZUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6Q29tcHJlc3Npb24+MTwvdGlmZjpD
b21wcmVzc2lvbj4KICAgICAgICAgPHRpZmY6T3JpZW50YXRpb24+MTwvdGlmZjpPcmllbnRhdGlv
bj4KICAgICAgICAgPHRpZmY6UGhvdG9tZXRyaWNJbnRlcnByZXRhdGlvbj4yPC90aWZmOlBob3Rv
bWV0cmljSW50ZXJwcmV0YXRpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpS
REY+CjwveDp4bXBtZXRhPgqIYvkNAAAQb0lEQVRoBbVaC3RV1Znej/O6jySGkIggvqECKlQpFBG9
qVJFqMyMXvDJKFqodIlatS5drRzW6linFUqlFWUQcbQPctVZ1SqiItdaRCsurCOpVAYRYhQS4Ca5
r/PYe8+3T7g0WsQEcGfd87jn7H9/+9////3/v2/4pJtusoedO+a4hm+e2lA1PK7aNraUyOeb67JU
ivBt2W3y84++6nt63V131e+lpcl7g73jy34wyCCCWEawJZ/vWNeV8za+v/LPWwCiG5hLWHpTmmYy
GfFVA6vIp0Qp6s6fT/9CdjUEgTFRiPIN3JLnekGJ5HK5rQ5j66qYeub4WMPq5T9b3qU7ptyUkXWz
YUXIV3mmBxI+/T738s7C7vmBKg4Nwg5iCCGCQLxKlXiosfYbT7muK0k6zcmIjCLuPu0eSNAR+I7v
k0ExKCOpFOwsKze9nH3vvH+5/IWgs/w1n5BThCWIsOhJJS/8ty3BjiFDzj62eduy59tIlqg0gDY3
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
------=_Part_1164_1951310478.1711714004155--