Release Notes

2022, Cetus Release 2.0

Release Notes 2022

——————————————————————————-

RELEASE

——————————————————————————-

Cetus 2.0 version (2022) introduces major bug fixes and added features such as the Loop Interchange pass.

Cetus 1.4.4 version (Jan 2017) introduces new methods for setting the stride information of an array access, allowing more precise analysis of array accesses.

Cetus 1.4.3 version (May 2016) contains minor changes that fixed some Java 8 specific bugs which disallowed Cetus from building.

——————————————————————————-

Bug fixes and Added features

——————————————————————————-

1. Handling of loop index initializations within FOR loop declaration-
When ‘for’ loops are declared as- for(int i = 0; i < n; i++), cetus would remove the initialization of ‘i’ from it’s place and hoist it at the top of the code block. The reason for doing so would be the use of underlying cetus design principle -“All variable declarations should appear at the top of the code block”. A loop cannot be parallelized without knowing the initial value of the loop index. So now instead of a loop header of the form – for( ;i < n; i++), We now have – for(i = 0 ; i < n; i++) and ‘int i’ would appear at the top of the block.

2. Added support for logical and bitwise scalar reductions
Scalar reductions of the form x = x op expr, where op is any of: {logical AND – && , logical OR- || , Bitwise OR – | , Bitwise AND- & , Bitwise XOR – ^}. Also added support for Bitwise assignment operators of the form: {Bitwise AND – &= , Bitwise OR – |= , Bitwise XOR – ^=}

3. Support for Multiple reductions using different operators
Cetus had no issue recognizing multiple unique reduction statements within the same loop. But Cetus could not create a separate reduction clause for each reduction-identifier within the same directive as per the latest OpenMP specification. The support for the same has now been added. The directive would look something like: Eg. #pragma omp parallel for private(i) reduction(max: maxl)reduction(&: b)
Earlier Cetus would try to include all the identifiers and operators within one reduction clause.

4. Loop Interchange Pass Added to Cetus
a. Loop Interchange legality algorithm had some minor bugs which have been fixed.
b. Reusability analysis added to the Loop Interchange pass which determines the best order of loops in the nest for maximizing reusability of cache lines.
c. Model taken from K.S McKinley’s paper- “Optimizing for Parallelism and Data locality”.
d. Pass can also handle symbolic loop bounds.

——————————————————————————-

CONTENTS

——————————————————————————-

This Cetus release has the following contents.

lib – Archived classes (jar)

src – Cetus source code

antlr_license.txt – ANTLR license

RSyntaxTextArea.License.txt – RSyntaxTextArea license

cetus_license.txt – Cetus license

build.sh – Command line build script

build.xml – Build configuration for Apache Ant

readme.txt – This file

readme_log.txt – Archived release notes

readme_omp2gpu.txt – readme file for OpenMP-to-CUDA translator

——————————————————————————-

RUNNING CETUS

——————————————————————————-

1. Download Cetus from the “Downloads” page above.
2. Unpack the Zip/Tar file and navigate to the main directory.
3. Run the build script through the command – ./build.sh bin
4. The Cetus executable is created in the bin directory
5. Copy and paste the Cetus executable in your working directory.
6. Run the Cetus executable to see the list of available options and how to enable them.
7. To compile a source code using Cetus through the command line type-
./cetus [options] [C FILE]
E.g. ./cetus -parallelize-loops=2 foo.c
8. The output file after running Cetus is made available in the cetus_output folder in your working directory.
9. Inside the resource directory, you can find example programs

——————————————————————————-

REQUIREMENTS

——————————————————————————-

* JAVA SE 6 and above

* ANTLRv2

* GCC (Cygwin GCC-4 for Windows OS) and above

——————————————————————————-

INSTALLATION

——————————————————————————-

* Obtain Cetus distribution

The latest version of Cetus can be obtained at the downloads section above.

* Binary Version

For binary version (.jar) of Cetus, installation is not needed.

* Unpack

Users need to unpack the distribution before installing Cetus.

$ cd <directory_where_cetus.tar.gz_exists>

$ gzip -d cetus.tar.gz | tar xvf –

* Build

There are several options for building Cetus:

– For Apache Ant users

The provided build.xml defines the build targets for Cetus. The available targets are “compile”, “jar”, “gui”, “clean” and “javadoc”. Users need to edit the location of the Antlr tool.

– For Linux/Unix command line users Run the script build.sh after defining system-dependent variables in the script.

– For SDK (Eclipse, Netbeans, etc) users First, build the parser with the Antlr tool. Then, follow the instructions of each SDK to set up a project.

——————————————————————————-

TESTING

——————————————————————————-

We have tested Cetus successfully using the following benchmark suites:

* NAS Parallel Benchmarks v3.3

More information about this suite is available at http://aces.snu.ac.kr/software/snu-npb/

* Polybench Benchmarks v4.2

More information about this suite available at https://sourceforge.net/projects/polybench/files/

March 11, 2022

The Cetus Team

URL: https://sites.udel.edu/cetus-cid/

EMAIL:

2017, Cetus Release 1.4.4

Release Notes 2017

——————————————————————————-

RELEASE

——————————————————————————-

Cetus 1.4.4 version (Jan 2017) introduces new methods for setting the stride information of an array access, allowing more precise analysis of array accesses.

Cetus 1.4.3 version (May 2016) contains minor changes that fixed some Java 8 specific bugs which disallowed Cetus from building.

Cetus 1.4.2 version (Dec 2014), unlike its predecessor (1.4.1), is not a binary release. It is a complete source release for both Cetus command line version and the GUI version.

Cetus is a source-to-source compiler infrastructure for C written in Java, and can be downloaded from https://sites.udel.edu/cetus-cid/downloads/. This version contains a graphic user interface (GUI), a client-server mode and contains minor updates and fixes in the existing passes.

——————————————————————————-

FEATURES/UPDATES

——————————————————————————-

* New features in 1.4.4

Cetus 1.4.4 adds two new methods, setStride() and getStride(), to the RangeExpression class for setting and getting stride information of an array access. These new methods allow the stride of the access, which is 1 by default, to be set. This allows more precise analysis of array accesses in the program.

The following example shows the difference between the new and old RangeExpression.

for (int i = 1; i < 10; i += 2)

… = A[i]

The access range for array A is [1:10:2] (1 to 10 with stride 2.) Using the new RangeExpression, this access can be represented by RangeExpression(new IntegerLiteral(1), new IntegerLiteral(10), new IntegerLiteral(2)) Which is a precise representation of these accesses. The old RangeExpression would use the representation RangeExpression(new IntegerLiteral(1), new IntegerLiteral(9)). This is equivalent to [1:9], which overestimates the accesses of array A.

An example usage of the stride information in a compiler analysis can be seen in the Section class where the precise intersection between RangeExpressions with constant stride is implemented. Additional examples can be seen in the unit testing for the new RangeExpression and Section classes (TestTripletCases.java).

In summary:

– Stride information is added to RangeExpression. It can be read and set using the getStride() and setStride() methods.

– The new RangeExpressions constructor is backward compatible with the previous version. All RangeExpression with unspecified stride will be treated as having a stride value of 1.

– A precise intersection operation is implemented for Section class.

——————————————————————————-

CONTENTS

——————————————————————————-

This Cetus release has the following contents.

lib – Archived classes (jar)

src – Cetus source code

antlr_license.txt – ANTLR license

RSyntaxTextArea.License.txt – RSyntaxTextArea license

cetus_license.txt – Cetus license

build.sh – Command line build script

build.xml – Build configuration for Apache Ant

readme.txt – This file

readme_log.txt – Archived release notes

readme_omp2gpu.txt – readme file for OpenMP-to-CUDA translator

——————————————————————————-

REQUIREMENTS

——————————————————————————-

* JAVA SE 6

* ANTLRv2

* GCC (Cygwin GCC-4 for Windows OS)

——————————————————————————-

INSTALLATION

——————————————————————————-

* Obtain Cetus distribution

The latest version of Cetus can be obtained at:

https://sites.udel.edu/cetus-cid/downloads/.

* Binary Version

For binary version (.jar) of Cetus, installation is not needed.

* Unpack

Users need to unpack the distribution before installing Cetus.

$ cd <directory_where_cetus.tar.gz_exists>

$ gzip -d cetus.tar.gz | tar xvf –

* Build

There are several options for building Cetus:

– For Apache Ant users

The provided build.xml defines the build targets for Cetus. The available targets are “compile”, “jar”, “gui”, “clean” and “javadoc”. Users need to edit the location of the Antlr tool.

– For Linux/Unix command line users Run the script build.sh after defining system-dependent variables in the script.

– For SDK (Eclipse, Netbeans, etc) users First, build the parser with the Antlr tool. Then, follow the instructions of each SDK to set up a project.

——————————————————————————-

RUNNING CETUS

——————————————————————————-

Users can run Cetus in the following way:

$ java -classpath=<user_class_path> cetus.exec.Driver <options> <C files>

The “user_class_path” should include the class paths of Antlr, rsyntaxtextarea and Cetus. “build.sh” and “build.xml” provides a target that generates a wrapper script for Cetus users.

– Like previous versions, you can still run command line version of Cetus by running “cetus” or “java -jar cetusgui.jar” plus flags (options) and input C file, e.g. “cetus foo.c” or “java -jar cetusgui.jar foo.c” for processing C file with the default options.

– You can start Cetus GUI by double-clicking cetusgui.jar if your OS supports it. You can also start Cetus GUI by running “java -jar cetusgui.jar” or “java -jar cetusgui.jar -gui” in command line. Starting Cetus GUI through command line should work on all Windows, Linux and Mac. Previous script “cetus” is still working and “cetus gui” starts GUI too.

– If you want to process your C code by Cetus on Windows, a preprocessor, i.e. Cygwin gcc-4.exe and cpp-4.exe), must be installed. However, compiling C code by Cetus with Cygwin on Windows has not been fully tested and is not guaranteed to work. Also, after installing Cygwin on Windows, the path to gcc-4.exe and cpp-4.exe (e.g. C:\\cygwin\\bin) must be set in Environment Variables on Windows.

– The binary version is only for personal and academic use, not for commercial use. The license files of ANTLR and Cetus are also included in cetusgui.jar. We will regularly update the binary version. Please always visit Cetus website and download the latest version.

——————————————————————————-

KNOWN ISSUES

——————————————————————————-

Starting 1.4.0, the automatic loop parallelization was turned ON by default (level 1). We have seen that this may lead to translation failures in certain cases. One such case is of usage of typedef’ed variables in the potential parallel loops. We are working towards fixing this issue.

——————————————————————————-

TESTING

——————————————————————————-

We have tested Cetus successfully using the following benchmark suites:

* SPEC CPU2006

More information about this suite is available at http://www.spec.org

* SPEC OMP2001

More information about this suite is available at http://www.spec.org

* NPB 2.3 written in C

More information about this suite is available at

http://www.hpcs.cs.tsukuba.ac.jp/omni-openmp/

May, 2013

The Cetus Team

2016, Cetus Release 1.4.3

Release Notes 2016

——————————————————————————-

RELEASE

——————————————————————————-

Cetus 1.4.3 version (May 2016) contains minor changes that fixed some Java 8 specific bugs which disallowed Cetus from building.

Cetus 1.4.2 version (Dec 2014), unlike its predecessor (1.4.1), is not a binary release. It is a complete source release for both Cetus command line version and the GUI version.

Cetus is a source-to-source compiler infrastructure for C written in Java, and can be downloaded from https://sites.udel.edu/cetus-cid/downloads/. This version contains a graphic user interface (GUI), a client-server mode and contains minor updates and fixes in the existing passes.

——————————————————————————-

FEATURES/UPDATES

——————————————————————————-

* New features

– Translate your C code through Purdue Cetus remote server

– Compile and run input (sequential) and output (OpenMP) C code and show the charts of speedup and efficiency

– Several demo C codes were added into the binary release, you can add your own C code and remove the existing demo C code

– C code highlight in text area

* Updates

* Bug fixes and improvements

* Updates in flags

——————————————————————————-

CONTENTS

——————————————————————————-

This Cetus release has the following contents.

lib – Archived classes (jar)

src – Cetus source code

antlr_license.txt – ANTLR license

RSyntaxTextArea.License.txt – RSyntaxTextArea license

cetus_license.txt – Cetus license

build.sh – Command line build script

build.xml – Build configuration for Apache Ant

readme.txt – This file

readme_log.txt – Archived release notes

readme_omp2gpu.txt – readme file for OpenMP-to-CUDA translator

——————————————————————————-

REQUIREMENTS

——————————————————————————-

* JAVA SE 6

* ANTLRv2

* GCC (Cygwin GCC-4 for Windows OS)

——————————————————————————-

INSTALLATION

——————————————————————————-

* Obtain Cetus distribution

The latest version of Cetus can be obtained at:

https://sites.udel.edu/cetus-cid/downloads/.

* Binary Version

For binary version (.jar) of Cetus, installation is not needed.

* Unpack

Users need to unpack the distribution before installing Cetus.

$ cd <directory_where_cetus.tar.gz_exists>

$ gzip -d cetus.tar.gz | tar xvf –

* Build

There are several options for building Cetus:

– For Apache Ant users

The provided build.xml defines the build targets for Cetus. The available targets are “compile”, “jar”, “gui”, “clean” and “javadoc”. Users need to edit the location of the Antlr tool.

– For Linux/Unix command line users

Run the script build.sh after defining system-dependent variables in the script.

– For SDK (Eclipse, Netbeans, etc) users

First, build the parser with the Antlr tool.

Then, follow the instructions of each SDK to set up a project.

——————————————————————————-

RUNNING CETUS

——————————————————————————-

Users can run Cetus in the following way:

$ java -classpath=<user_class_path> cetus.exec.Driver <options> <C files>

The “user_class_path” should include the class paths of Antlr, rsyntaxtextarea and Cetus. “build.sh” and “build.xml” provides a target that generates a wrapper script for Cetus users.

– Like previous versions, you can still run command line version of Cetus by running “cetus” or “java -jar cetusgui.jar” plus flags (options) and input C file, e.g. “cetus foo.c” or “java -jar cetusgui.jar foo.c” for processing C file with the default options.

– You can start Cetus GUI by double-clicking cetusgui.jar if your OS supports it. You can also start Cetus GUI by running “java -jar cetusgui.jar” or “java -jar cetusgui.jar -gui” in command line. Starting Cetus GUI through command line should work on all Windows, Linux and Mac. Previous script “cetus” is still working and “cetus gui” starts GUI too.

– If you want to process your C code by Cetus on Windows, a preprocessor, i.e. Cygwin gcc-4.exe and cpp-4.exe), must be installed. However, compiling C code by Cetus with Cygwin on Windows has not been fully tested and is not guaranteed to work. Also, after installing Cygwin on Windows, the path to gcc-4.exe and cpp-4.exe (e.g. C:\\cygwin\\bin) must be set in Environment Variables on Windows.

– The binary version is only for personal and academic use, not for commercial use. The license files of ANTLR and Cetus are also included in cetusgui.jar. We will regularly update the binary version. Please always visit Cetus website and download the latest version.

——————————————————————————-

KNOWN ISSUES

——————————————————————————-

Starting 1.4.0, the automatic loop parallelization was turned ON by default (level 1). We have seen that this may lead to translation failures in certain cases. One such case is of usage of typedef’ed variables in the potential parallel loops. We are working towards fixing this issue.

——————————————————————————-

TESTING

——————————————————————————-

We have tested Cetus successfully using the following benchmark suites:

* SPEC CPU2006

More information about this suite is available at http://www.spec.org

* SPEC OMP2001

More information about this suite is available at http://www.spec.org

* NPB 2.3 written in C

More information about this suite is available at

http://www.hpcs.cs.tsukuba.ac.jp/omni-openmp/

May, 2013

The Cetus Team

2014, Cetus Release 1.4.2

Release Notes 2014

——————————————————————————-

RELEASE

——————————————————————————-

Cetus 1.4.2 version (Dec 2014), unlike its predecessor (1.4.1), is not a binary release. It is a complete source release for both Cetus command line version and the GUI version.

Cetus is a source-to-source compiler infrastructure for C written in Java, and can be downloaded from https://sites.udel.edu/cetus-cid/downloads/. This version contains a graphic user interface (GUI), a client-server mode and contains minor updates and fixes

in the existing passes.

——————————————————————————-

FEATURES/UPDATES

——————————————————————————-

* New features

– Translate your C code through Purdue Cetus remote server

– Compile and run input (sequential) and output (OpenMP) C code and show the charts of speedup and efficiency

– Several demo C codes were added into the binary release, you can add your own C code and remove the existing demo C code

– C code highlight in text area

* Updates

* Bug fixes and improvements

* Updates in flags

——————————————————————————-

CONTENTS

——————————————————————————-

This Cetus release has the following contents.

lib – Archived classes (jar)

src – Cetus source code

antlr_license.txt – ANTLR license

RSyntaxTextArea.License.txt – RSyntaxTextArea license

cetus_license.txt – Cetus license

build.sh – Command line build script

build.xml – Build configuration for Apache Ant

readme.txt – This file

readme_log.txt – Archived release notes

readme_omp2gpu.txt – readme file for OpenMP-to-CUDA translator

——————————————————————————-

REQUIREMENTS

——————————————————————————-

* JAVA SE 6

* ANTLRv2

* GCC (Cygwin GCC-4 for Windows OS)

——————————————————————————-

INSTALLATION

——————————————————————————-

* Obtain Cetus distribution

The latest version of Cetus can be obtained at:

https://sites.udel.edu/cetus-cid/downloads/.

* Binary Version

For binary version (.jar) of Cetus, installation is not needed.

* Unpack

Users need to unpack the distribution before installing Cetus.

$ cd <directory_where_cetus.tar.gz_exists>

$ gzip -d cetus.tar.gz | tar xvf –

* Build

There are several options for building Cetus:

– For Apache Ant users

The provided build.xml defines the build targets for Cetus. The available targets are “compile”, “jar”, “gui”, “clean” and “javadoc”. Users need to edit the location of the Antlr tool.

– For Linux/Unix command line users

Run the script build.sh after defining system-dependent variables in the script.

– For SDK (Eclipse, Netbeans, etc) users

First, build the parser with the Antlr tool.

Then, follow the instructions of each SDK to set up a project.

——————————————————————————-

RUNNING CETUS

——————————————————————————-

Users can run Cetus in the following way:

$ java -classpath=<user_class_path> cetus.exec.Driver <options> <C files>

The “user_class_path” should include the class paths of Antlr, rsyntaxtextarea and Cetus. “build.sh” and “build.xml” provides a target that generates a wrapper script for Cetus users.

– Like previous versions, you can still run command line version of Cetus by running “cetus” or “java -jar cetusgui.jar” plus flags (options) and input C file, e.g. “cetus foo.c” or “java -jar cetusgui.jar foo.c” for processing C file with the default options.

– You can start Cetus GUI by double-clicking cetusgui.jar if your OS supports it. You can also start Cetus GUI by running “java -jar cetusgui.jar” or “java -jar cetusgui.jar -gui” in command line. Starting Cetus GUI through command line should work on all Windows, Linux and Mac. Previous script “cetus” is still working and “cetus gui” starts GUI too.

– If you want to process your C code by Cetus on Windows, a preprocessor, i.e. Cygwin gcc-4.exe and cpp-4.exe), must be installed. However, compiling C code by Cetus with Cygwin on Windows has not been fully tested and is not guaranteed to work. Also, after installing Cygwin on Windows, the path to gcc-4.exe and cpp-4.exe (e.g. C:\\cygwin\\bin) must be set in Environment Variables on Windows.

– The binary version is only for personal and academic use, not for commercial use. The license files of ANTLR and Cetus are also included in cetusgui.jar. We will regularly update the binary version. Please always visit Cetus website and download the latest version.

——————————————————————————-

KNOWN ISSUES

——————————————————————————-

Starting 1.4.0, the automatic loop parallelization was turned ON by default (level 1). We have seen that this may lead to translation failures in certain cases. One such case is of usage of typedef’ed variables in the potential parallel loops. We are working towards fixing this issue.

——————————————————————————-

TESTING

——————————————————————————-

We have tested Cetus successfully using the following benchmark suites:

* SPEC CPU2006

More information about this suite is available at http://www.spec.org

* SPEC OMP2001

More information about this suite is available at http://www.spec.org

* NPB 2.3 written in C

More information about this suite is available at

https://www.nas.nasa.gov/software/npb.html

May, 2013

The Cetus Team

2013, Cetus Release 1.4.1

Release Notes May 2013

——————————————————————————-

RELEASE

——————————————————————————-

Cetus 1.4.1 Binary Release (May/2013)

Cetus 1.4.1 is only a binary release and a full release is forthcoming.

Cetus is a source-to-source compiler infrastructure for C written in Java, and can be downloaded from https://sites.udel.edu/cetus-cid/downloads/. This version contains a graphic user interface (GUI), a client-server mode and contains minor updates and fixes

in the existing passes.

——————————————————————————-

FEATURES/UPDATES

——————————————————————————-

* New features

– Compile and run input (sequential) and output (OpenMP) C code and show the charts of speedup and efficiency

– Several demo C codes were added into the binary release, you can add your own C code and remove the existing demo C code

– C code highlight in text area

* Updates

* Bug fixes and improvements

* Updates in flags

——————————————————————————-

CONTENTS

——————————————————————————-

This Cetus release has the following contents.

lib – Archived classes (jar)

src – Cetus source code

antlr_license.txt – ANTLR license

RSyntaxTextArea.License.txt – RSyntaxTextArea license

cetus_license.txt – Cetus license

build.sh – Command line build script

build.xml – Build configuration for Apache Ant

readme.txt – This file

readme_log.txt – Archived release notes

readme_omp2gpu.txt – readme file for OpenMP-to-CUDA translator

——————————————————————————-

REQUIREMENTS

——————————————————————————-

* JAVA SE 6

* ANTLRv2

* GCC (Cygwin GCC-4 for Windows OS)

——————————————————————————-

INSTALLATION

——————————————————————————-

* Obtain Cetus distribution

The latest version of Cetus can be obtained at:

https://sites.udel.edu/cetus-cid/downloads/

* Binary Version

For binary version (.jar) of Cetus, installation is not needed.

* Unpack

Users need to unpack the distribution before installing Cetus.

$ cd <directory_where_cetus.tar.gz_exists>

$ gzip -d cetus.tar.gz | tar xvf –

* Build

There are several options for building Cetus:

– For Apache Ant users

The provided build.xml defines the build targets for Cetus. The available targets are “compile”, “jar”, “clean” and “javadoc”. Users need to edit the location of the Antlr tool.

– For Linux/Unix command line users

Run the script build.sh after defining system-dependent variables in the script.

– For SDK (Eclipse, Netbeans, etc) users

First, build the parser with the Antlr tool. Then, follow the instructions of each SDK to set up a project.

——————————————————————————-

RUNNING CETUS

——————————————————————————-

Users can run Cetus in the following way:

$ java -classpath=<user_class_path> cetus.exec.Driver <options> <C files>

The “user_class_path” should include the class paths of Antlr and Cetus. “build.sh” and “build.xml” provides a target that generates a wrapper script for Cetus users.

– Like previous versions, you can still run command line version of Cetus by running “cetus” or “java -jar cetusgui.jar” plus flags (options) and input C file, e.g. “cetus foo.c” or “java -jar cetusgui.jar foo.c” for processing C file with the default options.

– You can start Cetus GUI by double-clicking cetusgui.jar if your OS supports it. You can also start Cetus GUI by running “java -jar cetusgui.jar” or “java -jar cetusgui.jar -gui” in command line. Starting Cetus GUI through command line should work on all Windows, Linux and Mac. Previous script “cetus” is still working and “cetus gui” starts GUI too.

– If you want to process your C code by Cetus on Windows, a preprocessor, i.e. Cygwin gcc-4.exe and cpp-4.exe), must be installed. However, compiling C code by Cetus with Cygwin on Windows has not been fully tested and is not guaranteed to work. Also, after installing Cygwin on Windows, the path to gcc-4.exe and cpp-4.exe (e.g. C:\\cygwin\\bin) must be set in Environment Variables on Windows.

– The binary version is only for personal and academic use, not for commercial use. The license files of ANTLR and Cetus are also included in cetusgui.jar. We will regularly update the binary version. Please always visit Cetus website and download the latest version.

——————————————————————————-

TESTING

——————————————————————————-

We have tested Cetus successfully using the following benchmark suites:

* SPEC CPU2006

More information about this suite is available at http://www.spec.org

* SPEC OMP2001

More information about this suite is available at http://www.spec.org

* NPB 2.3 written in C

More information about this suite is available at

http://www.hpcs.cs.tsukuba.ac.jp/omni-openmp/

May, 2013

The Cetus Team

2013, Cetus Release 1.4.0

Release Notes Jan 2013

——————————————————————————-

RELEASE

——————————————————————————-

Cetus 1.4.0 Binary Release (January 24, 2013)Cetus 1.4.0 is only a binary release and a full release is forthcoming.

 

Cetus is a source-to-source compiler infrastructure for C written in Java, and can be downloaded from https://sites.udel.edu/cetus-cid/downloads/. This version added a graphic user interface (GUI) and contains minor updates and fixes in the existing passes.

——————————————————————————-

FEATURES/UPDATES

——————————————————————————-

* New features

– Added GUI into Cetus. GUI can be started by adding flag “-gui”.

– Turning off all flags makes the most powerful options. Running “cetus foo.c” or “java -jar cetusgui.jar foo.c” turns on the following options implicitly:

-parser=cetus.base.grammars.CetusCParser

-induction=3

-outdir=cetus_output

-preprocessor=cpp-3.exe -E (for Windows)

-preprocessor=cpp -C -I. (for Linux and Mac)

-privatize=2

-reduction=2

-verbosity=0

-ddt=2

-parallelize-loops=1

-ompGen=1

-alias=1

-range=1

-teliminate-branch=1

-profitable-omp=1

– Cetus version check: Cetus will automatically check cetus.ecn.purdue.edu and remind user if new version is available.

* Updates

– Some numbers in options have been changed.

* Bug fixes and improvements

* Updates in flags

——————————————————————————-

CONTENTS

——————————————————————————-

This Cetus release has the following contents.

lib – Archived classes (jar)

src – Cetus source code

license_antlr.txt – ANTLR license

license.txt – Cetus license

build.sh – Command line build script

build.xml – Build configuration for Apache Ant

readme.txt – This file

readme_log.txt – Archived release notes

readme_omp2gpu.txt – readme file for OpenMP-to-CUDA translator

——————————————————————————-

REQUIREMENTS

——————————————————————————-

* JAVA SE 6

* ANTLRv2

* GCC (Cygwin GCC for Windows OS)

——————————————————————————-

INSTALLATION

——————————————————————————-

* Obtain Cetus distribution

The latest version of Cetus can be obtained at:

https://sites.udel.edu/cetus-cid/downloads/

* Binary Version

For binary version (.jar) of Cetus, installation is not needed.

* Unpack

Users need to unpack the distribution before installing Cetus.

$ cd <directory_where_cetus.tar.gz_exists>

$ gzip -d cetus.tar.gz | tar xvf –

* Build

There are several options for building Cetus:

– For Apache Ant users

The provided build.xml defines the build targets for Cetus. The available targets are “compile”, “jar”, “clean” and “javadoc”. Users need to edit the location of the Antlr tool.

– For Linux/Unix command line users

Run the script build.sh after defining system-dependent variables in the script.

– For SDK (Eclipse, Netbeans, etc) users

First, build the parser with the Antlr tool.Then, follow the instructions of each SDK to set up a project.

——————————————————————————-

RUNNING CETUS

——————————————————————————-

Users can run Cetus in the following way:

$ java -classpath=<user_class_path> cetus.exec.Driver <options> <C files>

The “user_class_path” should include the class paths of Antlr and Cetus. “build.sh” and “build.xml” provides a target that generates a wrapper script for Cetus users.

– Like previous versions, you can still run command line version of Cetus by running “cetus” or “java -jar cetusgui.jar” plus flags (options) and input C file, e.g. “cetus foo.c” or “java -jar cetusgui.jar foo.c” for

processing C file with the default options.

– You can start Cetus GUI by double-clicking cetusgui.jar if your OS supports it. You can also start Cetus GUI by running “java -jar cetusgui.jar” or “java -jar cetusgui.jar -gui” in command line. Starting Cetus GUI through command

line should work on all Windows, Linux and Mac. Previous script “cetus” is still working and “cetus gui” starts GUI too.

– If you want to process your C code by Cetus on Windows, a preprocessor, i.e. Cygwin gcc (cpp-3.exe), must be installed. However, compiling C code by Cetus with Cygwin on Windows has not been fully tested and is not guaranteed to

work. Also, after installing Cygwin on Windows, the path to cpp-3.exe (e.g. C:\\cygwin\\bin) must be set in Environment Variables on Windows.

– The binary version is only for personal and academic use, not for commercial use. The license files of ANTLR and Cetus are also included in cetusgui.jar. We will regularly update the binary version. Please always visit Cetus website

and download the latest version.

——————————————————————————-

TESTING

——————————————————————————-

We have tested Cetus successfully using the following benchmark suites:

* SPEC CPU2006

More information about this suite is available at http://www.spec.org

* SPEC OMP2001

More information about this suite is available at http://www.spec.org

* NPB 2.3 written in C

More information about this suite is available at

http://www.hpcs.cs.tsukuba.ac.jp/omni-openmp/

January 24, 2013

The Cetus Team

2012, Cetus Release 1.3.1

Release Notes 2012

——————————————————————————-

RELEASE

——————————————————————————-

Cetus 1.3.1 (June 05, 2012)

Cetus is a source-to-source compiler infrastructure for C written in Java, and can be downloaded from https://sites.udel.edu/cetus-cid/downloads/. This version contains minor updates and fixes in the existing passes.

——————————————————————————-

FEATURES/UPDATES

——————————————————————————-

* New features

– Added partial support for c99 features including mixed declarations and code, new block scope for iteration statements, designated initializers, compound literals, hexadecimal floating constants, and restrict pointers.

– Added slicing tools in the cetus.application package (experimental).

* Bug fixes and improvements

– Fixed a bug in IR consistency checker which was not strong enough to check a certain type of garbled IR.

– Fixed a bug in the branch eliminator which was not removing code section in certain types of “if” statements.

– Fixed a bug in the IRTools.isReachable() method.

– Enhanced the accuracy of the data dependence graph by excluding unreachable dependence pair under the “equal” direction.

– Fixed a bug in the data dependence test which was not doing the merge operation of direction vectors in certain types of coupled subscripts.

– Fixed a bug in the parser which was not handling certain types of struct declaration with bit fields.

– Fixed a bug in the induction variable substitution pass which was failing to generate runtime test for possible zero-trip loops in some cases.

* Updates in flags

– Modified flags

-induction=N

Added sub options which processes only linear induction variables.

-privatize=N

Added sub options which processes only scalar variables.

——————————————————————————-

CONTENTS

——————————————————————————-

This Cetus release has the following contents.

lib – Archived classes (jar)

license.txt – Cetus license

build.sh – Command line build script

build.xml – Build configuration for Apache Ant

src – Cetus source code

readme.txt – This file

readme_log.txt – Archived release notes

readme_omp2gpu.txt – readme file for OpenMP-to-CUDA translator

——————————————————————————-

REQUIREMENTS

——————————————————————————-

* JAVA SE 6

* ANTLRv2

* GCC

——————————————————————————-

INSTALLATION

——————————————————————————-

* Obtain Cetus distribution

The latest version of Cetus can be obtained at:

https://sites.udel.edu/cetus-cid/downloads/

* Unpack

Users need to unpack the distribution before installing Cetus.

$ cd <directory_where_cetus.tar.gz_exists>

$ gzip -d cetus.tar.gz | tar xvf –

* Build

There are several options for building Cetus:

– For Apache Ant users

The provided build.xml defines the build targets for Cetus. The available targets are “compile”, “jar”, “clean” and “javadoc”. Users need to edit the location of the Antlr tool.

– For Linux/Unix command line users

Run the script build.sh after defining system-dependent variables in the script.

– For SDK (Eclipse, Netbeans, etc) users

Follow the instructions of each SDK.

——————————————————————————-

RUNNING CETUS

——————————————————————————-

Users can run Cetus in the following way:

$ java -classpath=<user_class_path> cetus.exec.Driver <options> <C files>

The “user_class_path” should include the class paths of Antlr and Cetus. “build.sh” and “build.xml” provides a target that generates a wrapper script for Cetus users.

——————————————————————————-

TESTING

——————————————————————————-

We have tested Cetus successfully using the following benchmark suites:

* SPEC CPU2006

More information about this suite is available at http://www.spec.org

* SPEC OMP2001

More information about this suite is available at http://www.spec.org

* NPB 2.3 written in C

More information about this suite is available at

http://www.hpcs.cs.tsukuba.ac.jp/omni-openmp/

June XX, 2012

The Cetus Team