PM-Programming-Language
所属分类:超算/并行计算
开发工具:Fortran
文件大小:0KB
下载次数:0
上传日期:2023-05-04 21:07:51
上 传 者:
sh-1993
说明: 一种开源并行编程语言,旨在进行数值建模。编译为Fortran MPI,
(An open source parallel programming language aimed at numerical modelling. Compiles to Fortran MPI,)
文件列表:
License.txt (1151, 2023-11-30)
PM-LOGO.png (54014, 2023-11-30)
config/ (0, 2023-11-30)
config/sysdep.f90 (7485, 2023-11-30)
doc/ (0, 2023-11-30)
doc/PM Definition 0_4_01.docx (319591, 2023-11-30)
doc/PM Definition 0_4_02.docx (317292, 2023-11-30)
examples/ (0, 2023-11-30)
examples/jacobi.pmm (609, 2023-11-30)
examples/jacobi_cyclic_bounds.pmm (694, 2023-11-30)
examples/poly.pmm (2227, 2023-11-30)
pm/ (0, 2023-11-30)
pm/Makefile (3882, 2023-11-30)
pmc/ (0, 2023-11-30)
pmc/Makefile (3965, 2023-11-30)
pmc/make_runtime (147, 2023-11-30)
src/ (0, 2023-11-30)
src/array.f90 (196591, 2023-11-30)
src/cfortran.f90 (226279, 2023-11-30)
src/cfortran.save.f90 (219112, 2023-11-30)
src/cmain.f90 (6011, 2023-11-30)
src/codegen.f90 (352211, 2023-11-30)
src/fesize.inc (1334, 2023-11-30)
src/fisname.inc (1345, 2023-11-30)
src/fisnull.inc (1346, 2023-11-30)
src/fistiny.inc (1348, 2023-11-30)
src/fname.inc (1416, 2023-11-30)
src/fnew.inc (1910, 2023-11-30)
src/fnewnc.inc (1818, 2023-11-30)
src/fnewusr.inc (1964, 2023-11-30)
src/foo.f90 (1270, 2023-11-30)
src/ftiny.inc (1425, 2023-11-30)
src/ftypeno.inc (1424, 2023-11-30)
src/ftypeof.inc (1398, 2023-11-30)
src/fvkind.inc (1318, 2023-11-30)
src/hash.f90 (35457, 2023-11-30)
src/infer.f90 (138767, 2023-11-30)
src/kinds.f90 (3272, 2023-11-30)
... ...
![ PM logo ](https://github.com/PM-LOGO.png)
# PM Programming Language
## [www.pm-lang.org](https://github.comhttp://www.pm-lang.org)
## Overview
The PM Programming Language is designed to facilitate the creation
of numerical models on parallel systems. It combines concepts of
parallelisation and vectorisation into a unified model using a 'strand'
as a basic unit of parallelisation. A strand is a very lightweight
entity that does not require its own stack and can map to a single execution
of a loop body. Strands are used in both data and task parallelism and can communicate
with other strands, including those running on other nodes. PM uses a modified form of
the Partitioned Global Address Space approach which builds synchronisation into basic operations
and excludes race conditions.
The PM compiler currently cross-compiles to Fortran+MPI. More target language/library
combinations are planned, including Fortran-MPI-OpenMP and accelerator support (initially
via either OpenMP or OpenACC)
The PM interpreter uses a parallel virtual machine and is designed for debugging PM code.
The language specification (available in /doc) while incomplete in places, will give
a good view of the features of the version 0.4 of the language.
## Status
This is a pre-release version of the PM language. While syntax and semantics are now well
developed, there may be further changes to both in response to feedback.
The implementation is not yet fully free of bugs or unimplemented features. If you encounter
a problem, then please check the latest code on GitHub. If this does not work, then please
raise an issue.
## Contribution
This is an open source project and outside contributions are entirely welcome.
At this stage the most effective contributions are in the are of testing and
feedback on the language design and implementation.
A refactoring of compiler/interpreter source code is underway for version 0.5.
One goal of this will be to make the code more accessible to outside contributors.
In the meantime, bug-fix contributions to the source code by the brave are certainly welcome.
## Installation and use
This is an initial release of version 0.4 of the language. At the moment
the code is designed to be compiled and installed on a Linux system with
MPI. It should be possible to compile on other systems with MPI and Fortan.
To compile PM:
Make sure you have MPI installed and loaded and can run mpifort and mpirun
The current setup is developed on Fedora with gfortran and openmp. You
can edit pm/Makefile and pmc/Makefile to change compilers.
The code should be fairly portable. Portability issues may be addressed by
editing config/sysdep.f90 (read the comments)
To compile the interpreter:
cd pm
make clean
make
You can then run the interpreter (./pm --help for options)
mpirun the interpreter for distributed execution.
To compile PM-to-Fortran compiler:
cd pmc
make clean
make
To compile a PM program to Fortran use ./pmc (./pmc --help for options)
The pmc compiler does not use MPI.
The compiled code will appear as PMOUT.F90 and will need to be compiled using mpifort.
You can then mpirun the resulting executable.
Both compiler and interpreter expect PM source files to have a .pmm extension.
## Watch out for continuing updates.
近期下载者:
相关文件:
收藏者: