Skip to content

New client host code#604

Merged
sdquiring merged 83 commits into
ROCm:developfrom
sdquiring:host-code-client
Aug 8, 2019
Merged

New client host code#604
sdquiring merged 83 commits into
ROCm:developfrom
sdquiring:host-code-client

Conversation

@sdquiring
Copy link
Copy Markdown
Contributor

@sdquiring sdquiring commented Jul 24, 2019

Summary of changes

  • Client executable is functional and writes .csv files which are compatible with the rest of the Python scripts.
  • The client executable is build as 'step 0' (0_Build 1_BenchmarkProblems 2_BenchmarkData 3_LibraryLogic) when running the main Tensile script
  • Currently we run both the old client and the new client, and compare the .csv files (so it takes longer than before).
  • Implemented all data types and kernel features necessary to pass nightly tests.

Reorganized files

  • lib/client is moved to Tensile/Source/client
  • lib/tests is moved to HostLibraryTests
  • The rest of lib/ is moved to Tensile/Source/lib
  • CMake files for Tensile have been moved to Tensile/cmake

User changes

  • Building the host unit tests requires
    • The fix for the CMake issue (see below)
    • Recursive checkout of Tensile
    • Packages: libboost-all-dev, llvm-6.0-dev

Your compiler should be set to hcc when invoking cmake:

$ cmake -D CMAKE_CXX_COMPILER=hcc -D CMAKE_BUILD_TYPE=Debug ../HostLibraryTests

Note the workaround (ROCm/hcc#1211):

Until the fix is available in hcc available through apt, you will need to patch /opt/rocm/lib/cmake/hcc/hcc-config.cmake on your machines in order to build Tensile (and rocBLAS once it's integrated). The dockerfile applies this automatically for CI, and there is a script to do this checked in:

$ sudo ./docker/scripts/fix_hcc_config

sdquiring added 30 commits May 16, 2019 17:34
 - It runs a given problem
 - Verification works
 - Logging is almost there.
 - Timing code is stubbed out.
 - TestData can now glob a directory.
 - TestData can now get a directory from an environment variable.
 - RunGEMMKernel_test now runs each library with each contraction.
Functional:
 - Repetition parameters
 - Basic timing
 - Result verification
 - Common code for writing CSV data
 - Common code for extracting common pieces of information from the
   problem/solution
It's usable separately.  Also this doesn't propagate the include
dependency on rocm_smi.h .
@sdquiring
Copy link
Copy Markdown
Contributor Author

Are there any other incoming PRs? This is getting ridiculous. I'm trying to get my changes in as soon as possible.

@amdkila amdkila self-requested a review August 8, 2019 16:47
Copy link
Copy Markdown
Contributor

@zaliu zaliu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM
With Tensile PR#604 and rocBLAS PR#639 (tweaked slightly), rocBLAS build succeeded on both Ubuntu and CentOS 7.6; rocblas-test passed on both also.
Please make matching changes to rocBLAS PR#639, then merge Tensile PR#604 then rocBLAS PR#639 in rapid succession to minimize rocBLAS CI breakage. Thanks.
p.s. It would be great if you would squash-merge this one.

Copy link
Copy Markdown
Contributor

@wbgilmartin wbgilmartin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Go!

@sdquiring sdquiring merged commit 8bc243c into ROCm:develop Aug 8, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants