Code Monkey home page Code Monkey logo

atmi's Introduction

ATMI (Asynchronous Task and Memory Interface)

Asynchronous Task and Memory Interface, or ATMI, is a runtime framework for efficient task management in heterogeneous CPU-GPU systems. It provides a consistent API to create and launch tasks from both CPUs and GPUs (integrated and discrete). In ATMI, the high-level task configurations can be simply described by using a few predefined C-style structures before launching the tasks. The task configuration includes the task dimensions and granularity, dependencies to other tasks, data requirements and so on. The ATMI runtime, based on the overall task graph and individual task configurations, will perform task scheduling and memory management that is optimal for the underlying platform. ATMI provides a rich and flexible user interface so that the end user can relinquish scheduling to the runtime (default behavior) or take full control of scheduling and mapping, if desired. The target audience for ATMI is application programmers or middleware developers for high-level languages.

Deprecation Notice

ATMI is not being released as part of AMD ROCm software after ROCm 5.6. Previously released branches are still available for reference. ATMI will henceforth be maintained as a separate research project at https://github.com/AMDResearch/atmi.

ATMI (v0.7) Feature List

  • ATMI-RT: host runtime library to manage tasks
  • ATMI-DEVRT: device runtime library for managing task enqueue from the GPU to both the CPU and other GPUs in the system
  • ATMI-C (experimental): Declarative task-based programming model using C language extensions (works only with GCC)
  • A comprehensive machine model for CPUs, integrated GPU (APU) and discrete GPU systems.
  • Consistent task management API for CPU tasks and GPU tasks
    • GPU kernel language: Any language (e.g, CL and HIP) that can be compiled to AMD GCN code objects
    • CPU tasks: support for multi-dimensional task grids (similar to GPU tasks)
  • Task dependencies
  • Task groups
    • (Experimental) Dependencies between task groups
  • Recursive tasks (tasks creating other tasks)
  • Efficient resource management
    • Low latency signaling among dependent tasks
    • Kernel argument memory regions
    • Reuse of task handles
    • Efficient task to work queue scheduling
  • Data movement API (synchronous and asynchronous options)
    • Asynchronous data movement is treated as an ATMI task in the task graph
  • Interoperability with HSA/ROCm: Map between ATMI handles and ROCm data structures for expert programmers
  • Supported platforms: all devices that are supported by ROCm are supported by ATMI
  • Supported runtime: ROCm v2.1+
  • Several miscellaneous code refactoring and bug fixes

Compilation and Runtime Workflow

The below figure depicts the ATMI runtime workflow with CLOC as the compiler utility. atmi-workflow

License

MIT License

Copyright © 2019 Advanced Micro Devices, Inc.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

atmi's People

Contributors

amd-isparry avatar ashwinma avatar dgaliffiamd avatar estewart08 avatar icarus-sparry avatar kzhuravl avatar louishp avatar nelsonc-amd avatar raramakr avatar ronlieb avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

atmi's Issues

Do not use relative paths outside of install directory

Please change all occurrences of ../../hsa/lib and ../../lib to something that's not relative and hard-coded.

In certain package managers ../../lib cannot exist, since libraries are only available inside the package folders themselves. Also the name hsa is not guaranteed to be the install directory of the hsa package.

fix device type value

atmi_machine_t use the value of ATMI_DEVTYPE_ALL to define device_count_by_type and devices_by_type to maintain the munber of different devices, but ATMI_DEVTYPE_ALL is defined as 0x1111, however this value is 4369. I think you just want to use binary bits to indicate the type of each device.

ATMI not supported on AArch64

I am trying to build ROCm from branch roc-1.6.3 on my ubunu16.04-arm64 server which is running on Cavium Thunder X. Now I have built ROCK-Kernel-Driver, ROCT-Thunk-Interface and ROCR-Runtime, HCC as well as HIP. When it comes to atmi, I follow the step in INSTALL.md:
1.cd src
2.mkdir build && cd build
3.cmake -DCMAKE_INSTALL_PREFIX=/opt/rocm/atmi ..
output of cmake as follows:
-- ATMI: Not building ATMI Runtime: only support ATMI in Linux x86_64 or ppc64le hosts.
-- ATMI: Not building ATMI C Extension: only support ATMI in Linux x86_64 or ppc64le hosts.
-- Configuring done
-- Generating done
-- Build files have been written to: /home/cavium/rocm/atmi/src/build

From the output, it seems that ATMI is not supported on aarch64, besides, make command gives nothing output.
@ashwinma

[3.1.0] Security problem NULL DT_RUNPATH

Gentoo Linux QA system is detect error when I tries to create own ebuild
scanelf: rpath_security_checks(): Security problem NULL DT_RUNPATH in /var/tmp/portage/dev-libs/atmi-3.1.0/image/usr/lib64/libatmi_runtime.so.0.7.0
Auto fixing rpaths for /var/tmp/portage/dev-libs/atmi-3.1.0/image/usr/lib64/libatmi_runtime.so.0.7.0

  • QA Notice: The following files contain insecure RUNPATHs
  • Please file a bug about this at https://bugs.gentoo.org/
  • with the maintainer of the package.
  • /var/tmp/portage/dev-libs/atmi-3.1.0/image/usr/lib64/libatmi_runtime.so.0.7.0
  • RPATH: :$ORIGIN:$ORIGIN/../../hsa/lib:$ORIGIN/../../lib
    

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.