1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201
|
<HTML>
<HEAD>
</HEAD>
<BODY>
<P>
Parallel Java (PJ) is
an API and middleware for parallel programming in 100% Java
on shared memory multiprocessor (SMP) parallel computers,
cluster parallel computers,
and hybrid SMP cluster parallel computers.
PJ was developed by Professor Alan Kaminsky
and his student Luke McOmber
in the Department of Computer Science
at the Rochester Institute of Technology.
<P>
I am happy to answer general questions about the Parallel Java Library,
receive bug reports,
and entertain requests for additional features.
Please contact me by email at
ark<FONT SIZE="1" COLOR="#FFFFFF">­</FONT>@<FONT SIZE="1" COLOR="#FFFFFF">­</FONT>cs.rit.edu.
I regret that I am unable to provide technical support,
specific installation instructions for your system,
or advice about configuring your parallel computer hardware.
<P>
<A HREF="#requirements">System Requirements</A>
<BR><A HREF="#installation">Installation</A>
<BR><A HREF="#usage">Usage</A>
<BR><A HREF="#license">License</A>
<BR><A HREF="#history">Revision History</A>
<P>
<HR>
<A NAME="requirements"><H2>System Requirements</H2></A>
<P>
PJ was developed using
Java Development Kit (JDK) 1.5.
When compiling and running PJ programs,
you must use JDK 1.5.
PJ uses features of the Java language and platform
introduced in JDK 1.5
and will not compile with earlier JDK versions.
<P>
PJ will work with JDK 1.6 and 1.7.
However, my tests have revealed serious performance issues
when a multithreaded PJ program
is run on an SMP parallel computer
with JDK 1.6 or 1.7.
Due to some as-yet-unfathomed behavior
of the JIT compiler
and/or the thread scheduler,
SMP parallel programs that experienced near-ideal speedups with JDK 1.5
experience far-less-than-ideal speedups with JDK 1.6 or 1.7
on the same machine.
For now I recommend using PJ with JDK 1.5.
<P>
<HR>
<A NAME="installation"><H2>Installation</H2></A>
<P>
There are two versions of the PJ distribution,
an executable distribution
and a source distribution.
<P>
<B>Executable distribution.</B>
The executable distribution comes in a Java Archive (JAR) file
named <TT>"pj<I>YYYYMMDD</I>.jar"</TT>,
where <I>YYYYMMDD</I> are the year, month, and date.
The executable distribution includes the PJ class files only.
To install the executable distribution,
simply store the JAR file somewhere.
You may wish to change the file name,
say to <TT>"pj.jar"</TT>.
<P>
<B>Source distribution.</B>
The source distribution comes in a Java Archive (JAR) file
named <TT>"pjsrc<I>YYYYMMDD</I>.jar"</TT>,
where <I>YYYYMMDD</I> are the year, month, and date.
The source distribution includes the PJ class files,
source files, and documentation files (Javadoc).
To install the source distribution,
just unpack the JAR file.
The source distribution expands into a subdirectory
named <TT>"pj"</TT>.
If you already have a subdirectory of that name
which you want to save,
be sure to unpack the JAR file
in some other directory.
Documentation is stored under the directory
<TT>"pj/doc"</TT>;
point your HTML browser to that directory.
Java source files and class files
are stored under the directory
<TT>"pj/lib"</TT>.
<P>
<B>Installation on a SMP computer.</B>
To run PJ programs on a shared memory multiprocessor (SMP) parallel computer,
no further installation is required.
<P>
<B>Installation on a cluster.</B>
To run PJ programs on a cluster parallel computer,
in addition to installing the PJ JAR file,
you must configure and run certain daemon processes
on the frontend and backend processors of the cluster.
For further information, see package
<A HREF="edu/rit/pj/cluster/package-summary.html">edu.rit.pj.cluster</A>.
<P>
<HR>
<A NAME="usage"><H2>Usage</H2></A>
<P>
<B>Executable distribution.</B>
When compiling and executing Java programs
that use PJ,
if you have installed the executable distribution,
you must set your classpath
to include the PJ JAR file.
Here is an example of a command for the <TT>bash</TT> shell
to set the classpath to the current directory
plus the PJ JAR file:
<P>
<TT>export CLASSPATH=.:/home/fac/ark/public_html/pj.jar</TT>
<P>
Here is an example of a command for the <TT>csh</TT> shell
to set the classpath to the current directory
plus the PJ JAR file:
<P>
<TT>setenv CLASSPATH .:/home/fac/ark/public_html/pj.jar</TT>
<P>
<B>Source distribution.</B>
When compiling and executing Java programs
that use PJ,
if you have installed the source distribution,
you must set your classpath
to include the top-level directory
under which PJ's Java class files are stored.
Here is an example of a command for the <TT>bash</TT> shell
to set the classpath to the current directory
plus the PJ directory:
<P>
<TT>export CLASSPATH=.:/home/fac/ark/public_html/pj/lib</TT>
<P>
Here is an example of a command for the <TT>csh</TT> shell
to set the classpath to the current directory
plus the PJ directory:
<P>
<TT>setenv CLASSPATH .:/home/fac/ark/public_html/pj/lib</TT>
<P>
<HR>
<A NAME="license"><H2>License</H2></A>
<P>
The documentation files, Java source files, and Java class files
in the Parallel Java Library
("PJ")
are copyright © 2005-2012
by Alan Kaminsky.
All rights reserved.
For further information, contact the author, Alan Kaminsky,
at ark<FONT SIZE="1" COLOR="\#FFFFFF">­</FONT>@<FONT SIZE="1" COLOR="\#FFFFFF">­</FONT>cs.rit.edu.
<P>
PJ is free software; you can redistribute it and/or modify it under the terms of
the GNU General Public License as published by the Free Software
Foundation; either version 3 of the License, or (at your option) any later
version.
<P>
PJ is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
details.
<P>
Linking this library statically or dynamically with other modules is making a
combined work based on this library. Thus, the terms and conditions of the GNU
General Public License cover the whole combination.
<P>
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent modules, and to
copy and distribute the resulting executable under terms of your choice,
provided that you also meet, for each linked independent module, the terms and
conditions of the license of that module. An independent module is a module
which is not derived from or based on this library. If you modify this library,
you may extend this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this exception statement
from your version.
<P>
A copy of the GNU General Public License
is provided in the file <A HREF="doc-files/gpl.txt"><TT>gpl.txt</TT></A>.
You may also obtain a copy of the GNU General Public License
on the World Wide Web at
<A HREF="http://www.gnu.org/licenses/gpl.html" TARGET="_top">http://www.gnu.org/licenses/gpl.html</A>.
<P>
<HR>
<A NAME="history"><H2>Revision History</H2></A>
<DL COMPACT>
<P><DT>07-Jan-2015
<DD>
The Parallel Java Library is now released
under the GNU General Public License
with a linking exception.
<P><DT>20-Jun-2012
<DD>
In package edu.rit.pj.cluster:
Added the <TT>backendshell</TT> configuration command
to class Configuration.
If specified, this configures the PJ Job Scheduler
to use a given shell command string
when starting a job backend process
on a given backend node.
The default shell command string
was changed from <TT>"sh -c"</TT>
to <TT>"bash -l -c"</TT>.
The <TT>-l</TT> flag tells the shell to behave as a login shell
and execute the commands in the user's login profile, if any.
Changed class JobFrontend to launch a Parallel Java job
using the configured shell command string
instead of a hard-coded string.
Changed class BackendClassLoader
to support loading resources
as well as class files
from the Java class path.
<P><DT>01-Apr-2012
<DD>
In package edu.rit.mp.buf:
Fixed bugs in the shared object buffer classes;
the objects were not re-serialized properly
after a reduction operation,
causing the reduce and all-reduce message passing methods to fail
when using a shared object buffer.
<P><DT>26-Mar-2012
<DD>
In package edu.rit.util:
Added class Packing
for packing and unpacking bytes
into and out of integers and long integers.
<P>
In class edu.rit.numeric.Statistics:
added a method for doing
an unequal-variance <I>t</I>-test
for equality of means of two data series.
<P><DT>19-Mar-2012
<DD>
In package edu.rit.hyb.keysearch:
Changed class FindKeyHyb
to use the HybridTeam, WorkerRegion, and WorkerIntegerForLoop classes.
<P>
In package edu.rit.hyb.fractal:
Changed class MandelbrotSetHyb
to use the HybridTeam, WorkerRegion, and WorkerIntegerForLoop classes.
Changed class MandelbrotSetHyb2
to use the WorkerTeam, WorkerRegion, and WorkerIntegerForLoop classes.
<P>
In package edu.rit.hyb.prime:
Changed class PrimeCountFunctionHyb
to use the WorkerTeam, WorkerRegion, and WorkerLongForLoop classes.
<P><DT>08-Mar-2012
<DD>
Changed class edu.rit.clu.keysearch.FindKeyClu2
to use a ReplicatedBoolean object for early loop exit
instead of flood-send and flood-receive operations.
<P>
Added features to the Job Scheduler's web interface.
The job queue web page
now has a link to a detailed job status web page
for each job.
The detailed job status web page includes
a "comment" for each backend process.
The program can set its backend process comment
by calling <TT>JobBackend.getJobBackend().setComment()</TT>.
The comment is typically used to report
the backend process's progress.
<P><DT>22-Nov-2011
<DD>
In class edu.rit.numeric.Interpolation:
Removed the restriction that the X values
must be in ascending order;
removed the <TT>fInv()</TT> method.
<P>
Changed class edu.rit.util.RandomSubset
to support both a sparse implementation and a dense implementation.
This change is source compatible with previous code,
which will use the sparse implementation by default as before.
<P>
Added class edu.rit.util.Searching
with methods for searching sorted and unsorted arrays
of primitive types and object types.
<P>
In class edu.rit.util.Sorting:
Each <TT>sort()</TT> method now returns
the array that was sorted.
<P><DT>09-Aug-2011
<DD>
Fixed a bug in class edu.rit.draw.item.Group;
transforms were not applied properly
if a group was nested inside another group.
<P>
In package edu.rit.numeric:
Fixed a bug in class Interpolation;
it calculated the wrong answer
when extrapolating beyond
the last data points in the series;
thank you to Francisco Esquembre for discovering the bug.
Added classes BernoulliPrng, ExponentialPrng, and UniformPrng.
In class Series.Stats,
changed the field names to <TT>mean</TT>,
<TT>var</TT>, and <TT>stddev</TT>,
and set the statistics to NaN
if the series is empty.
In class Series.RobustStats,
changed the field names to <TT>median</TT>
and <TT>meanAbsDev</TT>,
set the statistics to NaN
if the series is empty,
and added the <TT>quantile()</TT> and <TT>histogram()</TT> methods.
In class XYSeries,
removed the <TT>stats()</TT> and <TT>robustStats()</TT> methods;
instead, use <TT>xSeries().stats()</TT>,
<TT>ySeries().stats()</TT>,
<TT>xSeries().robustStats()</TT>,
and <TT>ySeries().robustStats()</TT>.
In class XYZSeries,
removed the <TT>stats()</TT> and <TT>robustStats()</TT> methods;
instead, use <TT>xSeries().stats()</TT>,
<TT>ySeries().stats()</TT>,
<TT>zSeries().stats()</TT>,
<TT>xSeries().robustStats()</TT>,
<TT>ySeries().robustStats()</TT>,
and <TT>zSeries().robustStats()</TT>.
<P>
Added package edu.rit.sim
with classes for discrete event simulation.
<P>
In package edu.rit.util:
Added class RandomSubset.
<P><DT>15-Mar-2011
<DD>
Fixed bugs in package edu.rit.swing;
the JTextField subclasses incorrectly overrode
the JComponent.isValid() method;
this method's name was changed to isOkay().
<P><DT>22-Oct-2010
<DD>
Clarified the documentation for class edu.rit.pj.job.Runner.
<P>
In package edu.rit.numeric:
Added methods to compute the medians and mean absolute deviations
in classes Series, XYSeries, and XYZSeries.
Changed class RobustFit to compute the confidence region
for the fitted parameters
at a given confidence level.
<P>
Added class edu.rit.util.Sorting
with static methods for sorting arrays
of primitive types and object types.
<P><DT>09-Oct-2010
<DD>
Fixed a bug in class edu.rit.util.Instance;
to load the class for the object being created,
it should be using the calling thread's context class loader
instead of a class loader specified as an argument.
<P>
Fixed a bug in class edu.rit.pj.job.Job;
to load the class for the job's main method,
it should be using the calling thread's context class loader
instead of class Job's class loader.
<P><DT>08-Oct-2010
<DD>
In package edu.rit.pj:
Added class WorkerIteration
for doing parallel iterations
in a cluster or hybrid parallel program.
In class WorkerRegion,
added methods to perform a parallel iteration
over an array,
the items returned by an iterator,
or the items contained in an iterable collection.
<P>
Added package edu.rit.pj.job
with programs and classes
for running independent jobs
on parallel computers.
<P>
In package edu.rit.io:
Added class Stdio
providing per-thread standard I/O streams.
<P>
In package edu.rit.numeric:
Added the <TT>linearRegression()</TT> method
to class edu.rit.numeric.XYZSeries.
Added interfaces MDFunction and ParameterizedFunction.
Added classes MDMinimizationDownhillSimplex and RobustFit.
<P><DT>29-Jul-2010
<DD>
Fixed a bug in class edu.rit.pj.cluster.JobScheduler;
if a client opened a socket connection
to the Job Scheduler's web server
but did not send an HTTP request message
and did not close the connection,
the whole Job Scheduler deadlocked.
<P>
In class edu.rit.http.HttpServer:
Added a timeout while reading an HTTP request message
from a socket connection.
<P><DT>22-Apr-2010
<DD>
Fixed a bug in class edu.rit.color.HSB;
the <TT>unpack()</TT> method did not compute
the correct hue, saturation, and brightness components.
<P><DT>18-Feb-2010
<DD>
In package edu.rit.pj:
Fixed a bug involving the fixed schedule classes,
the parallel for loop classes,
and the worker for loop classes;
if the number of loop iterations
was less than the number of team threads,
the <TT>run()</TT> method would be called
with a lower index greater than the upper index
in some threads,
whereas the <TT>run()</TT> method
should not have been called at all
in those threads.
<P>
In package edu.rit.util:
Added classes Mathe and RandomSample.
<P>
In package edu.rit.pj.reduction:
Added classes SharedIntegerMatrix and SharedLongMatrix.
<P><DT>21-Jan-2010
<DD>
In package edu.rit.pj:
Fixed bugs in classes
WorkerIntegerForLoop, WorkerIntegerStrideForLoop,
WorkerLongForLoop, and WorkerLongStrideForLoop;
improper synchronization between worker threads
could cause a deadlock in the master thread
during execution of a worker for loop.
<P>
In class edu.rit.numeric.BigRational:
Added several constructors and methods.
Fixed bugs in the <TT>floatValue()</TT> and <TT>doubleValue()</TT> methods;
the results were not calculated to the proper precision.
<P>
In class edu.rit.numeric.Statistics:
Added the <TT>binomialKsTest()</TT> method.
<P>
In package edu.rit.util:
Added class Instance with static methods
for creating instances of classes.
<P><DT>26-Dec-2009
<DD>
In package edu.rit.pj:
Added components that provide the master-worker pattern
for automatic loop partitioning and load balancing
in cluster parallel programs and hybrid parallel programs.
These include the following classes:
WorkerTeam, HybridTeam, WorkerConstruct, WorkerRegion,
WorkerForLoop, WorkerIntegerForLoop, WorkerIntegerStrideForLoop,
WorkerLongForLoop, WorkerLongStrideForLoop.
<P>
In package edu.rit.clu.keysearch:
Changed the FindKeyClu and FindKeyClu2 programs
to use the new master-worker components.
<P>
In package edu.rit.clu.fractal:
Changed the MandelbrotSetClu2, MandelbrotSetClu3, and MSHistogramClu programs
to use the new master-worker components.
<P>
In package edu.rit.pj.reduction:
In classes ByteOp, CharacterOp, IntegerOp, LongOp, and ShortOp:
Added the AND, OR, and XOR reduction operators.
<P>
In package edu.rit.io:
Added classes DataOutputStream and DataInputStream.
<P>
In class edu.rit.numeric.Statistics:
Added methods to do a chi-square test
for a Bernoulli distribution.
Added a method to do a Kolmogorov-Smirnov test
for an arbitrary distribution.
<P><DT>06-Oct-2009
<DD>
In class edu.rit.numeric.Statistics:
Added methods for doing the chi-square test
and the Y-square test.
<P>
Moved class BigRational
from package edu.rit.smp.ca
to package edu.rit.numeric,
and added several operations.
<P>
In class edu.rit.util.Random:
Added methods to return random values
of the primitive types byte, unsigned byte,
char, short, unsigned short, int, and long.
<P>
Fixed a bug in class edu.rit.numeric.plot.impl.XYPlot:
An exception was thrown if a plot series
had fewer than two data points.
<P><DT>05-Apr-2009
<DD>
In package edu.rit.mp.buf:
Fixed bugs in the matrix buffer classes;
sometimes when receiving a message into a matrix buffer,
an incorrect number of items would be sucked out of the message.
Thank you to Omonbek Salaev for discovering the bug.
<P><DT>23-Mar-2009
<DD>
In package edu.rit.hyb.keysearch:
Fixed a bug in class FindKeyHyb;
the threads did not synchronize with each other properly
when writing the <TT>foundkey</TT> shared variable.
<P>
In package edu.rit.mp.buf:
Fixed bugs in the object reduction buffer classes;
the underlying buffer's serialized representation was not reset
when the underlying buffer's contents were changed
via operations on the reduction buffer.
<P><DT>11-Mar-2009
<DD>
In package edu.rit.mp:
Fixed a bug in class ChannelGroup;
if an I/O error occurred while setting up a channel
for a connection initiated by a far end process,
the thread accepting new connections
would (incorrectly) terminate.
<P><DT>21-Jan-2009
<DD>
In package edu.rit.pj:
Fixed a bug in class Comm;
a non-blocking flood-receive operation
blocked in some processes
because channels were not set up properly.
<P>
In package edu.rit.pj.cluster:
Fixed a bug in class JobFrontend;
the job frontend process
did not pass the correct backend node host name
to the job backend process.
<P><DT>24-Dec-2008
<DD>
The Parallel Java class files are now compiled
using JDK 1.5 again.
Switching to JDK 1.6 proved to be a mistake.
My tests have revealed serious performance issues
when a multithreaded PJ program
is run on an SMP parallel computer
with JDK 1.6.
Due to some as-yet-unfathomed behavior
of the JDK 1.6 JIT compiler
and/or the JDK 1.6 thread scheduler,
SMP parallel programs that experienced near-ideal speedups with JDK 1.5
experience far-less-than-ideal speedups with JDK 1.6
on the same machine.
For now I recommend using PJ with JDK 1.5.
<P><DT>26-Nov-2008
<DD>
The Parallel Java class files are now compiled
using JDK 1.6.
<P>
In package edu.rit.mp.ChannelGroup
and in class edu.rit.pj.Comm:
Added the ability to receive a message
whose tag lies in a given range,
in addition to receiving a message with a specific tag or any tag.
This change is source compatible with existing software
but is not binary compatible;
you may need to recompile your programs.
<P>
In package edu.rit.compbio.phyl:
Redesigned the maximum parsimony
phylogenetic tree construction algorithm classes
to store the results in an object passed in as a parameter.
Added class MaximumParsimonyBnbHyb
and main program class PhylogenyParsBnbHyb
with a hybrid parallel program
for maximum parsimony phylogenetic tree construction.
<P><DT>10-Nov-2008
<DD>
In package edu.rit.image:
Fixed bugs in the PJG image classes;
PJG image files would not be displayed properly
if the height and width were unequal.
Thank you to Paresh Khatri for discovering the bug.
<P><DT>13-Sep-2008
<DD>
Added package edu.rit.pj.replica
with classes for replicated, shared reduction variables
for use in cluster and hybrid parallel programs.
<P>
In class edu.rit.pj.Comm:
Changed the manner in which processes establish connections among themselves,
to eliminate race conditions that could result in incorrect connections.
<P><DT>15-Aug-2008
<DD>
In package edu.rit.compbio.phyl:
Changed class MaximumParsimonyBnbSmp
to update the search bound variable
using a reduction operator
instead of an atomic compare-and-set operation.
<P>
In package edu.rit.smp.monte:
Added the source files for SMP parallel C/OpenMP programs
for estimating pi using a Monte Carlo technique;
these are linked from the package summary page of the Javadoc.
<P>
In package edu.rit.smp.network:
Added the source files for SMP parallel C/OpenMP programs
for Floyd's Algorithm;
these are linked from the package summary page of the Javadoc.
<P>
In package edu.rit.clu.monte:
Added the source files for cluster parallel C/MPI programs
for estimating pi using a Monte Carlo technique;
these are linked from the package summary page of the Javadoc.
<P>
In package edu.rit.clu.network:
Added the source files for cluster parallel C/MPI programs
for Floyd's Algorithm;
these are linked from the package summary page of the Javadoc.
<P><DT>07-Aug-2008
<DD>
In package edu.rit.compbio.phyl:
Added methods to class TreeDrawing
to draw a phylogenetic tree into a given drawing object
or a given drawing group object.
<P>
In class edu.rit.draw.item.Group:
Added methods to retrieve points relative to the group's bounding box
without applying the group's transformations.
<P>
In class edu.rit.numeric.plot.Plot:
Changed the default title font to sans-serif, bold, 14 point.
Changed the default axis and label font to sans-serif, plain, 12 point.
Increased the default margins and title offsets.
<P>
In the unnamed package:
Changed the first parallel programs,
classes Program1Seq, Program1Smp, and Program1Clu,
to do a primality test as the demo computation.
<P><DT>25-Jul-2008
<DD>
In package edu.rit.compbio.phyl:
Added some features to the phylogenetic tree construction programs.
The output report now includes
the Hamming distance matrix
and the Jukes-Cantor distance matrix.
For each maximum parsimony phylogenetic tree,
the least squares branch lengths are computed and displayed,
and the trees are presented in ascending order of squared error.
<P>
In package edu.rit.pj.cluster:
Fixed a bug in class NonPjJobFrontend;
an IllegalMonitorStateException was thrown
when a backend processor was assigned to the job.
<P><DT>20-Jul-2008
<DD>
In package edu.rit.compbio.phyl:
Changed the criterion for deciding when to prune
the branch-and-bound search;
the new criterion can prune the search sooner.
<P><DT>19-Jul-2008
<DD>
Added package edu.rit.compbio.phyl
with sequential and SMP parallel programs
for maximum parsimony phylogenetic tree construction
using branch-and-bound search.
Added package edu.rit.compbio.seq.test
with unit test programs for the above.
<P>
Removed obsolete packages edu.rit.phyl,
edu.rit.phyl.pars, and edu.rit.phyl.pars.test.
Equivalent programs are now in package edu.rit.compbio.phyl.
<P>
In package edu.rit.pj:
In class PJProperties:
Changed the <TT>getPjSchedule()</TT> method to return null
if the <TT>"pj.schedule"</TT> property was not specified.
In class IntegerSchedule:
Added the <TT>runtime(IntegerSchedule)</TT> method.
In class LongSchedule:
Added the <TT>runtime(LongSchedule)</TT> method.
<P>
In class edu.rit.pj.cluster.JobBackend:
Added code to turn on headless mode.
This allows graphics drawing operations
(that do not require a screen, keyboard, or mouse) to work
when a PJ program is run on a backend node of a cluster.
<P><DT>14-Jul-2008
<DD>
Added package edu.rit.compbio.seq
with sequential and parallel programs
for protein sequence database searching
using the Smith-Waterman local alignment algorithm.
Added package edu.rit.compbio.seq.test
with unit test programs for the above.
<P>
In package edu.rit.mp.buf:
Fixed a bug in class EmptyObjectBuf;
the class should not have overridden the superclass's
<TT>sendItems()</TT> and <TT>receiveItems()</TT> methods.
<P><DT>28-Jun-2008
<DD>
In package edu.rit.numeric:
Added interface VectorFunction and class NonLinearLeastSquares
for nonlinear least squares curve fitting.
Added classes DoublePrng and NormalPrng
for generating pseudorandom numbers with a normal distribution.
Added classes ArraySeries, ArrayXYSeries, and ArrayXYZSeries
which provide series objects backed by arrays.
<P>
In package edu.rit.mp:
Added the <TT>objectBuffer(T[])</TT>
and <TT>objectBuffer(T[][])</TT> methods
to class ObjectBuf.
Fixed a bug in class MPObjectInputStream;
the <TT>resolveClass()</TT> method
did not correctly resolve the class for an array of objects.
<P>
In class edu.rit.pj.cluster.JobBackend:
Fixed a bug in the <TT>reportResource()</TT> method;
a NullPointerException was thrown if the resource could not be found.
<P>
In packages edu.rit.draw and edu.rit.draw.item:
Removed the ability to rotate a DrawingItem.
Added the ability to scale, shear, and rotate a Group.
To apply transformations to one or more DrawingItems,
put the DrawingItems in a Group
and apply transformations to the Group.
This change reduces the size of a serialized Drawing object.
As a result of this change,
Drawing objects serialized with previous versions of the Library
are incompatible with the present version of the Library.
<P>
Added package edu.rit.mri
with sequential and parallel programs for solving
a magnetic resonance image spin relaxometry analysis problem.
Added package edu.rit.mri.test
with unit test programs for the above.
<P><DT>08-Jun-2008
<DD>
In class edu.rit.pj.Comm:
Reimplemented the all-reduce operation
to reduce the number of message rounds.
<P>
In package edu.rit.pj.cluster:
Rewrote classes JobScheduler, Configuration, BackendInfo, and JobInfo
to support clusters of single-CPU nodes
and clusters of multi-CPU nodes.
Eliminated classes HybridJobScheduler, HybridConfiguration,
HybridBackendInfo, and HybridJobInfo.
Changed class Configuration
to include the number of CPUs in each backend node.
As a consequence,
this version of the Parallel Java cluster middleware
will not interoperate with previous versions.
<P>
In package edu.rit.hyb.keysearch:
A few revisions to class FindKeyHyb,
a hybrid parallel program for AES partial key search.
<P>
In package edu.rit.hyb.fractal:
Added class MandelbrotSetHyb,
a hybrid parallel program to calculate an image of the Mandelbrot Set
with one-level load balancing.
Added class MandelbrotSetHyb2,
a hybrid parallel program to calculate an image of the Mandelbrot Set
with two-level load balancing.
<P>
In package edu.rit.hyb.network:
Rewrote classes FloydRandom, FloydPrint, FloydSeq, and FloydHyb
to use a DoubleMatrixFile to read and write the input and output files.
<P>
In package edu.rit.hyb.prime:
Rewrote all the programs for calculating the prime counting function.
<P><DT>13-May-2008
<DD>
In package edu.rit.mp:
Fixed a bug in class ChannelGroup;
if the channel group had a connect listener
and another process set up a connection,
there was a race condition between the thread calling the connect listener
and the thread receiving messages from the channel,
possibly causing the channel to be in an incorrect state.
<P><DT>09-May-2008
<DD>
In package edu.rit.clu.monte:
Added programs AesTestSeq and AesTestClu
that perform a Kolmogorov-Smirnov test
on the AES block cipher
operating as a pseudorandom number generator.
The AesTestClu program illustrates
the all-to-all, exclusive-scan, and reduce
collective communication operations.
<P>
In class edu.rit.pj.Comm:
Added the <TT>allToAll()</TT>, <TT>scan()</TT>,
and <TT>exclusiveScan()</TT>
collective communication operations.
Removed the versions of the <TT>reduce()</TT>
and <TT>allReduce()</TT> operations
with separate source and accumulator buffers.
<P>
In class edu.rit.mp.Buf:
Added the <TT>fill()</TT> and <TT>getTemporaryBuf()</TT> methods.
<P>
Fixed bugs in class edu.rit.pj.reduction.ReduceArrays;
in each method,
the number of array elements to reduce was one too large.
<P><DT>07-May-2008
<DD>
In package edu.rit.pj.cluster:
Fixed a bug in class JobScheduler and class HybridJobScheduler.
If a Job Frontend connected to the Job Scheduler,
but the Job Frontend terminated before sending any messages,
the Job Scheduler's channel remained open forever,
eventually leading to resource exhaustion.
<P><DT>25-Apr-2008
<DD>
In package edu.rit.pj.cluster:
Added the <TT>jobtime</TT> configuration command
to class Configuration and class HybridConfiguration.
This configures the PJ Job Scheduler
to impose a maximum running time on each job.
<P><DT>24-Apr-2008
<DD>
Added package edu.rit.clu.heat
with sequential and parallel programs
for computing a heat distribution problem.
The programs solve the partial differential equation
using successive overrelaxation
with Chebyshev acceleration
and red-black mesh updating.
<P>
In package edu.rit.clu.antimatter:
Changed the implementation of the pipelined AntiprotonClu3 program
to use fewer interprocess connections.
<P>
In package edu.rit.image:
Added class PJGHueImage
for reading and writing image files
where the image consists of a continuous range of hues.
(The existing class PJGColorImage is best suited
for images consisting of a small discrete set of colors.)
<P>
In the unnamed package:
Fixed a bug in class mprun;
under JDK 1.6,
class ProcessBuilder requires
the full pathname of the command to execute.
<P>
In package edu.rit.mp:
Fixed bugs in classes ChannelGroup and NetworkChannelReceiveThread;
several I/O error conditions were not handled properly.
<P><DT>30-Mar-2008
<DD>
In package edu.rit.clu.antimatter:
Changed the implementation of the pipelined AntiprotonClu2 program
to use fewer interprocess connections.
<P>
In package edu.rit.util:
Changed the implementation of class DefaultRandom
so that close seed values
do not give closely correlated random sequences.
<P>
In package edu.rit.pj.reduction:
Changed the documentation of class ObjectOp
to state the requirements for an object reduction operation,
which are assumed by the other classes
in the Parallel Java Library.
<P><DT>20-Mar-2008
<DD>
In the unnamed package:
Added program mprun,
which runs MPI jobs through the Parallel Java job queue
on a cluster parallel computer.
<P><DT>19-Mar-2008
<DD>
In package edu.rit.numeric:
Added class Quadratic for solving quadratic equations.
<P>
In package edu.rit.util:
Fixed bugs in class Random;
some precondition checks were missing.
<P>
In class edu.rit.pj.Comm:
Reimplemented the flood and all-gather operations
to reduce the number of message rounds.
<P><DT>03-Mar-2008
<DD>
Added package edu.rit.hyb.monte
with hybrid SMP cluster parallel Monte Carlo programs.
Added classes PiSeq and PiHyb,
sequential and cluster parallel programs
to calculate π using a Monte Carlo technique.
<P>
In package edu.rit.smp.monte:
Changed classes PiSmp, PiSmp2, and PiSmp3
to use a LongForLoop.
<P>
In package edu.rit.util:
Changed the implementation of class Random.
Changed class DefaultRandom to use a hashing algorithm
instead of a multiplicative congruential generator (MCG) algorithm;
the hashing algorithm avoids certain weaknesses of the MCG algorithm.
The previous version of class DefaultRandom,
which uses a MCG algorithm,
is still available as class Mcg1Random.
<P>
In package edu.rit.mp.buf:
Fixed bugs in the object buffer subclasses;
the serialized representation was not reset in all cases
when the buffer contents were changed.
Fixed bugs in the matrix buffer subclasses;
an ArithmeticException was thrown
when receiving into a matrix buffer
for a slice of zero columns.
<P><DT>11-Feb-2008
<DD>
In package edu.rit.clu.antimatter:
Changed programs AntiprotonSeq and AntiprotonClu
to put the antiproton motion calculations in subroutines.
Added program AntiprotonClu2
which uses pipelined send-receive message passing operations
instead of all-gather collective communication operations.
Added program AntiprotonClu3
which uses pipelined send-receive message passing operations
and which overlaps computation with communication.
<P>
In package edu.rit.numeric.plot.impl:
Fixed a bug in class XYPlot;
an exception was thrown when plotting a line
for a data series with one data point.
<P><DT>07-Feb-2008
<DD>
In package edu.rit.clu.antimatter:
Changed the antiproton simulation physics
so the antiprotons are confined by a perpendicular magnetic field
instead of by charged trap walls.
Changed program AntiprotonAni
to display the antiproton positions and the total momentum.
Added class AntiprotonFile,
and changed programs AntiprotonSeq and AntiprotonClu
to store snapshots of the antiproton positions
and the total momentum in a file.
Added the AntiprotonPlot program
to plot the data in an antiproton file.
<P><DT>03-Feb-2008
<DD>
In package edu.rit.clu.fractal:
Added classes MSHistogramSeq and MSHistogramClu,
sequential and cluster parallel programs
to compute a histogram of the Mandelbrot Set
and print it into a file.
<P>
In package edu.rit.smp.fractal:
Changed classes MSHistogramSeq, MSHistogramSmp,
MSHistogramSmp2, and MSHistogramSmp3
to print the histogram into a file.
<P>
In package edu.rit.numeric:
Added class Cubic for solving cubic equations.
<P><DT>19-Jan-2008
<DD>
In package edu.rit.pj:
Fixed a bug in class Comm;
due to a race condition,
a <TT>floodReceive()</TT> operation
would sometimes throw a NullPointerException.
<P>
In package edu.rit.mp:
Added a channel group ID to class ChannelGroup.
Added methods to class Channel
to obtain the channel group IDs
of the near end channel group
and the far end channel group.
These changes were needed to fix the aforementioned bug.
<P>
In the unnamed package:
Added the <TT>pjrun</TT> program;
this lets a user run a non-PJ job on a PJ cluster,
using the PJ job queue to assign backend nodes to the job.
<P><DT>13-Jan-2008
<DD>
In package edu.rit.io:
Added class DoubleMatrixFile
for reading and writing <TT>double[][]</TT> matrices,
or portions thereof,
from and to files.
<P>
In package edu.rit.smp.network:
Changed all the programs
to use class edu.rit.io.DoubleMatrixFile
for input and output of the distance matrix files.
<P>
In package edu.rit.clu.network:
Changed all the programs
to use class edu.rit.io.DoubleMatrixFile
for input and output of the distance matrix files.
Changed class FloydClu
so that each process reads a slice of the distance matrix from the input file
and writes a slice of the distance matrix to a per-process output file.
<P><DT>31-Dec-2007
<DD>
In package edu.rit.pj:
Made the <TT>start()</TT> and <TT>next()</TT> methods
of classes IntegerSchedule and LongSchedule public;
this lets a schedule object divide a range into chunks
apart from a parallel for loop.
<P>
In package edu.rit.clu.fractal:
Rewrote class MandelbrotSetClu2.
Added class MandelbrotSetClu3.
<P>
In package edu.rit.io:
Fixed a bug in class Files;
the <TT>fileForRank()</TT> method
did not return the correct result
if the argument was an absolute path.
<P><DT>23-Dec-2007
<DD>
In package edu.rit.pj.cluster:
Added class HybridJobScheduler,
a Job Scheduler Daemon program
for a hybrid SMP cluster parallel computer
that is able to schedule multiple processes
and multiple threads per process
on each backend node.
Added class HybridConfiguration
to provide configuration information
for the hybrid job scheduler.
Added classes HybridBackendInfo and HybridJobInfo
to hold information about backend nodes and jobs
in the hybrid job scheduler.
<P>
In package edu.rit.mp:
Changed interface ConnectListener
to have separate methods
for reporting near-end-initiated connections
and far-end-initiated connections.
Changed class ChannelGroup
not to start listening for incoming connections
until a new <TT>startListening()</TT> method is called.
Changed class ChannelGroup
to eliminate the methods that query for channels.
These changes were needed
to support the new hybrid job scheduler.
<P>
In package edu.rit.pj:
Changed class Comm
so that when one process
initiates a connection to another process,
the initiating process sends a message
identifying the initiating process's rank.
This change was needed
to support the new hybrid job scheduler.
<P>
Changed several classes throughout the Library
to use 128 extra padding bytes to avert cache interference,
instead of 64.
(128 bytes is the more prevalent cache line size
in modern CPUs.)
<P><DT>12-Dec-2007
<DD>
In the unnamed package:
Added class View,
a main program that can display
either a drawing (class edu.rit.draw.Drawing)
or a plot (class edu.rit.numeric.plot.Plot)
stored in a file.
The new View program supersedes
the old edu.rit.draw.View program
which was removed.
<P>
In class edu.rit.numeric.plot.Plot:
Made the class serializable.
Added static methods to read and write Plot objects
from and to files.
Removed the <TT>display()</TT> and <TT>repaint()</TT> methods;
their functionality is now available through the Viewable interface.
<P>
In package edu.rit.swing:
Added interface Viewable which extends interface Displayable;
to show itself on the screen,
a Viewable object can return a DisplayableFrame.
Drawings and plots are now Viewable objects.
Changed class DisplayableFrame
so that when it saves the displayable object in a PNG file,
the object is saved at its zoomed size.
<P><DT>08-Dec-2007
<DD>
In the unnamed package:
Added class ncc,
a main program to compute
the Non-Comment Characters (NCC) metric
for a group of Java source files.
<P><DT>27-Nov-2007
<DD>
The Parallel Java Library is now released
under Version 3 of the GNU General Public License.
<P>
Rewrote package edu.rit.image.
It now contains classes
for 24-bit color images
and 8-bit grayscale images
in the Parallel Java Graphics (PJG) image file format.
PJG image files are somewhat larger than,
but take much less time to write than,
PNG image files.
For further information, see class PJGImage.
<P>
In the unnamed package:
Added program PJG to display an image read from a PJG file.
<P>
In package edu.rit.smp.fractal:
Updated the Mandelbrot Set SMP parallel programs
to generate a PJG image file
instead of a PNG image file.
<P>
In package edu.rit.clu.fractal:
Updated the Mandelbrot Set cluster parallel programs
to use the matrix allocation and deallocation operations
in class edu.rit.util.Arrays
and to generate a PJG image file
instead of a PNG image file.
<P>
In package edu.rit.mp:
Added a static <TT>emptyBuffer()</TT> factory method
to each buffer subclass.
Fixed a bug in class NetworkChannelReceiveThread;
an incoming message was not received properly
if the number of items in the message
exceeded the number of items in the destination buffer.
Removed the I/O completion hook and chained I/O request capabilities
from class IORequest;
these reduced message passing performance too much.
Changed the non-blocking send and receive methods
in class ChannelGroup
to take an IORequest argument
instead of creating their own new IORequest object.
<P>
In package edu.rit.pj:
Removed enumeration Wait.
In its place, added class BarrierAction
to specify what should happen during a barrier synchronization.
Changed all the <TT>execute()</TT> methods in class ParallelRegion
to use class BarrierAction
instead of enumeration Wait.
In class Comm,
changed the implementation of flood-receive
to use a special subclass of class IORequest
instead of an I/O completion hook.
<P>
In package edu.rit.draw.item:
Added class Polygon.
<P><DT>26-Oct-2007
<DD>
In class edu.rit.util.Arrays:
Fixed bugs in the <TT>copy()</TT> methods;
the wrong index upper bound was calculated.
Added <TT>allocate()</TT>, <TT>deallocate()</TT>,
<TT>length()</TT>, <TT>rowLength()</TT>, and <TT>colLength()</TT> methods.
<P>
In package edu.rit.mp:
Fixed bugs in the factory methods in the buffer base classes;
the factory methods would fail if a matrix row was not allocated;
the factory methods were changed to return a zero-length buffer instead.
<P>
In package edu.rit.mp.buf:
Moved precondition checks
out of the buffer subclass constructors
into the buffer base class factory methods
in package edu.rit.mp.
<P><DT>21-Oct-2007
<DD>
In class edu.rit.pj.cluster.JobFrontend:
The SSH session on the backend processor
now runs the job backend process in the background
and terminates immediately
without waiting for the job backend process to terminate.
The SSH session no longer stays around
while the job is executing.
<P>
In class edu.rit.pj.Comm:
Added the <TT>host()</TT> method.
<P>
In class edu.rit.numeric.Plot:
Added a "Format" menu to the plot window
that lets the user change plot attributes interactively.
<P>
In class edu.rit.swing.DisplayableFrame:
Added a "Fit Window" menu item to the "View" menu
that resizes the window to fit the displayable object.
<P><DT>03-Oct-2007
<DD>
In package edu.rit.pj:
Added the <TT>barrier()</TT> method with a barrier action
to class ParallelRegion.
Added the <TT>floodSend()</TT> and <TT>floodReceive()</TT> methods
to class Comm.
Added the <TT>isFinished()</TT> method to class CommRequest.
<P>
In package edu.rit.mp:
Added the <TT>isFinished()</TT> method to class IORequest.
Added I/O request chaining and I/O completion hook capabilities
to class IORequest and class ChannelGroup.
These are used to implement flood-send and flood-receive.
<P>
In package edu.rit.clu.keysearch:
Changed the FindKeyClu2 program
to use flood-send and flood-receive
to stop the search when any process finds the key.
<P>
In the unnamed package:
Added class Program1Clu,
an introductory parallel program for a cluster.
<P><DT>07-Sep-2007
<DD>
In package edu.rit.smp.fractal:
Added program MSHistogramSmp2
to compute a histogram of the Mandelbrot Set
using the parallel reduction pattern.
Added program MSHistogramSmp3
to compute a histogram of the Mandelbrot Set
using a critical section.
<P>
In package edu.rit.pj.reduction:
In each of the shared array classes,
added a method to reduce a portion of the shared array
with a portion of a given array.
<P>
In package edu.rit.pj:
Added the <TT>team()</TT> and <TT>region()</TT> methods
to class ParallelConstruct.
Added the <TT>isExecutingInParallel()</TT> and <TT>region()</TT> method
to class ParallelTeam.
Changed the implementation of the parallel constructs'
low-level thread synchronization
to improve performance.
<P><DT>22-Aug-2007
<DD>
In package edu.rit.numeric:
Added interface Function,
class SampledXYSeries,
class TransformedSeries,
class TransformedXYSeries,
class TransformedXYZSeries,
and class Interpolation.
<P>
In package edu.rit.numeric.plot:
Added the ability to specify
bold, italic, superscript, and subscript text attributes
in plot labels.
Added the ability to draw a smooth curve for an X-Y data series.
<P>
In package edu.rit.draw.item:
Added class Bow to draw curved (bowed) lines.
Added class Oval to draw ovals.
Added a round corner attribute to class Rectangle.
Added class Group to permit a group of drawing items
to be translated and rotated as a unit.
<P><DT>03-Jul-2007
<DD>
In package edu.rit.pj.cluster:
Certain messages from the job frontend to the job backends
are no longer sent using a parallel broadcast tree;
eliminating the parallel broadcast tree
reduced the program's running time.
<P><DT>28-Jun-2007
<DD>
In package edu.rit.pj:
Re-implemented the SMP parallel programming classes
to use more extensively the Java Concurrency Utilities
in packages java.util.concurrent,
java.util.concurrent.atomic,
and java.util.concurrent.locks.
Eliminated class ParallelSectionGroup;
in its place is a ParallelRegion <TT>execute()</TT> method
that can take any number of ParallelSection arguments.
Eliminated the <TT>noWait()</TT> method
of various parallel constructs;
in its place is a ParallelRegion <TT>execute()</TT> method argument
telling whether the parallel team threads should wait for each other
at the end of a parallel construct.
Changed classes Schedule and LongSchedule
so that user-defined schedule subclasses
can be written;
such schedule subclasses can also be specified at run time
with a command line flag (<TT>-Dpj.schedule</TT>).
<P>
Consolidated packages edu.rit.pj.op and edu.rit.pj.shared
into one package, edu.rit.pj.reduction.
The new package has classes
for thread safe shared reduction variables
of each primitive type and of object types,
and arrays thereof.
The new package also has classes
for binary reduction operators
of each primitive type as well as object types.
Shifted the <TT>getReductionBuf()</TT> method
from class edu.rit.pj.op.Op
to class edu.rit.mp.Buf.
<P>
In package edu.rit.util:
Added a stride to classes Range and LongRange.
<P>
In packages edu.rit.mp and edu.rit.mp.buf:
The factory methods for creating buffer objects
are now in the base classes in package edu.rit.mp.
Factory methods are provided for single items,
arrays, matrices,
thread safe shared items,
and thread safe shared arrays
of each primitive type
and of object types.
All the buffer classes
for slices of arrays and matrices
now support ranges with a stride of 1
and ranges with a stride greater than 1.
<P>
In package edu.rit.pj.cluster:
Added class Configuration
to encapsulate the cluster configuration file.
Added the ability to specify JVM command line flags
in the configuration file.
Fixed a bug in class JobFrontend;
the command to run a job backend process did not work
if the working directory name contained whitespace.
<P>
Added package edu.rit.numeric
with classes for numerical computation.
Added packages edu.rit.numeric.plot
and edu.rit.numeric.plot.impl
with classes for creating plots,
displaying them on the screen,
and writing them to PNG or PostScript files.
<P>
In the unnamed package:
Added programs Speedup and TimeFit
for analyzing parallel program running time measurements.
<P><DT>14-May-2007
<DD>
In package edu.rit.phyl.pars:
Changed class DnaSequence to add extra padding
to the byte array holding the sites,
to avert cache interference in an SMP parallel program.
Added class MaxParsBnb2,
a main program for branch-and-bound search
that does not shuffle the input DNA sequences
into descending distance order.
(Class MaxParsBnb does shuffle the input DNA sequences
into descending distance order.)
<P><DT>06-May-2007
<DD>
In package edu.rit.phyl.pars:
Made several further changes
to reduce the storage requirement and running time
of the MaxParsExh program.
Added the MaxParsBnb and MaxParsSmp programs;
these are a sequential and an SMP parallel version
of a phylogenetic tree construction program
using branch-and-bound search.
<P><DT>02-May-2007
<DD>
Added the <TT>allReduce()</TT> and <TT>barrier()</TT> methods
to class edu.rit.pj.Comm.
Added class edu.rit.mp.buf.EmptyIntegerBuf.
<P><DT>23-Apr-2007
<DD>
In package edu.rit.phyl.pars:
Changed class DnaSequence
to share the base sequence storage array
among different DNA sequence objects where possible;
this reduces the storage requirement and running time
of the MaxParsExh tree construction program.
<P><DT>22-Apr-2007
<DD>
Added packages edu.rit.phyl, edu.rit.phyl.pars,
and edu.rit.phyl.pars.test
with classes and programs
for maximum parsimony phylogenetic tree construction.
At present there is one tree construction program,
class edu.rit.phyl.pars.MaxParsExh,
which uses an exhaustive search.
<P><DT>09-Apr-2007
<DD>
Added package edu.rit.hyb.prime
with hybrid SMP cluster parallel programs
for parallel querying of a datastore of prime numbers
(classes Prime32Seq and Prime32Hyb).
<P><DT>07-Apr-2007
<DD>
In package edu.rit.hyb.antimatter:
Fixed a bug in class AntiprotonHyb;
when running with multiple threads,
the program did not ensure
that all force calculations had completed
before updating the antiproton positions.
<P><DT>02-Apr-2007
<DD>
In class edu.rit.pj.Comm:
Added the <TT>createComm()</TT> method
for creating a new communicator.
<P>
Added package edu.rit.hyb.antimatter
with hybrid SMP cluster parallel programs
for simulating antiproton motion in an antiproton trap
(classes AntiprotonHyb and RenderSeq).
<P><DT>24-Mar-2007
<DD>
Added package edu.rit.hyb.network
with hybrid SMP cluster parallel programs
for calculating all shortest paths in a graph using Floyd's Algorithm.
<P><DT>21-Mar-2007
<DD>
Added package edu.rit.hyb.keysearch
with hybrid SMP cluster parallel programs for AES partial key search.
Added package edu.rit.hyb.fractal
with hybrid SMP cluster parallel programs
for calculating the Mandelbrot Set.
<P><DT>18-Mar-2007
<DD>
In package edu.rit.pj:
Fixed a bug in class Comm;
the <TT>reduce()</TT> method permitted multiple threads
to receive into the reduction buffer simultaneously,
but buffers are not designed to be multiple thread safe
for receiving.
<P><DT>17-Mar-2007
<DD>
In package edu.rit.pj.cluster:
Changed the Job Frontend to use SSH
to spawn Job Backend processes.
This authenticates the Job Backend processes
into the user's account
and allows the Job Backend processes
to access the user's files directly
without having to go through the Job Frontend process.
(Eliminating the use of SSH
in the 06-Nov-2006 version
proved to be a mistake.)
<P><DT>16-Feb-2007
<DD>
Added the <TT>reset()</TT> method
to classes edu.rit.mp.ObjectBuf,
edu.rit.mp.buf.ObjectItemBuf,
edu.rit.mp.buf.ObjectArrayBuf,
and edu.rit.mp.buf.ObjectMatrixBuf.
The <TT>reset()</TT> method must be called
when the state of any object in the buffer changes.
<P><DT>14-Feb-2007
<DD>
Fixed a bug in class edu.rit.pj.Comm;
the <TT>receive()</TT> method sometimes threw a NullPointerException
when receiving a message from any process (<TT>fromRank</TT> = null).
<P><DT>13-Feb-2007
<DD>
In package edu.rit.clu.antimatter:
Added more cluster parallel programs
for simulating antiproton motion in an antiproton trap
(classes AntiprotonClu2 and AntiprotonClu3).
<P><DT>10-Feb-2007
<DD>
In class edu.rit.mp.ChannelGroup:
Added the <TT>channelToHost()</TT>,
<TT>waitForChannelTo()</TT>,
and <TT>waitForChannelToHost()</TT> methods.
<P>
In class edu.rit.pj.Comm:
Rewrote the <TT>allGather()</TT> method
to use a significantly faster message pattern.
Rewrote the logic for connecting channels
between backend processes.
Added caching of message pattern information
in the <TT>broadcast()</TT>, <TT>allGather()</TT>,
and <TT>reduce()</TT> methods.
<P><DT>08-Feb-2007
<DD>
Added package edu.rit.clu.antimatter
with cluster parallel programs
for simulating antiproton motion in an antiproton trap
(classes AntiprotonAni, AntiprotonSeq, and AntiprotonClu).
<P>
Removed package edu.rit.clu.particles;
package edu.rit.clu.antimatter took its place.
<P><DT>06-Feb-2007
<DD>
In package edu.rit.clu.network:
Rewrote the cluster parallel programs
for calculating all shortest paths in a graph using Floyd's Algorithm
(classes FloydSeq and FloydClu).
<P>
In package edu.rit.clu.timing:
Added class TimeSendDouble
to measure the time required to send a message
whose data items are type <TT>double</TT>.
<P><DT>01-Feb-2007
<DD>
In package edu.rit.clu.monte:
Rewrote the cluster parallel programs
for calculating π using a Monte Carlo technique
(classes PiSeq and PiClu).
<P>
In package edu.rit.clu.fractal:
Fixed a bug in class MandelbrotSetClu4;
the program did not properly overlap
sending the previous slice and computing the next slice.
<P>
In package edu.rit.util:
Fixed a bug in class Random;
the <TT>nextInt()</TT> method
could sometimes consume more than one value
from the pseudorandom sequence,
leading to incorrect sequence splitting in a parallel program.
<P><DT>30-Jan-2007
<DD>
In package edu.rit.clu.fractal:
Added two more cluster parallel programs
for calculating the Mandelbrot Set
(classes MandelbrotSetClu3, MandelbrotSetClu4).
<P><DT>24-Jan-2007
<DD>
In package edu.rit.clu.fractal:
Rewrote the cluster parallel programs
for calculating the Mandelbrot Set
(classes MandelbrotSetSeq, MandelbrotSetClu, MandelbrotSetClu2).
<P>
In package edu.rit.clu.timing:
Changed the output format for classes TimeSend and TimeBcast.
<P>
In class edu.rit.pj.PJProperties:
Added the <TT>pj.jobtime</TT> Java system property
to set the maximum running time for a job.
<P>
In package edu.rit.mp:
Fixed a bug in class ChannelGroup;
if one thread tried to send a message
to another thread in the same process,
a deadlock could happen.
<P><DT>16-Jan-2007
<DD>
In package edu.rit.clu.keysearch:
Rewrote the cluster parallel programs for AES partial key search.
<P><DT>15-Jan-2007
<DD>
In package edu.rit.pj.cluster:
Fixed a bug in class JobFrontend;
the job frontend's lease timers for the job backend
were not started at the correct time,
which could result in an incorrect lease timeout
that incorrectly aborted the job.
<P><DT>14-Jan-2007
<DD>
In package edu.rit.pj.cluster:
Changed the Job Scheduler;
when a job frontend process reports that a job backend process failed,
the Job Scheduler will keep the backend processor available.
<P><DT>10-Jan-2007
<DD>
In package edu.rit.image:
Added class SyncGrayImage
providing a grayscale image class
with producer-consumer synchronization.
<P>
In class edu.rit.pj.ParallelRegion:
Added <TT>reductionArray()</TT> methods
to create reduction variables containing arrays of the primitive types.
<P>
In package edu.rit.smp.network:
Minor changes to the Floyd's Algorithm programs.
<P>
Removed obsolete package edu.rit.smp.sort.
<P><DT>22-Dec-2006
<DD>
In package edu.rit.util:
Added classes Random and DefaultRandom.
These provide a pseudorandom number generator (PRNG)
designed for use in parallel scientific programming.
<P>
Made some minor changes to the parallel programs
in packages edu.rit.smp.fractal
and edu.rit.smp.monte.
<P><DT>20-Nov-2006
<DD>
In packages edu.rit.mp and edu.rit.mp.buf:
Fixed a bug in the Message Protocol;
a message was not received properly
if the destination buffer was larger
than the number of items in the message.
<P>
In package edu.rit.pj.cluster:
Changed the frontend file I/O capability
to reduce the number of byte array copy operations.
<P><DT>09-Nov-2006
<DD>
In package edu.rit.pj.cluster:
Changed class FrontendFileWriter
to perform all file operations in a separate thread,
to avoid blocking the job frontend's message processing thread.
(Class FrontendFileReader already works this way.)
<P><DT>07-Nov-2006
<DD>
Some minor changes in the Job Scheduler Daemon's web interface.
Fixed a bug in class edu.rit.pj.Comm;
a NullPointerException occurred
when a job was run
on a machine with no Job Scheduler Daemon.
<P><DT>06-Nov-2006
<DD>
A major redesign of the PJ message passing middleware
for cluster parallel programming.
The goals of the redesign
are to reduce the time needed to send messages
and to make it easier to deploy and use PJ
on cluster parallel computers.
The principal changes are:
<UL>
<LI>
In package edu.rit.mp:
Changed the channel and channel group classes
to use Java "Old I/O" (thread-based)
instead of Java "New I/O" (selector-based).
Old I/O's measured performance is better than New I/O's.
<LI>
In package edu.rit.pj.cluster:
Eliminated the use of SSH to launch backend processes;
PJ now has its own Job Launcher written in 100% Java.
The job frontend process runs in the user's account as before,
but the job backend processes are no longer authenticated
into the user's account;
rather, they run in a separate PJ account.
Eliminating SSH greatly reduces the startup time for a PJ job.
All the other classes were rewritten as well.
The Job Scheduler now has a web interface
for displaying the cluster status.
<LI>
In package edu.rit.pj:
Changed the implementation of class Comm
to use the new classes in package edu.rit.pj.cluster.
However, the exported methods of class Comm
still have the same signatures as before,
so programs using class Comm do not need to change.
<LI>
Added package edu.rit.pj.io with class StreamFile.
This class lets a PJ program running in the PJ account on a backend processor
read and write files stored in the user's account on the frontend processor.
This capability is needed
because PJ no longer authenticates the job backend processes
into the user's account.
Instead, using class StreamFile, the job backend processes
communicate with the job frontend process
(which is authenticated into the user's account)
to read and write files.
All the application programs were changed to use class StreamFile.
</UL>
<P><DT>09-Mar-2006
<DD>
Removed the deprecated package edu.rit.matrix.
Removed the deprecated constructors
in the array buffer classes
in package edu.rit.mp.buf.
<P>
In package edu.rit.pj:
Changed the name of class Status to class CommStatus
to emphasize that the class stores the status
of a communication operation in class Comm.
<P><DT>20-Feb-2006
<DD>
Added non-blocking send and receive operations
to class edu.rit.pj.Comm.
<P>
In package edu.rit.mp.buf:
Added buffer classes for matrices of all primitive types.
Added a buffer class for a matrix of objects.
<P>
Fixed a bug in class edu.rit.clu.particles.ProtonClu3;
computation and communication used the same array,
so incoming new data could overwrite the previous data
being used in the computation.
<P><DT>16-Feb-2006
<DD>
Added the send-receive operation to class edu.rit.pj.Comm,
including a non-blocking version.
<P>
In package edu.rit.clu.particles:
Added more cluster parallel programs
for the Particle Simulation,
an <I>N</I>-bodies problem.
<P><DT>14-Feb-2006
<DD>
Added the all-gather operation to class edu.rit.pj.Comm.
<P>
Added package edu.rit.vector
with class Vector2D,
a two-dimensional mathematical vector of doubles,
as well as buffer classes
for sending and receiving 2-D vectors
in message passing parallel programs.
<P>
Added package edu.rit.clu.particles
with sequential and cluster parallel programs
for the Particle Simulation,
an <I>N</I>-bodies problem.
<P><DT>12-Feb-2006
<DD>
Package edu.rit.matrix was deprecated.
The classes in this package are still available
but should no longer be used.
Package edu.rit.matrix will be removed
in a future release of the Parallel Java Library.
The package was deprecated because
accessing arrays and matrices using class methods
takes too long in a parallel program.
<P>
Added package edu.rit.image.
This package contains image classes
equivalent to the ones in package edu.rit.matrix.
However, to improve running times,
the new image classes
operate on primitive matrices
(type <TT>byte[][]</TT> or <TT>int[][]</TT>)
instead of the matrix classes.
<P>
In package edu.rit.mp.buf:
Added matrix buffer classes
equivalent to the ones in package edu.rit.matrix
for byte, double, and integer matrices.
However, to improve running times,
the new matrix buffer classes
operate on primitive matrices
instead of the matrix classes.
<P>
In package edu.rit.mp.buf:
The constructors in all the array buffer classes
were deprecated,
and static factory methods were added.
The constructors are still available
but should no longer be used.
The constructors will be removed
in a future release of the Parallel Java Library.
The constructors were deprecated
because the static factory methods
provide greater programming flexibility.
<P>
Revised code throughout the Parallel Java Library
not to use the deprecated classes and constructors.
<P><DT>10-Feb-2006
<DD>
In package edu.rit.matrix:
Added reduction operations to classes
ParallelDoubleArray, ParallelDoubleMatrix,
ParallelIntegerArray, and ParallelIntegerMatrix.
Added classes
ParallelByteArray, ParallelByteMatrix, and RowSliceByteMatrix.
<P>
Fixed a bug in class edu.rit.matrix.ByteMatrixBuf;
the I/O buffer position was not set properly
after sending items from or receiving items into
the byte matrix buffer.
<P><DT>08-Feb-2006
<DD>
In package edu.rit.pj:
Added the <TT>reduce()</TT> method to class Comm
to do parallel reduction in a message passing program.
<P>
Added package edu.rit.pj.op
with classes for binary operations
to do parallel reduction in a message passing program.
<P>
Added package edu.rit.clu.network with cluster parallel programs
for computing all shortest paths in a network
using Floyd's Algorithm,
an example of an algorithm
that uses broadcasting on a cluster parallel computer.
<P>
Added package edu.rit.clu.monte with cluster parallel programs
for computing π using a Monte Carlo technique,
an example of an algorithm
that uses reduction on a cluster parallel computer.
<P>
Fixed a bug in the matrix classes of package edu.rit.matrix;
the <TT>row()</TT> method
did not create a reference to the correct row
if the full matrix was not allocated.
<P><DT>04-Feb-2006
<DD>
In package edu.rit.matrix:
Added message buffer classes
for sending and receiving matrix elements
in message passing operations.
<P>
In package edu.rit.pj:
Added class RangeSchedule
for writing cluster parallel programs
using the master-worker pattern.
<P>
In package edu.rit.clu.fractal:
Added cluster parallel program MandelbrotSetClu2
that computes the Mandelbrot Set
using the master-worker pattern for load balancing.
Added cluster parallel program MandelbrotSetClu3
that computes the Mandelbrot Set
using the master-worker pattern for load balancing
and uses overlapped computation and I/O.
<P>
Fixed a bug in class edu.rit.pj.Comm;
a deadlock could happen
when a process did a receive from "any channel."
<P><DT>01-Feb-2006
<DD>
Fixed a bug involving packages edu.rit.mp,
edu.rit.pj, and edu.rit.pj.cluster;
when an object was sent in a message through a communicator,
and the object's class was not part of the PJ Library,
the object would not deserialize properly at the destination
(an exception would be thrown).
<P><DT>30-Jan-2006
<DD>
In package edu.rit.mp:
Redesigned the package again.
The separate Src and Dst classes
were combined into a single Buf class
for both sending and receiving messages.
The message buffer subclasses were moved into package edu.rit.mp.buf.
Package edu.rit.mp.data was eliminated.
Added the ability to have multiple threads
sending messages simultaneously
using the same message buffer.
Added a loopback channel capability
so that a process can send and receive messages to and from itself
in different threads.
Added non-blocking send and receive operations.
<P>
In package edu.rit.pj:
Class Comm was changed
to use class edu.rit.mp.Buf as the message buffer.
Interface edu.rit.pj.Buffer and package edu.rit.pj.data were eliminated.
Added the ability for a process
to send and receive a message to and from itself
in different threads.
Added the scatter and gather collective communication methods.
<P>
In package edu.rit.matrix:
Added classes ParallelIntegerMatrix,
RowSliceIntegerMatrix,
and IntegerMatrixBuf
with methods for transferring integer matrices between processes
using message passing.
<P>
Added package edu.rit.clu.fractal
with cluster parallel programs
for computing an image of the Mandelbrot Set,
an example of a massively parallel problem
that needs load balancing.
<P><DT>26-Jan-2006
<DD>
Fixed a bug in class edu.rit.mp.ChannelGroup;
improper thread synchronization sometimes caused a deadlock.
<P><DT>24-Jan-2006
<DD>
Extensive changes and additions
to the message passing portion of Parallel Java.
In package edu.rit.mp:
Redesigned the item source and item destination classes.
Coalesced former packages edu.rit.mp.src and edu.rit.mp.dst
into one new package edu.rit.mp.data.
<P>
In package edu.rit.pj:
Added <TT>send()</TT>, <TT>receive()</TT>, and <TT>broadcast()</TT>
communication methods to class Comm.
Added package edu.rit.pj.data with classes for message data buffers.
Made many changes to package edu.rit.pj.cluster
to support the new Comm capabilities.
<P>
Added package edu.rit.clu.keysearch with cluster parallel programs
for breaking a block cipher using exhaustive key search,
an example of a massively parallel problem.
<P>
Added package edu.rit.clu.timing with cluster parallel programs
for timing the send, receive, and broadcast methods
in class edu.rit.pj.Comm.
<P>
Fixed a bug in class edu.rit.pj.Lock;
exclusive locking was not implemented properly.
Fixed a bug in class edu.rit.pj.cluster.BackendClassLoader;
improper thread synchronization sometimes caused
a ClassCircularityError.
<P><DT>14-Jan-2006
<DD>
In package edu.rit.pj:
Added class Reduction which encapsulates a reduction variable
for use in the parallel reduction pattern.
Added a method to class ParallelRegion
to associate a reduction variable with the parallel region.
Added class Lock for exclusive and nonexclusive locking.
Changed the critical region methods in class ParallelRegion
to use class Lock instead of class java.util.concurrent.locks.ReentrantLock.
<P>
In package edu.rit.smp.sort:
Redesigned the SwapSortSeq and SwapSortSmp programs.
Added the SwapSortSmp2 program
which does a parallel reduction using a reduction variable.
<P>
In package edu.rit.pj.cluster:
Fixed a bug in class JobFrontend;
the job frontend did not wait for end-of-stream
on the SSH session's standard output and standard error
before exiting.
<P><DT>12-Jan-2006
<DD>
Added package edu.rit.smp.sort with
programs for sorting,
as an additional illustration of parallel reduction
and parallel team thread synchronization.
<P><DT>09-Jan-2006
<DD>
Added package edu.rit.smp.network with
programs for computing all shortest paths in a network
using Floyd's Algorithm,
an example of an algorithm
with dependencies between loop iterations
that affect how the algorithm is parallelized.
<P><DT>06-Jan-2006
<DD>
Added package edu.rit.mp with classes for message passing.
Added package edu.rit.mp.src with classes for message item sources.
Added package edu.rit.mp.dst with classes for message item destinations.
Added package edu.rit.mp.test
with unit test programs for package edu.rit.mp.
<P>
Added package edu.rit.pj.cluster
with message passing middleware classes
for PJ message passing parallel programs.
<P>
In package edu.rit.pj:
Added class Comm
for using the message passing middleware
in a PJ parallel program.
At present,
class Comm has a method
for initializing the message passing middleware
and running a PJ parallel program
on the backend processors of a cluster parallel computer.
In future releases,
class Comm will include methods for message passing.
<P><DT>14-Dec-2005
<DD>
In package edu.rit.util:
Added class Checklist for synchronizing producer and consumer threads.
<P>
In package edu.rit.matrix:
Added class SyncColorImage with producer-synchronization.
<P>
In package edu.rit.smp.fractal:
Added class MandelbrotSetSmp2
with a program for computing an image of the Mandelbrot set
that uses overlapped computation and I/O
as well as a parallel loop.
<P><DT>12-Dec-2005
<DD>
In package edu.rit.smp.keysearch:
Added another program
for breaking a block cipher using exhaustive key search.
<P>
In package edu.rit.matrix:
Added classes for treating an integer matrix
as a color image.
Added classes for treating a byte matrix
as an indexed color image.
<P>
Added package edu.rit.color with
classes for representing colors in different ways.
<P>
Added package edu.rit.smp.fractal with
programs for computing an image of the Mandelbrot Set,
an example of a massively parallel problem
that needs load balancing.
<P><DT>06-Dec-2005
<DD>
Added package edu.rit.smp.keysearch with
programs for breaking a block cipher using exhaustive key search,
an example of a massively parallel problem.
<P>
Added package edu.rit.crypto.blockcipher with
classes for the Advanced Encryption Standard (AES) block cipher,
used by the aforementioned programs.
<P>
Added package edu.rit.util with:
class Range to represent a range of indexes;
class HexPrintStream to print things in hexadecimal.
<P>
Added package edu.rit.matrix with:
classes for one-dimensional arrays
and matrices (two-dimensional arrays)
of various data types;
and classes for treating
a byte matrix as a grayscale image.
<P><DT>15-Sep-2005
<DD>
In package edu.rit.pj:
Added class ParallelIteration
to do parallel loops
over arrays, iterators, and iterable collections.
Added class ParallelConstruct
as a common base class for all parallel constructs
and moved the implementations of common methods there.
Changed the methods that throw "any exception"
to be declared as <TT>"throws Exception;"</TT>
rather than <TT>"throws Throwable;"</TT>.
<P>
In package edu.rit.pj.test:
Added program UC to test parallel iterations.
<P><DT>31-Aug-2005
<DD>
In package edu.rit.pj:
Rewrote all the classes pertaining to parallel for loops.
Loop index data types of both <TT>int</TT> and <TT>long</TT>
are now supported.
The default schedule is now a "runtime" schedule.
The name of the <TT>breakLoop()</TT> method
was changed to <TT>stopLoop()</TT>
to emphasize that its behavior is not the same
as a <TT>break</TT> statement.
<P>
In package edu.rit.pj.shared:
Added several additional arithmetic methods
to the shared variable wrapper classes.
<P><DT>02-May-2005
<DD>
The first complete version of PJ was released.
Package edu.rit.pj.shared now includes shared variable wrapper classes
for all the primitive types.
<P><DT>08-Apr-2005
<DD>
Another incomplete version of PJ was released.
In package edu.rit.pj:
Added the <TT>ordered()</TT> method in class ParallelForLoop.
Changed the specification of the <TT>noWait()</TT> method
in classes ParallelForLoop, ParallelSectionGroup, and ParallelSection.
Changed the specification of the <TT>single()</TT> method
in class ParallelRegion.
Fixed a bug in class Schedule and its subclasses.
<P><DT>21-Mar-2005
<DD>
Another incomplete version of PJ was released.
The following capabilities were added in package edu.rit.pj:
parallel execution of a group of parallel sections;
execution of a parallel section by a single parallel team thread;
execution of a parallel section in a critical region;
and breaking out of parallel for loops.
Some more unit test programs were added in package edu.rit.pj.test.
<P><DT>16-Mar-2005
<DD>
An initial incomplete version of PJ was released.
This includes: initial versions of
the parallel team, parallel region, and parallel for loop classes
in package edu.rit.pj;
a shared integer variable class in package edu.rit.pj.shared;
some unit test programs in package edu.rit.pj.test;
and some parallel Monte Carlo programs
in package edu.rit.smp.monte.
</DL>
</BODY>
</HTML>
|