gt4py
Python library for generating high-performance implementations of stencil kernels for weather and climate modeling from a domain-specific language (DSL).
파일 탐색기
최종 버전 다운로드 (.zip)- SKILL.md
- settings.json
- skills
- base.yml
- dace-determinism.yml
- default.yml
- Dockerfile
- launch.json
- devcontainer.json
- Dockerfile
- setup.sh
- action.yml
- coverage_info_to_env.py
- documentation.yml
- eve_coverage.yml
- gt4py-sphinx.yml
- gt4py_coverage.yml
- template_coverage.yml
- code-quality.yml
- daily-ci.yml
- deploy-release.yml
- test-components.yml
- test-examples.yml
- test-package.yml
- copilot-instructions.md
- pull_request_template.md
- launch.json
- settings.json
- opencode.jsonc
- workflow.dia
- workflow.svg
- axis_offsets.svg
- gdp-0000-gdp-process.rst
- gdp-0001-standalone-cli.rst
- gdp-0002-regions.rst
- gdp-0003-duck-storage.rst
- gdp-index.rst
- gdp-template.rst
- README.md
- backend-cuda.md
- README.md
- dace-cpu-kfirst.md
- dace-cpu-KJI.md
- dace-schedule-tree.md
- dace-version.md
- dace.md
- debug.md
- README.md
- 2d-temporaries.md
- indexing-absolute-k.md
- iteration-index-k.md
- README.md
- runtime-intervals.md
- IntEnum.md
- lazy-functions.md
- literal-precision.md
- README.md
- round-functions.md
- compiler-detection.md
- experimental-features.md
- README.md
- 0011-on-the-fly-overview.svg
- logo.svg
- 0001-Field_View_Frontend_Design.md
- 0002-Field_View_Lowering.md
- 0003-Iterator_View_Tuple_Support_for_Fields.md
- 0004-Lifted_Stencils_with_Tuple_Return.md
- 0005-Extending_Iterator_IR.md
- 0006-Cpp-Backend.md
- 0007-Fencil-Processors.md
- 0008-Mapping_Domain_to_Cpp-Backend.md
- 0009-Compiled-Backend-Integration.md
- 0010-Domain_in_Field_View.md
- 0011-On_The_Fly_Compilation.md
- 0012-GridTools_Cpp_OTF_Steps.md
- 0013-Scalar_vs_0d_Fields.md
- 0014-DaCe_backend.md
- 0015-Test_Exclusion_Matrices.md
- 0016-Multiple-Backends-and-Build-Systems.md
- 0017-Toolchain-Configuration.md
- 0018-Canonical_SDFG_in_GT4Py_Transformations.md
- 0019-Connectivities.md
- 0020-Runtime-domains.md
- 0021-Argument-Descriptors.md
- 0022-Limitations-of-embedded-concat_where.md
- 0023-Fingerprinting.md
- 0024-Compilation-Runners.md
- 0025-Crash_Consistent_Build_Caches.md
- 0026-Staggered_Dimensions.md
- 0027-External_Workspace_Memory.md
- README.md
- README.md
- Template.md
- error-messages.md
- ci-infrastructure.md
- cscs-ci.md
- release.md
- onboarding.md
- .gitignore
- cscs.css
- .gitignore
- logo.svg
- apiref.rst
- arrays.rst
- conf.py
- gtscript.rst
- index.rst
- indices.rst
- lang_design.rst
- license.rst
- Makefile
- quickstart.rst
- stencil.png
- HackTheToolchain.md
- WorkflowPatterns.md
- 1_simple_addition.ipynb
- 1_simple_addition_solution.ipynb
- 2_divergence_exercise.ipynb
- 2_divergence_exercise_solution.ipynb
- 3_gradient_exercise.ipynb
- 3_gradient_exercise_solution.ipynb
- 4_curl_exercise.ipynb
- 4_curl_exercise_solution.ipynb
- 5_vector_laplace_exercise.ipynb
- 5_vector_laplace_exercise_solution.ipynb
- 6_where_domain.ipynb
- 6_where_domain_solutions.ipynb
- 7_scan_operator.ipynb
- 7_scan_operator_solutions.ipynb
- 8_diffusion_exercise_solution.ipynb
- helpers.py
- c2sm_logo.gif
- cscs_logo.jpeg
- exclaim_logo.png
- mch_logo.svg
- connectivity_cell_field.svg
- connectivity_edge_0th_cell.svg
- connectivity_edge_cell_sum.svg
- connectivity_numbered_grid.svg
- curl_formula.png
- curl_picture.png
- diamond.png
- directional_gradient_n_formula.png
- directional_gradient_n_picture.png
- directional_gradient_tau_formula.png
- directional_gradient_tau_picture.png
- divergence_formula.png
- divergence_picture.png
- e2v-add-code.png
- e2v-add.png
- edge_orientation.png
- field-code.png
- field.png
- gradient_formula.png
- gradient_picture.png
- icon_structure_1.png
- icon_structure_2.png
- laplacian.png
- local-field.png
- remap-field-code.png
- remap-field.png
- scan_operator.png
- simple_offset.png
- toolchain_details_existing_path.png
- vector_laplacian.png
- vector_laplacian_formula.png
- vector_laplacian_normal_component.png
- slides_1.ipynb
- slides_2.ipynb
- slides_3.ipynb
- slides_4.ipynb
- jupyter_intro.ipynb
- QuickstartGuide.md
- stencil.png
- demo_burgers.ipynb
- demo_horizontal_diffusion.ipynb
- demo_isentropic_diagnostics.ipynb
- lap_cartesian_vs_next.ipynb
- .gitkeep
- __init__.py
- common.py
- __init__.py
- dace_determinism.py
- github_ci.py
- nox_sessions.py
- update.py
- _lib.sh
- conftest.py
- test_common.py
- test_dace_determinism.py
- .gitkeep
- README.md
- run
- test
- __init__.py
- definitions.py
- file_utils.py
- filecache.py
- locking.py
- ndarray_utils.py
- types.py
- __init__.py
- stencil_module.py.in
- __init__.py
- base.py
- dace_backend.py
- dace_lazy_stencil.py
- dace_stencil_object.py
- debug_backend.py
- gtc_common.py
- gtcpp_backend.py
- module_generator.py
- numpy_backend.py
- pyext_builder.py
- python_common.py
- __init__.py
- base.py
- defir_builder.py
- defir_to_gtir.py
- exceptions.py
- gtscript_frontend.py
- node_util.py
- nodes.py
- __init__.py
- push_vertical_map_down.py
- swap_horizontal_maps.py
- utils.py
- __init__.py
- oir_to_tasklet.py
- oir_to_treeir.py
- treeir.py
- treeir_to_stree.py
- utils.py
- __init__.py
- debug_codegen.py
- __init__.py
- gtcpp.py
- gtcpp_codegen.py
- oir_to_gtcpp.py
- __init__.py
- npir.py
- npir_codegen.py
- oir_to_npir.py
- scalars_to_temps.py
- __init__.py
- caches.py
- horizontal_execution_merging.py
- inlining.py
- mask_stmt_merging.py
- pruning.py
- temporaries.py
- utils.py
- vertical_loop_merging.py
- __init__.py
- gtir_definitive_assignment_analysis.py
- gtir_dtype_resolver.py
- gtir_k_boundary.py
- gtir_pipeline.py
- gtir_prune_unused_parameters.py
- gtir_upcaster.py
- horizontal_masks.py
- oir_access_kinds.py
- oir_pipeline.py
- __init__.py
- common.py
- definitions.py
- gtir.py
- gtir_to_oir.py
- oir.py
- ufuncs.py
- utils.py
- __init__.py
- input_strategies.py
- suites.py
- utils.py
- __init__.py
- attrib.py
- base.py
- compiler.py
- field.py
- meta.py
- __externals__.py
- __gtscript__.py
- __init__.py
- caching.py
- config.py
- definitions.py
- gt_cache_manager.py
- gtscript.py
- gtscript_imports.py
- lazy_stencil.py
- loader.py
- stencil_builder.py
- stencil_object.py
- type_hints.py
- __init__.py
- core.py
- validators.py
- __init__.py
- codegen.py
- concepts.py
- exceptions.py
- extended_typing.py
- pattern_matching.py
- traits.py
- trees.py
- type_definitions.py
- type_validation.py
- utils.py
- visitors.py
- __init__.py
- common.py
- context.py
- exceptions.py
- nd_array_field.py
- operators.py
- __init__.py
- excepthook.py
- exceptions.py
- formatting.py
- __init__.py
- __init__.py
- fix_missing_locations.py
- remove_docstrings.py
- simple_assign.py
- single_static_assign.py
- stringify_annotations.py
- unchain_compares.py
- __init__.py
- closure_var_folding.py
- closure_var_type_deduction.py
- dead_closure_var_elimination.py
- iterable_unpack.py
- type_deduction.py
- utils.py
- __init__.py
- closure_var_type_deduction.py
- linters.py
- type_deduction.py
- __init__.py
- decorator.py
- dialect_ast_enums.py
- dialect_parser.py
- experimental.py
- fbuiltins.py
- field_operator_ast.py
- foast_introspection.py
- foast_pretty_printer.py
- foast_to_gtir.py
- foast_to_past.py
- func_to_foast.py
- func_to_past.py
- gtcallable.py
- lowering_utils.py
- past_process_args.py
- past_to_itir.py
- program_ast.py
- source_utils.py
- stages.py
- transform_utils.py
- type_info.py
- type_specifications.py
- type_translation.py
- __init__.py
- gpu_profiler.py
- hook_machinery.py
- hooks.py
- metrics.py
- __init__.py
- common_pattern_matcher.py
- domain_utils.py
- ir_makers.py
- misc.py
- __init__.py
- canonicalize_domain_argument.py
- expand_tuple_args.py
- transform_to_as_fieldop.py
- __init__.py
- collapse_list_get.py
- collapse_tuple.py
- constant_folding.py
- cse.py
- dead_code_elimination.py
- expand_tuple_maps.py
- extractors.py
- fixed_point_transformation.py
- fuse_as_fieldop.py
- fuse_maps.py
- global_tmps.py
- infer_domain.py
- infer_domain_ops.py
- inline_center_deref_lift_vars.py
- inline_dynamic_shifts.py
- inline_fundefs.py
- inline_into_scan.py
- inline_lambdas.py
- inline_lifts.py
- inline_scalar.py
- merge_let.py
- normalize_shifts.py
- pass_manager.py
- power_unrolling.py
- propagate_deref.py
- prune_casts.py
- prune_empty_concat_where.py
- remap_symbols.py
- remove_broadcast.py
- replace_get_domain_range_with_constants.py
- simple_inline_heuristic.py
- symbol_ref_utils.py
- trace_shifts.py
- unroll_reduce.py
- __init__.py
- inference.py
- type_specifications.py
- type_synthesizer.py
- __init__.py
- ARCHITECTURE.md
- atlas_utils.py
- builtins.py
- dispatcher.py
- embedded.py
- ir.py
- library.py
- pretty_parser.py
- pretty_printer.py
- README.md
- runtime.py
- tracing.py
- __init__.py
- cpp_interface.py
- interface.py
- nanobind.py
- __init__.py
- cmake.py
- cmake_lists.py
- compiledb.py
- __init__.py
- build_data.py
- cache.py
- common.py
- compiler.py
- importer.py
- __init__.py
- arguments.py
- code_specs.py
- compilation_tasks.py
- compiled_program.py
- cpp_utils.py
- definitions.py
- options.py
- recipes.py
- runners.py
- stages.py
- toolchain.py
- workflow.py
- __init__.py
- codegen.py
- gtfn_im_ir.py
- gtfn_ir.py
- gtfn_ir_common.py
- gtfn_ir_to_gtfn_im_ir.py
- gtfn_module.py
- itir_to_gtfn_ir.py
- __init__.py
- __init__.py
- gtfn.py
- pretty_print.py
- __init__.py
- reduce_with_skip_values.py
- __init__.py
- gtir_dataflow.py
- gtir_domain.py
- gtir_python_codegen.py
- gtir_to_sdfg.py
- gtir_to_sdfg_concat_where.py
- gtir_to_sdfg_primitives.py
- gtir_to_sdfg_scan.py
- gtir_to_sdfg_types.py
- gtir_to_sdfg_utils.py
- __init__.py
- auto_optimize.py
- concat_where_mapper.py
- constants.py
- dead_dataflow_elimination.py
- fuse_horizontal_conditionblocks.py
- gpu_utils.py
- inline_fuser.py
- local_double_buffering.py
- loop_blocking.py
- map_fusion.py
- map_fusion_extended.py
- map_fusion_utils.py
- map_orderer.py
- map_promoter.py
- map_splitter.py
- map_to_copy.py
- move_dataflow_into_if_body.py
- multi_state_global_self_copy_elimination.py
- redundant_array_removers.py
- remove_access_node_copies.py
- remove_scalar_copies.py
- remove_views.py
- scan_loop_unrolling.py
- simplify.py
- single_state_global_self_copy_elimination.py
- split_access_nodes.py
- split_memlet.py
- splitting_tools.py
- state_fusion.py
- strides.py
- trivial_map_dimension_folding.py
- utils.py
- write_back_buffer_elimination.py
- __init__.py
- backend.py
- bindings.py
- common.py
- compilation.py
- decoration.py
- factory.py
- translation.py
- __init__.py
- program.py
- sdfg_args.py
- sdfg_callable.py
- sdfg_utils.py
- __init__.py
- double_roundtrip.py
- gtfn.py
- roundtrip.py
- __init__.py
- program_formatter.py
- __init__.py
- mypy_plugin.py
- type_info.py
- type_specifications.py
- type_translation.py
- __init__.py
- AGENTS.md
- backend.py
- CLAUDE.md
- common.py
- config.py
- constructors.py
- custom_layout_allocators.py
- field_utils.py
- fingerprinting.py
- named_collections.py
- typing.py
- utils.py
- __init__.py
- interface.py
- layout.py
- layout_registry.py
- utils.py
- __init__.py
- allocators.py
- __about__.py
- __init__.py
- py.typed
- __init__.py
- test_call_interface.py
- test_exec_info.py
- test_field_layouts.py
- test_gtcnumpy.py
- test_stencil_object.py
- __init__.py
- stencil_definitions.py
- test_code_generation.py
- test_dace_parsing.py
- test_math_functions.py
- test_suites.py
- utils.py
- __init__.py
- __init__.py
- test_backend.py
- test_dace_backend.py
- test_module_generator.py
- __init__.py
- defir_to_gtir_definition_setup.py
- test_defir_to_gtir.py
- test_frontend.py
- test_gtscript_frontend.py
- test_ir_maker.py
- __init__.py
- test_push_vertical_map_down.py
- test_swap_horizontal_maps.py
- test_utils.py
- __init__.py
- test_oir_to_tasklet.py
- test_oir_to_treeir.py
- __init__.py
- test_caches.py
- test_horizontal_execution_merging.py
- test_inlining.py
- test_mask_stmt_merging.py
- test_pruning.py
- test_temporaries.py
- test_utils.py
- __init__.py
- test_min_k_interval.py
- __init__.py
- common_utils.py
- gtcpp_utils.py
- gtir_utils.py
- npir_utils.py
- oir_utils.py
- test_common.py
- test_definitive_assignment_analysis.py
- test_gtcpp_codegen.py
- test_gtcpp_compilation.py
- test_gtir.py
- test_gtir_dtype_resolver.py
- test_gtir_prune_unused_parameters.py
- test_gtir_to_oir.py
- test_gtir_upcaster.py
- test_npir_codegen.py
- test_npir_scalars_to_temporaries.py
- test_oir.py
- test_oir_access_kinds.py
- test_oir_pipeline.py
- test_oir_to_gtcpp.py
- test_oir_to_npir.py
- utils.py
- __init__.py
- test_caching.py
- test_compiler.py
- test_compiler_optimization.py
- test_gtscript_imports.py
- test_lazy_stencil.py
- test_stencil_builder.py
- test_util.py
- .gitignore
- __init__.py
- conftest.py
- definitions.py
- utils.py
- test_file_utils.py
- test_filecache.py
- test_nd_array_utils.py
- __init__.py
- __init__.py
- benchmark_eve_visitors.py
- __init__.py
- test_codegen.py
- test_concepts.py
- test_datamodels.py
- test_exceptions.py
- test_extended_typing.py
- test_pattern_matching.py
- test_traits.py
- test_trees.py
- test_type_definitions.py
- test_type_validation.py
- test_utils.py
- test_visitors.py
- __init__.py
- conftest.py
- definitions.py
- __init__.py
- dummy_module.py
- __init__.py
- custom_named_collections.py
- __init__.py
- benchmark_program_call.py
- common.py
- compilation.py
- past_common.py
- __init__.py
- test_orchestration.py
- test_program.py
- test_write_back_buffer_elimination_lowering.py
- __init__.py
- test_arg_call_interface.py
- test_basic.py
- test_bound_args.py
- test_broadcast.py
- test_cartesian_shifts.py
- test_closure_vars.py
- test_compiled_program.py
- test_concat_where.py
- test_conditionals.py
- test_decorator.py
- test_domain.py
- test_external_local_field.py
- test_foast_pretty_printer.py
- test_import_from_mod.py
- test_math_builtin_execution.py
- test_math_unary_builtins.py
- test_named_collections.py
- test_program.py
- test_reductions.py
- test_scalar_args.py
- test_scan.py
- test_staggered.py
- test_temporaries_with_sizes.py
- test_tuples.py
- test_type_conversion.py
- test_where.py
- __init__.py
- test_gpu_profiler.py
- test_hooks.py
- test_builtins.py
- test_conditional.py
- test_constant.py
- test_extractors.py
- test_horizontal_indirection.py
- test_implicit_fencil.py
- test_program.py
- test_scan.py
- test_strided_offset_provider.py
- test_trivial.py
- test_tuple.py
- __init__.py
- test_nanobind_build.py
- __init__.py
- math_builtin_test_data.py
- test_ffront_fvm_nabla.py
- test_icon_like_scan.py
- test_laplacian.py
- test_multiple_output_domains.py
- hdiff_reference.py
- test_anton_toy.py
- test_column_stencil.py
- test_fvm_nabla.py
- test_hdiff.py
- test_if_stmt.py
- test_temporaries.py
- test_vertical_advection.py
- test_with_toy_connectivity.py
- __init__.py
- test_gtfn_workflow.py
- __init__.py
- fvm_nabla_setup.py
- __init__.py
- cases.py
- cases_utils.py
- __init__.py
- test_domain_pickle.py
- __init__.py
- test_cse_extraction_scan_init.py
- test_offset_dimensions_names.py
- __init__.py
- test_basic_program.py
- test_common.py
- test_context.py
- test_nd_array_field.py
- test_excepthook.py
- test_exceptions.py
- test_formatting.py
- __init__.py
- test_fix_missing_locations.py
- test_simple_assign.py
- test_single_static_assign.py
- __init__.py
- test_decorator_domain_deduction.py
- test_diagnostic_messages.py
- test_fbuiltins.py
- test_foast_to_gtir.py
- test_func_to_foast.py
- test_func_to_foast_error_line_number.py
- test_func_to_past.py
- test_past_to_gtir.py
- test_stages.py
- test_type_deduction.py
- __init__.py
- test_gpu_profiler.py
- test_hook_machinery.py
- test_metrics.py
- __init__.py
- test_domain_utils.py
- test_misc.py
- __init__.py
- test_collapse_list_get.py
- test_collapse_tuple.py
- test_concat_where_canonicalize_domain_args.py
- test_concat_where_expand_tuple_args.py
- test_concat_where_transform_to_as_fieldop.py
- test_constant_folding.py
- test_cse.py
- test_dead_code_elimination.py
- test_domain_inference.py
- test_expand_tuple_maps.py
- test_fuse_as_fieldop.py
- test_fuse_maps.py
- test_global_tmps.py
- test_infer_domain_ops.py
- test_inline_center_deref_lift_vars.py
- test_inline_into_scan.py
- test_inline_lambdas.py
- test_inline_lifts.py
- test_inline_scalar.py
- test_power_unrolling.py
- test_propagate_deref.py
- test_prune_casts.py
- test_prune_empty_concat_where.py
- test_replace_get_domain_range_with_constants.py
- test_simple_inline_heuristic.py
- test_symbol_ref_utils.py
- test_trace_shifts.py
- test_unroll_reduce.py
- __init__.py
- test_embedded_field_with_list.py
- test_embedded_internals.py
- test_inline_dynamic_shifts.py
- test_ir.py
- test_pretty_parser.py
- test_pretty_printer.py
- test_runtime_domain.py
- test_type_inference.py
- __init__.py
- test_cpp_interface.py
- test_nanobind.py
- __init__.py
- conftest.py
- test_cache_consistency.py
- test_cmake.py
- test_compiledb.py
- __init__.py
- test_cache.py
- test_compiler.py
- test_importer.py
- __init__.py
- test_arguments.py
- test_compiled_program.py
- test_languages.py
- test_runners.py
- test_workflow.py
- __init__.py
- test_gtfn_module.py
- test_itir_to_gtfn_ir.py
- __init__.py
- __init__.py
- conftest.py
- test_associate_dimensions.py
- test_auto_optimizer_hooks.py
- test_concat_where_replacer.py
- test_constant_substitution.py
- test_copy_chain_remover.py
- test_create_local_double_buffering.py
- test_dead_dataflow_elimination.py
- test_distributed_buffer_relocator.py
- test_double_write_remover.py
- test_fuse_horizontal_conditionblocks.py
- test_gpu_utils.py
- test_horizontal_map_split_fusion.py
- test_inline_fuser.py
- test_loop_blocking.py
- test_make_transients_persistent.py
- test_map_buffer_elimination.py
- test_map_fusion_utils.py
- test_map_order.py
- test_map_promoter.py
- test_map_splitter.py
- test_map_to_copy.py
- test_move_dataflow_into_if_body.py
- test_move_tasklet_into_map.py
- test_multi_state_global_self_copy_elimination.py
- test_multiple_copies_global.py
- test_remove_point_view.py
- test_remove_scalar_copies.py
- test_scan_loop_unrolling.py
- test_single_state_global_self_copy_elimination.py
- test_split_access_node.py
- test_split_memlet.py
- test_splitting_tools.py
- test_state_fusion.py
- test_strides.py
- test_transient_memory_mode.py
- test_trivial_map_dimension_folding.py
- test_vertical_map_split_fusion.py
- test_warnings.py
- test_write_back_buffer_elimination.py
- util.py
- __init__.py
- test_dace.py
- test_dace_backend.py
- test_dace_bindings.py
- test_dace_cache_consistency.py
- test_dace_compilation.py
- test_dace_domain.py
- test_dace_sdfg_callable.py
- test_dace_translation.py
- test_dace_utils.py
- test_gtir_to_sdfg.py
- __init__.py
- test_gtfn.py
- __init__.py
- __init__.py
- test_type_info.py
- test_type_translation.py
- __init__.py
- conftest.py
- test_cases.py
- test_common.py
- test_config.py
- test_constructors.py
- test_containers.py
- test_custom_layout_allocators.py
- test_field_utils.py
- test_utils.py
- __init__.py
- conftest.py
- definitions.py
- toy_connectivity.py
- test_optional_dependency_markers.py
- test_version.py
- __init__.py
- test_interface.py
- test_layout.py
- __init__.py
- conftest.py
- conftest.py
- mypy.ini
- test_next.yaml
- .editorconfig
- .gitattributes
- .gitignore
- .gitpod.Dockerfile
- .gitpod.yml
- .pre-commit-config.yaml
- .python-versions
- AGENTS.md
- AUTHORS.md
- CHANGELOG.md
- CLAUDE.md
- codecov.yml
- CODING_GUIDELINES.md
- CONTRIBUTING.md
- HEADER.txt
- LICENSE
- nox-sessions-config.yml
- noxfile.py
- pyproject.toml
- README.md
- tach.toml
- uv.lock
# 설치 가이드
1. 코드 내려받기
git clone https://github.com/GridTools/gt4py
깃허브에서 프로젝트 코드 전체를 내 컴퓨터로 내려받습니다.
cd gt4py
방금 내려받은 프로젝트 폴더 안으로 이동합니다.
2. Docker
쉬움 추천사전 준비물
- Git GitHub에서 프로젝트 코드를 내려받으려면 필요합니다.
- Docker Desktop 컨테이너를 빌드하고 실행하려면 필요합니다. 설치 후 실행해서 백그라운드에 켜두세요.
docker build -f .cscs-ci/Dockerfile -t gt4py .
Dockerfile을 기반으로 실행 가능한 이미지를 빌드합니다.
docker run -p 8080:80 gt4py
빌드된 이미지를 실제 컨테이너로 실행합니다.
터미널에 docker compose ps 를 입력해 컨테이너들이 Up 상태인지 확인하세요. README에 포트 번호가 적혀있다면 브라우저에서 http://localhost:포트번호 로 접속해보세요.
// repository documentation
Was this content helpful?
(0 ratings)
