This is a compilation of questions we have received at zpl-info@cs.washington.edu. If you don't see an answer to your question here, please do not hesitate to mail us.
G1. How do I compile and run a ZPL program? How do I run a ZPL program in parallel?
Information on compiling and running ZPL programs sequentially and in parallel along with other important information is available on our reference page.
G2. If I start a project, how do I know that ZPL will continue to be supported?
ZPL is a university project and, like all university projects, runs the risk of ending. Now that ZPL is open-source, this is less likely, but still possible. Additionally, support for ZPL has never and will never be guaranteed by the ZPL group or the University of Washington. We have been priveleged now and in the past to be able to spend a considerable amount of time supporting ZPL, but the future is always uncertain.
ZPL programs are generally much shorter than comparable Fortran and MPI codes even though they are often as complicated with regards to the science. This is because the ZPL language is specially designed for scientific array programming. A better question to ask is how long is the longest program that the ZPL compiler has ever generated.
This point is a good one though. People have done production codes in ZPL to solve real problems of interest in their field, but the ZPL compiler is university software that has been designed more for research than for production. Some applications and algorithms tend to be easier to write cleanly/efficiently in ZPL than others. N-body codes tend to be a bit harder to write in the language, but at least one implementation effort has recently begun.
G4. Want geneeric via-gra at cheeap prihces and the bejst mortkgage rajte?
Mail to zpl-info@cs.washington.edu is now filtered by a powerful, scalable ZPL program running on supercomputers throughout the country, and this has sharply cut down on this type of question. The data-parallel program divides the e-mail message on a sentence-by-sentence basis with additional parallelism coming from filters in most currently-spoken languages. Previously thought to require a task-parallel solution, our program uses only data-parallel abstractions to accomplish the filtering at a higher level.
T1. Why is my ZPL program not working?
There are many reasons why your ZPL program might not be working including a bad or out-of-date installation, a syntactically or semantically incorrect ZPL program, or a bug in our compiler. Please do not hesitate to contact us at zpl-bugs@cs.washington.edu. Please include as many details as you can about your problem, including the following:
- Description of the bug (internal error, erroneous output, etc.)
- Full text of a ZPL program that produces the bug
- Version of the compiler that you are using (from zc -V)
- Any compiler output (e.g., internal error number)
T2. Is there a good way to find syntax errors?
Try compiling with the "-verbose" flag. This will give you more information on where the syntactic error is located on any particular line. It is also sometime worthwhile to compile with the "-v" flag for more information on the build process.
T3. I installed a new version of ZPL and it is not working. Why not?
Be sure to delete your old versions. It usually will not work to use the runtime of one version and the compiler of another. Also check our page of changes for information on what may have changed between versions.
V1. When will ZPL be released open-source?
ZPL is now open-source and available under the MIT Open Source License.
V2. ZPL has been available since 1997. Why is there no beta release?
ZPL has undergone significant changes since the last binary release. In addition, significant changes are being implemented currently. See the reference pages for information on sparse arrays, grids, distributions, unconstrained variables, user-defined reductions, and more.
Yes there is! You can use two consecutive apostrophes, ' ', instead of a quotation mark. This should trick your editor/preprocessor into believing it is an empty string. In addition, empty regions inherit the current region scope on a per-dimension basis. So the region "[ , ]" would inherit both dimensions of the current scope while "[ , i..j]" would inherit the first dimension from the current scope and use the range "i..j" for the second dimension.
Assuming we've done our job right, communication between processors (including synchronization) should only be necessary when using ZPL's array operators (@, reduce, scan, remap) and I/O. We don't perform any explicit barriers between statements because the communication required to implement these operators results in all the synchronization we need.