mirror of
https://github.com/ROCm/ROCm.git
synced 2026-01-10 15:18:11 -05:00
Compare commits
51 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2be530ac1f | ||
|
|
c6a92a6250 | ||
|
|
58b931ebcb | ||
|
|
629d40bfc7 | ||
|
|
906cc8ff0d | ||
|
|
d1bee880ec | ||
|
|
5848c31366 | ||
|
|
81748fb6bc | ||
|
|
31c471261f | ||
|
|
c74c95fc68 | ||
|
|
4285f8a098 | ||
|
|
dd62072371 | ||
|
|
2a71da0814 | ||
|
|
516c0e0959 | ||
|
|
f1bfe97835 | ||
|
|
a2b5a947f6 | ||
|
|
c015023a07 | ||
|
|
30803ce928 | ||
|
|
54d89493a0 | ||
|
|
a17b25b6c6 | ||
|
|
2102aee014 | ||
|
|
6aeb011170 | ||
|
|
9d2c8fc3cd | ||
|
|
45aa402d90 | ||
|
|
c933b9f835 | ||
|
|
5b7d3da9e4 | ||
|
|
567ef05eda | ||
|
|
c2065eaf8d | ||
|
|
2e30be09db | ||
|
|
06afbf1bad | ||
|
|
f18cad3aee | ||
|
|
75b1372a5f | ||
|
|
535a1a6dfb | ||
|
|
318b9d5b9b | ||
|
|
b33cd08098 | ||
|
|
e7e724056a | ||
|
|
70f898a228 | ||
|
|
1a6703a2af | ||
|
|
10c3f0c4bf | ||
|
|
48f0be701c | ||
|
|
d0a595787a | ||
|
|
b06d137097 | ||
|
|
fc75746299 | ||
|
|
fd261de461 | ||
|
|
e28d968135 | ||
|
|
985724f3e4 | ||
|
|
4b454b72ea | ||
|
|
e1e1e4f569 | ||
|
|
c83fabc3b7 | ||
|
|
92ee3d7ec7 | ||
|
|
4ebc4b1513 |
237
README.md
237
README.md
@@ -1,61 +1,132 @@
|
||||
## Are You Ready to ROCK!
|
||||
The ROCm Platform delivers on the vision of the Boltzmann Initiative, bringing
|
||||
new opportunities in GPU Computing Research.
|
||||
## Are You Ready to ROCK?
|
||||
The ROCm Platform brings a rich foundation to advanced computing by seamlessly
|
||||
integrating the CPU and GPU with the goal of solving real-world problems.
|
||||
|
||||
On November 16th, 2015, the Radeon Technology Group rolled out Boltzmann
|
||||
Initiative with three core foundation elements:
|
||||
On April 25th, 2016, we delivered ROCm 1.0 built around three pillars:
|
||||
|
||||
* New Linux(R) Driver and Runtime Stack optimized for HPC & Ultra-scale class
|
||||
computing,
|
||||
* Heterogeneous C and C++ compiler which best address the whole system not just
|
||||
a single device
|
||||
* HIP acknowledging the need for platform choice when utilizing GPU computing
|
||||
API
|
||||
1) Open Heterogeneous Computing Platform (Linux Driver and Runtime Stack),
|
||||
optimized for HPC & Ultra-scale class computing;
|
||||
|
||||
2) Heterogeneous C and C++ Single Source Compiler, to approach computation
|
||||
holistically, on a system level, rather than as a discrete GPU artifact;
|
||||
|
||||
3) HIP, acknowledging the need for freedom of choice when it comes to platforms
|
||||
and APIs for GPU computing.
|
||||
|
||||
Using our knowledge of the HSA Standards and, more importantly, the HSA 1.1
|
||||
Runtime we have been able to successfully extended support to the dGPU with
|
||||
critical features for NUMA class acceleration. As a result, the ROCK driver is
|
||||
composed of several components based on our efforts to develop the
|
||||
Using our knowledge of the HSA Standards and, more importantly, the HSA
|
||||
Runtime, we have been able to successfully extended support to the dGPU with
|
||||
critical features for accelerating NUMA computation. As a result, the ROCK
|
||||
driver is composed of several components based on our efforts to develop the
|
||||
Heterogeneous System Architecture for APUs, including the new AMDGPU driver,
|
||||
the Kernel Fusion Driver (KFD), the HSA+ Runtime and an LLVM based compilation
|
||||
stack for the building of key language support. This support starts with AMD’s
|
||||
FIJI Family of dGPU, but support is planned to expand to include future ASICS.
|
||||
stack which provides support for key languages. This support starts with AMD’s
|
||||
Fiji family of dGPUs, and has expanded to include the Hawaii dGPU family in ROCm
|
||||
1.2. ROCm 1.3 further extends support to include the Polaris family of ASICs.
|
||||
|
||||
### The Latest ROCm Platform - ROCm 1.1
|
||||
#### Supported CPUs
|
||||
The ROCm Platform leverages PCIe Atomics (Fetch ADD, Compare and SWAP,
|
||||
Unconditional SWAP, AtomicsOpCompletion).
|
||||
[PCIe atomics](https://github.com/RadeonOpenCompute/RadeonOpenCompute.github.io/blob/master/ROCmPCIeFeatures.md)
|
||||
are only supported on PCIe Gen3 Enabled CPUs and PCIe Gen3 Switches like
|
||||
Broadcom PLX. When you install your GPUs make sure you install them in a fully
|
||||
PCIe Gen3 x16 or x8 slot attached either directly to the CPU's Root I/O
|
||||
controller or via a PCIe switch directly attached to the CPU's Root I/O
|
||||
controller. In our experience many issues stem from trying to use consumer
|
||||
motherboards which provide Physical x16 Connectors that are electrically
|
||||
connected as e.g. PCIe Gen2 x4. This typically occurs when connecting via the
|
||||
Southbridge PCIe I/O controller. If you motherboard is part of this category,
|
||||
please do not use this connector for your GPUs, if you intend to exploit ROCm.
|
||||
|
||||
|
||||
Our GFX8 GPU's (Fiji & Polaris Family) use PCIe Gen 3 and PCIe Atomics.
|
||||
|
||||
Current CPUs which support PCIe Gen3 + PCIe Atomics are:
|
||||
* Intel Xeon E5 v3 or newer CPUs;
|
||||
* Intel Xeon E3 v3 or newer CPUs;
|
||||
* Intel Core i7 v4, Core i5 v4, Core i3 v4 or newer CPUs (i.e. Haswell family or newer).
|
||||
* AMD Ryzen CPUs;
|
||||
|
||||
Upcoming CPUs which will support PCIe Gen3 + PCIe Atomics are:
|
||||
* AMD Naples Server CPUs;
|
||||
* Cavium Thunder X Server Processor.
|
||||
|
||||
Our GFX7 GPUs Radeon R9 290, R9 390, AMD FirePro S9150, S9170 do not support or
|
||||
take advantage of PCIe Atomics. However, we still recommend that you use a CPU
|
||||
from the list provided above.
|
||||
|
||||
#### Not supported or very limited support under ROCm
|
||||
* We do not support ROCm with PCIe Gen 2 enabled CPUs such as the AMD Opteron,
|
||||
Phenom, Phenom II, Athlon, Athlon X2, Athlon II and Older Intel Xeon and Intel
|
||||
Core Architecture and Pentium CPUs.
|
||||
* We also do not support AMD Carrizo and Kaveri APU as host for compliant dGPU
|
||||
attachments.
|
||||
* Thunderbolt 1 and 2 enabled GPU's are not supported by ROCm. Thunderbolt 1 & 2
|
||||
are PCIe Gen2 based.
|
||||
* AMD Carrizo based APUs have limited support due to OEM & ODM's choices when it
|
||||
comes to some key configuration parameters. On point, we have observed that
|
||||
Carrizo Laptops, AIOs and Desktop systems showed inconsistencies in exposing and
|
||||
enabling the System BIOS parameters required by the ROCm stack. Before
|
||||
purchasing a Carrizo system for ROCm, please verify that the BIOS provides an
|
||||
option for enabling IOMMUv2. If this is the case, the final requirement is
|
||||
associated with correct CRAT table support - please inquire with the OEM about
|
||||
the latter.
|
||||
* AMD Merlin/Falcon Embedded System is also not currently supported by the public Repo.
|
||||
|
||||
#### Support for future APUs
|
||||
We are well aware of the excitement and anticipation built around using ROCm
|
||||
with an APU system which fully exposes Shared Virtual Memory alongside and cache
|
||||
coherency between the CPU and GPU. To this end, in mid 2017 we plan on testing
|
||||
commercial AM4 motherboards for the Bristol Ridge and Raven Ridge families of
|
||||
APUs. Just like you, we still waiting for access to them! Once we have the first
|
||||
boards in the lab we will detail our experiences via our blog, as well as build
|
||||
a list of motherboard that are qualified for use with ROCm.
|
||||
|
||||
### New Features to ROCm
|
||||
|
||||
#### Developer preview of the new OpenCL 1.2 compatible language runtime and compiler
|
||||
|
||||
* OpenCL 2.0 compatible kernel language support with OpenCL 1.2 compatible
|
||||
runtime
|
||||
* Supports offline ahead of time compilation today;
|
||||
during the Beta phase we will add in-process/in-memory compilation.
|
||||
* Binary Package support for Ubuntu 16.04 and Fedora 24
|
||||
* Dropping binary package support for Ubuntu 14.04 and Fedora 23
|
||||
|
||||
#### IPC support
|
||||
|
||||
### The latest ROCm platform - ROCm 1.5
|
||||
The latest tested version of the drivers, tools, libraries and source code for
|
||||
the ROCm platform have been released and are available under the roc-1.1.0 tag
|
||||
the ROCm platform have been released and are available under the roc-1.5.0 or rocm-1.5.0 tag
|
||||
of the following GitHub repositories:
|
||||
|
||||
* [ROCK-Kernel-Driver](https://github.com/RadeonOpenCompute/ROCK-Kernel-Driver/tree/roc-1.1.0)
|
||||
* [ROCR-Runtime](https://github.com/RadeonOpenCompute/ROCR-Runtime/tree/roc-1.1.0)
|
||||
* [ROCT-Thunk-Interface](https://github.com/RadeonOpenCompute/ROCT-Thunk-Interface/tree/roc-1.1.0)
|
||||
* [HCC compiler](https://github.com/RadeonOpenCompute/hcc/tree/roc-1.1.0)
|
||||
* [LLVM-AMDGPU-Assembler-Extra](https://github.com/RadeonOpenCompute/LLVM-AMDGPU-Assembler-Extra/tree/roc-1.1.0)
|
||||
* [ROC-smi](https://github.com/RadeonOpenCompute/ROC-smi/tree/roc-1.1.0)
|
||||
* [ROCnRDMA](https://github.com/RadeonOpenCompute/ROCnRDMA/tree/roc-1.1.0)
|
||||
* [HIP](https://github.com/GPUOpen-ProfessionalCompute-Tools/HIP/tree/roc-1.1.0)
|
||||
* [HIP-Examples](https://github.com/GPUOpen-ProfessionalCompute-Tools/HIP-Examples/tree/roc-1.1.0)
|
||||
* [ROCK-Kernel-Driver](https://github.com/RadeonOpenCompute/ROCK-Kernel-Driver/tree/roc-1.5.0)
|
||||
* [ROCR-Runtime](https://github.com/RadeonOpenCompute/ROCR-Runtime/tree/roc-1.5.0)
|
||||
* [ROCT-Thunk-Interface](https://github.com/RadeonOpenCompute/ROCT-Thunk-Interface/tree/roc-1.5.0)
|
||||
* [ROC-smi](https://github.com/RadeonOpenCompute/ROC-smi/tree/roc-1.5.0)
|
||||
* [HCC compiler](https://github.com/RadeonOpenCompute/hcc/tree/rocm-1.5.0)
|
||||
* [compiler-runtime](https://github.com/RadeonOpenCompute/compiler-rt/tree/rocm-1.5.0)
|
||||
* [HIP](https://github.com/GPUOpen-ProfessionalCompute-Tools/HIP/tree/roc-1.5.0)
|
||||
* [HIP-Examples](https://github.com/GPUOpen-ProfessionalCompute-Tools/HIP-Examples/tree/roc-1.5.0)
|
||||
* [atmi](https://github.com/RadeonOpenCompute/atmi/tree/0.3.7)
|
||||
|
||||
In addition the following mirror repositories that support the HCC compiler are
|
||||
also available on GitHub, and frozen for the roc-1.1.0 release:
|
||||
Additionally, the following mirror repositories that support the HCC compiler
|
||||
are also available on GitHub, and frozen for the rocm-1.5.0 release:
|
||||
|
||||
* [llvm](https://github.com/RadeonOpenCompute/llvm/tree/roc-1.1.0)
|
||||
* [clang](https://github.com/RadeonOpenCompute/clang/tree/roc-1.1.0)
|
||||
|
||||
### Installing from AMD ROCm Repositories
|
||||
AMD is hosting both debian and rpm repositories for the ROCm 1.1 packages. The
|
||||
packages in both repositories have been signed to ensure package integrity.
|
||||
Directions for each repository are given below:
|
||||
* [llvm](https://github.com/RadeonOpenCompute/llvm/tree/rocm-1.5.0)
|
||||
* [lld](https://github.com/RadeonOpenCompute/lld/tree/rocm-1.5.0)
|
||||
* [hcc-clang-upgrade](https://github.com/RadeonOpenCompute/hcc-clang-upgrade/tree/rocm-1.5.0)
|
||||
* [ROCm-Device-Libs](https://github.com/RadeonOpenCompute/ROCm-Device-Libs/tree/rocm-1.5.0)
|
||||
|
||||
#### Supported Operating Systems
|
||||
|
||||
The ROCm platform has been tested on the following operating systems:
|
||||
* Ubuntu 14.04.04
|
||||
* Fedora 23
|
||||
|
||||
There is experimental support for the following operating systems:
|
||||
* Ubuntu 16.04
|
||||
* Fedora 22
|
||||
* Fedora 24 (Hawaii based GPUs, i.e. Radeon R9 290, R9 390, AMD FirePro S9150, S9170, are not supported)
|
||||
|
||||
### Installing from AMD ROCm repositories
|
||||
AMD is hosting both debian and rpm repositories for the ROCm 1.5 packages. The
|
||||
packages in the Debian repository have been signed to ensure package integrity.
|
||||
Directions for each repository are given below:
|
||||
|
||||
#### Debian repository - apt-get
|
||||
|
||||
@@ -65,8 +136,10 @@ follows:
|
||||
|
||||
```shell
|
||||
wget -qO - http://packages.amd.com/rocm/apt/debian/rocm.gpg.key | sudo apt-key add -
|
||||
sudo sh -c 'echo deb [arch=amd64] http://packages.amd.com/rocm/apt/debian/ trusty main > /etc/apt/sources.list.d/rocm.list'
|
||||
sudo sh -c 'echo deb [arch=amd64] http://packages.amd.com/rocm/apt/debian/ xenial main > /etc/apt/sources.list.d/rocm.list'
|
||||
```
|
||||
The gpg key might change, so it may need to be updated when installing a new
|
||||
release.
|
||||
|
||||
##### Install or Update
|
||||
Next, update the apt-get repository list and install/update the rocm package:
|
||||
@@ -90,8 +163,46 @@ Once complete, reboot your system.
|
||||
|
||||
We recommend you [verify your installation](https://github.com/RadeonOpenCompute/ROCm#verify-installation) to make sure everything completed successfully.
|
||||
|
||||
#### To install ROCm with Developer Preview of OpenCL
|
||||
|
||||
##### Start by following the instruction of installing ROCm with Debian repository:
|
||||
|
||||
at the step "sudo apt-get install rocm" replace it with:
|
||||
|
||||
```shell
|
||||
sudo apt-get install rocm opencl-rocm
|
||||
```
|
||||
|
||||
To install the development kit for OpenCL, which includes the OpenCL header files, execute this installation command instead:
|
||||
|
||||
```shell
|
||||
sudo apt-get install rocm opencl-rocm-dev
|
||||
```
|
||||
|
||||
Then follow the direction for Debian Repository
|
||||
|
||||
###### Upon restart, To test your OpenCL instance
|
||||
|
||||
Build and run Hello World OCL app..
|
||||
|
||||
HelloWorld sample:
|
||||
```
|
||||
wget https://raw.githubusercontent.com/bgaster/opencl-book-samples/master/src/Chapter_2/HelloWorld/HelloWorld.cpp
|
||||
wget https://raw.githubusercontent.com/bgaster/opencl-book-samples/master/src/Chapter_2/HelloWorld/HelloWorld.cl
|
||||
```
|
||||
|
||||
Build it using the default ROCm OpenCL include and library locations:
|
||||
```
|
||||
g++ -I /opt/rocm/opencl/include/ ./HelloWorld.cpp -o HelloWorld -L/opt/rocm/opencl/lib/x86_64 -lOpenCL
|
||||
```
|
||||
|
||||
Run it:
|
||||
```
|
||||
./HelloWorld
|
||||
```
|
||||
|
||||
##### Un-install
|
||||
To un-install the entire rocm-dev development package execute:
|
||||
To un-install the entire rocm development package execute:
|
||||
|
||||
```shell
|
||||
sudo apt-get autoremove rocm
|
||||
@@ -125,9 +236,9 @@ If possible, we would recommend starting with a fresh OS install.
|
||||
|
||||
#### RPM repository - dnf (yum)
|
||||
|
||||
A dnf (yum) repostiory is also available for installation of rpm packages. To configure a
|
||||
system to use the ROCm rpm directory create the file /etc/yum.repos.d/rocm.repo with
|
||||
the following contents:
|
||||
A dnf (yum) repository is also available for installation of rpm packages.
|
||||
To configure a system to use the ROCm rpm directory create the file
|
||||
/etc/yum.repos.d/rocm.repo with the following contents:
|
||||
|
||||
```shell
|
||||
[remote]
|
||||
@@ -147,17 +258,26 @@ sudo dnf clean all
|
||||
sudo dnf install rocm
|
||||
```
|
||||
|
||||
As with the debian packages, it is possible to install rocm-dev or rocm-kernel individually.
|
||||
As with the debian packages, it is possible to install rocm-dev individually.
|
||||
To uninstall the packages execute:
|
||||
|
||||
```shell
|
||||
sudo dnf remove rocm
|
||||
```
|
||||
|
||||
#### Verify Installation
|
||||
Just like Ubuntu installs, the ROCm kernel must be the default kernel used at boot time.
|
||||
|
||||
#### Manual installation steps for Fedora
|
||||
|
||||
A fully functional Fedora installation requires a few manual steps to properly
|
||||
setup, including:
|
||||
* [Building compatible libc++ and libc++abi libraries for Fedora](https://github.com/RadeonOpenCompute/hcc/wiki#fedora)
|
||||
|
||||
#### Verify installation
|
||||
|
||||
To verify that the ROCm stack completed successfully you can execute to HSA
|
||||
vectory\_copy sample application:
|
||||
vectory\_copy sample application (we do recommend that you copy it to a
|
||||
separate folder and invoke make therein):
|
||||
|
||||
```shell
|
||||
cd /opt/rocm/hsa/sample
|
||||
@@ -165,7 +285,7 @@ make
|
||||
./vector_copy
|
||||
```
|
||||
|
||||
#### Closed Source Components
|
||||
#### Closed source components
|
||||
The ROCm platform relies on a few closed source components to provide legacy
|
||||
functionality like HSAIL finalization and debugging/profiling support. These
|
||||
components are only available through the ROCm repositories, and will either be
|
||||
@@ -174,11 +294,11 @@ made available in the following packages:
|
||||
|
||||
* hsa-ext-rocr-dev
|
||||
|
||||
### Getting ROCm Source Code
|
||||
Modifications can be made to the ROCm 1.1 components by modifying the open
|
||||
### Getting ROCm source code
|
||||
Modifications can be made to the ROCm 1.5 components by modifying the open
|
||||
source code base and rebuilding the components. Source code can be cloned from
|
||||
each of the GitHub repositories using git, or users can use the repo command
|
||||
and the ROCm 1.1 manifest file to download the entire ROCm 1.1 source code.
|
||||
and the ROCm 1.5 manifest file to download the entire ROCm 1.5 source code.
|
||||
|
||||
#### Installing repo
|
||||
Google's repo tool allows you to manage multiple git repositories
|
||||
@@ -193,9 +313,12 @@ Note: make sure ~/bin exists and it is part of your PATH
|
||||
#### Cloning the code
|
||||
```shell
|
||||
mkdir ROCm && cd ROCm
|
||||
repo init -u https://github.com/RadeonOpenCompute/ROCm.git -b roc-1.1.0
|
||||
repo init -u https://github.com/RadeonOpenCompute/ROCm.git -b roc-1.5.0
|
||||
repo sync
|
||||
```
|
||||
|
||||
These series of commands will pull all of the open source code associated with
|
||||
the ROCm 1.1 release.
|
||||
the ROCm 1.5 release. Please ensure that ssh-keys are configured for the
|
||||
target machine on GitHub for your GitHub ID.
|
||||
|
||||
* OpenCL Runtime and Compiler will be submitted to the Khronos Group, prior to
|
||||
the final release, for conformance testing.
|
||||
|
||||
22
default.xml
22
default.xml
@@ -2,26 +2,26 @@
|
||||
<manifest>
|
||||
|
||||
<remote name="roc-github"
|
||||
fetch="ssh://git@github.com/RadeonOpenCompute/" />
|
||||
fetch="http://git@github.com/RadeonOpenCompute/" />
|
||||
<remote name="pctools-github"
|
||||
fetch="ssh://git@github.com/GPUOpen-ProfessionalCompute-Tools/" />
|
||||
fetch="http://git@github.com/GPUOpen-ProfessionalCompute-Tools/" />
|
||||
|
||||
<default revision="master"
|
||||
<default revision="roc-1.5.x"
|
||||
remote="roc-github"
|
||||
sync-j="4" />
|
||||
|
||||
<project path="llvm" name="llvm" />
|
||||
<project path="llvm-amdgpu-assembler-extra" name="LLVM-AMDGPU-Assembler-Extra" />
|
||||
<project path="clang" name="clang" />
|
||||
|
||||
<project path="hcc" name="hcc" />
|
||||
<project path="ROCT-Thunk-Interface" name="ROCT-Thunk-Interface" />
|
||||
<project path="ROCK-Kernel-Driver" name="ROCK-Kernel-Driver" />
|
||||
<project path="ROCT-Thunk-Interface" name="ROCT-Thunk-Interface" />
|
||||
<project path="ROC-smi" name="ROC-smi" />
|
||||
<project path="ROCnRDMA" name="ROCnRDMA" />
|
||||
<project path="rdma-perftest" name="rdma-perftest" />
|
||||
<project path="ROCR-Runtime" name="ROCR-Runtime" />
|
||||
<project path="hcc" name="hcc" />
|
||||
<project path="compiler-rt" name="compiler-rt" />
|
||||
<project path="HIP" remote="pctools-github" name="HIP" />
|
||||
<project path="HIP-Examples" remote="pctools-github" name="HIP-Examples" />
|
||||
<project path="atmi" name="atmi" revision="master" />
|
||||
<project path="llvm" name="llvm" />
|
||||
<project path="lld" name="lld" />
|
||||
<project path="hcc-clang-upgrade" name="hcc-clang-upgrade" />
|
||||
<project path="ROCm-Device-Libs" name="ROCm-Device-Libs" />
|
||||
|
||||
</manifest>
|
||||
|
||||
Reference in New Issue
Block a user