| Both sides previous revision Previous revision Next revision | Previous revision |
| index [2018/03/10 08:55] – sbs | index [2026/01/27 09:19] (current) – jaaldering |
|---|
| {{ :wall.png?nolink&600|}} | {{ :wall.png?nolink&600|}} |
| **S**ingle-**A**ssignment **C** is an array programming language predominantly suited for application areas such as numerically intensive applications and signal processing. Its distinctive feature is that it combines //high-level program specifications// with //runtime efficiency// similar to that of hand-optimized low-level specifications. Key to the optimization process that facilitates these runtimes is the underlying //functional model// which also constitutes the basis for //implicit parallelisation//. This makes SAC ideally suited for harnessing the full potential of a wide variety of modern architectures ranging from a few symmetric cores with shared memory to massively parallel systems that host heterogeneous components including GPUs and FPGAs. | ==== About SaC ==== |
| | |
| | **S**ingle-**A**ssignment **C** is an array programming language predominantly suited for application areas such as numerically intensive applications and signal processing. |
| | Its distinctive feature is that it combines //high-level program specifications// with //runtime efficiency// similar to that of hand-optimized low-level specifications. |
| | Key to the optimization process that facilitates these runtimes is the underlying //functional model// which also constitutes the basis for //implicit parallelisation//. |
| | This makes SAC ideally suited for harnessing the full potential of a wide variety of modern architectures ranging from a few symmetric cores with shared memory to massively parallel systems that host heterogeneous components including GPUs and FPGAs. |
| | |
| | The overall philosophy of the project is to combine [[hppp|high performance, high productivity and high portability]] under the hood of one compiler: //Being able to write a program, or at least the compute intensive part of a program in a high-level style, quickly and leaving a compiler to figure out the details of the underlying architecture and details of the code transformation, leads to performance competitiveness with hand-optimised low-level codes.// |
| | This vision drives a number of research activities around SaC. |
| |
| The overall philosophy of the project is to combine [[hppp|high performance, high productivity and high portability]] under the hood of one compiler: //Being able to write a program, or at least the compute intensive part of a program in a high-level style, quickly and leaving a compiler to figure out the details of the underlying architecture and details of the code transformation, leads to performance competitiveness with hand-optimised low-level codes.// This vision drives a number of research activities around SaC. | |
| \\ \\ | |
| To give you a little taste and feel of SaC, here an example on how the all pair N-body problem can be almost literally transliterated from its mathematical formulation into a valid SaC program: | To give you a little taste and feel of SaC, here an example on how the all pair N-body problem can be almost literally transliterated from its mathematical formulation into a valid SaC program: |
| <grid> | <grid> |
| </col> | </col> |
| <col sm="7"> | <col sm="7"> |
| \\ | |
| <code C> | <code C> |
| p = p + v * dt; | p = p + v * dt; |
| </grid> | </grid> |
| |
| We are interested in research as well as in applications that can feed into our vision of [[hppp|high performance, high productivity and high portability]]. We are open for collaboration and contributions on various levels, be it academically or commercially motivated. | ==== Getting Started ==== |
| | |
| | For an interactive, no-install experience, you can try out one of our docker images available through [[https://github.com/SacBase/Docker|GitHub]] or directly on [[https://hub.docker.com/u/sacbase|DockerHub]]. |
| | Before you start, [[https://docs.docker.com/engine/install/|install Docker]] or [[https://docs.docker.com/desktop/setup/install/windows-install/|Docker desktop]] and make sure you can run the [[https://hub.docker.com/_/hello-world/|hello world]] example. |
| | |
| | For first time users we recommend the interactive Jupyter Notebook environment. |
| | In a terminal, run the following command start the SaC Jupyter container. |
| | Multiple URLs will appear, open the one starting with ''127.0.0.1''. |
| | |
| | <code bash> |
| | sudo docker run -p 8888:8888 sacbase/sac-jupyter-notebook |
| | </code> |
| | |
| | * ''-p 8888:8888'' maps port 8888 from the host to port 8888 on the container. |
| | |
| | Most likely you will want to access an existing notebook on your system. |
| | You can use a [[https://docs.docker.com/engine/storage/bind-mounts/|bind mount]] for this. |
| | Open a terminal and change directory to where your existing notebook is. |
| | Then, run the following command. |
| | |
| | <code bash> |
| | sudo docker run --rm -p 8888:8888 -v "$(pwd):/home/jovyan/work" sacbase/sac-jupyter-notebook |
| | </code> |
| | |
| | * ''--rm'' removes the container once it is done running. |
| | * ''-v'' tells Docker to mount your current working directory to `/home/jovyan/work` inside the container. The Jupyter image's root directory is `/home/jovyan` and you can only access or save notebooks to that directory in the container. |
| | |
| | For installing the SaC eco-system, visit our [[download:main|download]] page and the [[docs:main|docs]] section, find out about the research we have done and are doing in the ''Research'' section, or get in touch with our [[team| contributors]], either directly by email or via our [[slack|Slack Server]] or our [[mailing_lists|mailing lists]] from ''Community'' section of this web-site. |
| | |
| | ==== SaC User Fora ==== |
| | |
| | We try to bring together SaC users through various platforms. Besides our [[slack|Slack Server]] and our [[mailing_lists|mailing lists]] we now also have a mini-blog [[saczilla|SaCzilla]] in the ''Community'' section of this web-site where users can post their SaC experiences. |
| | |
| | ==== Collaboration ==== |
| | |
| | We are interested in research as well as in applications that can feed into our vision of [[hppp|high performance, high productivity and high portability]]. |
| | We are open for collaboration and contributions on various levels, be it academically or commercially motivated. |
| | Just get in touch! |
| |
| Visit our [[download:main|download]] page and the [[docs:main|docs]] section for getting started, find out about the research we have done and are doing in the ''Research'' section, or get in touch with our [[team| contributors]], either directly or via our [[mailing_lists|mailing lists]] from ''Community'' section of this web-site. | |