All Projects → spcl → open-earth-compiler

spcl / open-earth-compiler

Licence: other
development repository for the open earth compiler

Programming Languages

MLIR
15 projects
C++
36643 projects - #6 most used programming language
CMake
9771 projects
python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to open-earth-compiler

WorldWeather
The largest three-dimensional web-based interactive browser of satellite, weather, climate, and other time-aware geospatial data on the web, built upon NASA's revolutionary WorldWind technology.
Stars: ✭ 49 (-2%)
Mutual labels:  weather, climate
mptrac
Massive-Parallel Trajectory Calculations (MPTRAC) is a Lagrangian particle dispersion model for the analysis of atmospheric transport processes in the troposphere and stratosphere.
Stars: ✭ 19 (-62%)
Mutual labels:  climate, high-performance-computing
climateR
An R 📦 for getting point and gridded climate data by AOI
Stars: ✭ 93 (+86%)
Mutual labels:  weather, climate
gribr
GRIB interface for R using ECMWF ecCodes
Stars: ✭ 18 (-64%)
Mutual labels:  weather, climate
HydroData
An R 📦 for finding and getting geospatial earth systems data
Stars: ✭ 30 (-40%)
Mutual labels:  weather, climate
wxee
A Python interface between Earth Engine and xarray for processing time series data
Stars: ✭ 113 (+126%)
Mutual labels:  weather, climate
climate-app
Climate App é uma aplicação responsável por mostrar dados climáticos (temperatura atual, umidade, velocidade do vento etc) de uma determinada cidade em tempo real. A obtenção desses dados foi feita através da open-weather-api.
Stars: ✭ 40 (-20%)
Mutual labels:  weather, climate
psyplot
Python package for interactive data visualization
Stars: ✭ 64 (+28%)
Mutual labels:  climate
descent
Elegant now playing display for Last.fm showing song metadata and local weather.
Stars: ✭ 97 (+94%)
Mutual labels:  weather
d3-stencil
Charts built with D3 and Stencil. Framework-agnostic, simple.
Stars: ✭ 65 (+30%)
Mutual labels:  stencil
dwdweather2
Python client to access weather data from Deutscher Wetterdienst (DWD), the federal meteorological service in Germany.
Stars: ✭ 68 (+36%)
Mutual labels:  weather
QUB DW HighPerformancePython
Code and more for the QUB Development Weeks event 'High Performance Python'
Stars: ✭ 79 (+58%)
Mutual labels:  high-performance-computing
Weather
用WPF写的日历天气桌面小程序
Stars: ✭ 44 (-12%)
Mutual labels:  weather
weather-app
⛅ Check the current weather in any city on the planet.
Stars: ✭ 86 (+72%)
Mutual labels:  weather
Beauty
从中央天气网获取七天天气数据http://www.weather.com.cn/ 搜索框联想功能,根据输入联想位置名称和城市代码 窗体呈现,每一个卡片在hover时有三个动画,上升一定高度,阴影渐变出现,offset渐变增加,卡片上方按钮渐变出现
Stars: ✭ 16 (-68%)
Mutual labels:  weather
natsuha-weather
Natsuha Weather for WeChat Mini Program.
Stars: ✭ 33 (-34%)
Mutual labels:  weather
yahoo-weather-java-api
A Java API for the yahoo weather service
Stars: ✭ 26 (-48%)
Mutual labels:  weather
cfdm
A Python reference implementation of the CF data model
Stars: ✭ 24 (-52%)
Mutual labels:  climate
pluvia weather flutter
A weather app with beautiful animations, built with Flutter. Uses the OpenWeatherMap API and MapBox API.
Stars: ✭ 114 (+128%)
Mutual labels:  weather
parPE
Parameter estimation for dynamical models using high-performance computing, batch and mini-batch optimizers, and dynamic load balancing.
Stars: ✭ 16 (-68%)
Mutual labels:  high-performance-computing

The Open Earth Compiler

Development repository for the Open Earth Compiler. The compiler implements a stencil dialect and transformations that lower stencil programs to efficient GPU code.

Publication

A detailed discussion of the Open Earth Compiler can be found here:

Domain-Specific Multi-Level IR Rewriting for GPU

Build Instructions

This setup assumes that you have built LLVM and MLIR in $BUILD_DIR and installed them to $PREFIX. To build and launch the tests, run

mkdir build && cd build
cmake -G Ninja .. -DMLIR_DIR=$PREFIX/lib/cmake/mlir -DLLVM_EXTERNAL_LIT=$BUILD_DIR/bin/llvm-lit
cmake --build . --target check-oec-opt

The ROCM_BACKEND_ENABLED flag enables the support for AMDGPU targets. It requires an LLVM build including lld and we need to set the path to lld using the following flag:

-DLLD_DIR=$PREFIX/lib/cmake/lld

To build the documentation from the TableGen description of the dialect operations, run

cmake --build . --target mlir-doc

Note: Make sure to pass -DLLVM_INSTALL_UTILS=ON when building LLVM with CMake in order to install FileCheck to the chosen installation prefix.

LLVM Build Instructions

The repository depends on a build of LLVM including MLIR. The Open Earth Compiler build has been tested with LLVM commit e59d336e75f4 using the following configuration:

cmake -G Ninja ../llvm -DLLVM_BUILD_EXAMPLES=OFF -DLLVM_TARGETS_TO_BUILD="host;NVPTX;AMDGPU" -DCMAKE_INSTALL_PREFIX=<install_root> -DLLVM_ENABLE_PROJECTS='mlir;lld' -DLLVM_OPTIMIZED_TABLEGEN=ON -DLLVM_ENABLE_OCAMLDOC=OFF -DLLVM_ENABLE_BINDINGS=OFF -DLLVM_INSTALL_UTILS=ON -DCMAKE_LINKER=<path_to_lld> -DLLVM_PARALLEL_LINK_JOBS=2

Note: Apply all patches found in the patch folder using git apply:

git apply ../stencil-dialect/patches/runtime.patch

Compiling an Example Stencil Program

The following command lowers the laplace example stencil to NVIDIA GPU code:

oec-opt --stencil-shape-inference --convert-stencil-to-std --cse --parallel-loop-tiling='parallel-loop-tile-sizes=128,1,1' --canonicalize --test-gpu-greedy-parallel-loop-mapping --convert-parallel-loops-to-gpu --canonicalize --lower-affine --convert-scf-to-std --stencil-kernel-to-cubin ../test/Examples/laplace.mlir > laplace_lowered.mlir

NOTE: Use the command line flag --stencil-kernel-to-hsaco for AMD GPUs.

The tools mlir-translate and llc then convert the lowered code to an assembly file and/or object file:

mlir-translate --mlir-to-llvmir laplace_lowered.mlir > laplace.bc
llc -O3 laplace.bc -o laplace.s
clang -c laplace.s -o laplace.o

The generated object then exports the following method:

void _mlir_ciface_laplace(MemRefType3D *input, MemRefType3D *output);
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].