Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
5a107fa
Merge pull request #690 from amcamd/master
amcamd Sep 11, 2019
5c6dce4
Changed timeout from hours to minutes (#699)
amdkila Sep 13, 2019
ad53fd9
set clang include directory, fix for centos build error
amcamd Sep 13, 2019
98c58bc
Merge pull request #700 from amcamd/fix_centos
amcamd Sep 14, 2019
bb08062
hot fix to restore loading of DGEMM replacement kernels (#701)
zaliu Sep 17, 2019
6bf3b50
SLES support (#704)
saadrahim Sep 17, 2019
5471329
BF16 replacement kernels (#705)
zaliu Sep 19, 2019
ab003e4
Restore usebeta1 logic (#707)
zaliu Sep 19, 2019
45dce72
Supporting clang10 for SLES (#708)
saadrahim Sep 19, 2019
f19f5ae
Batched syr (#727)
TorreZuk Oct 4, 2019
88d4409
more BF16 TN sizes
zaliu Oct 5, 2019
1ae458c
Refactoring
Oct 5, 2019
ab30f40
Move tensile_host.hpp from public C API to private C++ implementation
Oct 5, 2019
b40411e
Work around missing complex; fix formatting
Oct 5, 2019
c6f375c
Remove --lib option and argument; make use of legacy handle API inste…
Oct 5, 2019
676b65a
gf908 BF16 TN 512x512x512 known issue
zaliu Oct 6, 2019
24abbf1
Merge pull request #740 from zaliu/bf16_more_sizes
zaliu Oct 7, 2019
a6d8347
Enable SLES packaging (#719)
saadrahim Oct 7, 2019
f7dc437
Refactor Ger and Gemv (#735)
mahmoodw Oct 7, 2019
d7d22db
Map values to value categories currently represented as double
Oct 7, 2019
ba0560b
Rot(m)(g) batched and strided_batched (#737)
daineAMD Oct 7, 2019
e6289b2
SWDEV 203994 (#743)
leekillough Oct 8, 2019
f394bba
merge master into develop before ROCm2.10
amcamd Oct 8, 2019
6ce0072
version for master branch release
amcamd Oct 8, 2019
65cc947
version for develop branch release
amcamd Oct 8, 2019
72c3b96
update Tensile package number
amcamd Oct 9, 2019
002c51f
Fixing SLES tests LD_LIBRARY_PATH and refactoring tests (#741)
saadrahim Oct 9, 2019
6be7cf6
Merge pull request #745 from amcamd/develop
amcamd Oct 9, 2019
1dbd838
New Winograd kernels added (#742)
amdkila Oct 9, 2019
d4b442a
Merge remote-tracking branch 'Bill/new_client_integration_2' into New…
Oct 9, 2019
2ded920
Merge remote-tracking branch 'ROCm/develop' into NewTensileClient
Oct 9, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ get_os_id(OS_ID)
message (STATUS "OS detected is ${OS_ID}")

# Versioning via rocm-cmake
set ( VERSION_STRING "2.9.0" )
set ( VERSION_STRING "2.11.0" )
rocm_setup_version( VERSION ${VERSION_STRING} )

# Append our library helper cmake path and the cmake path for hip (for convenience)
Expand Down Expand Up @@ -196,7 +196,7 @@ if( BUILD_WITH_TENSILE )
message (STATUS "using GIT Tensile fork=${tensile_fork} from branch=${tensile_tag}")
endif()
list(APPEND CMAKE_PREFIX_PATH ${VIRTUALENV_HOME_DIR})
find_package(Tensile 4.12.0 EXACT REQUIRED HIP LLVM OpenMP PATHS "${INSTALLED_TENSILE_PATH}")
find_package(Tensile 4.13.0 EXACT REQUIRED HIP LLVM OpenMP PATHS "${INSTALLED_TENSILE_PATH}")
endif()

# Find HCC/HIP dependencies
Expand Down
66 changes: 12 additions & 54 deletions Jenkinsfile
Original file line number Diff line number Diff line change
Expand Up @@ -76,77 +76,35 @@ rocBLASCI:
{
platform, project->

def command

if(platform.jenkinsLabel.contains('centos') || platform.jenkinsLabel.contains('sles'))
{
if(auxiliary.isJobStartedByTimer())
{
command = """#!/usr/bin/env bash
set -x
cd ${project.paths.project_build_prefix}/build/release/clients/staging
LD_LIBRARY_PATH=/opt/rocm/hcc/lib GTEST_LISTENER=NO_PASS_LINE_IN_LOG sudo ./rocblas-test --gtest_output=xml --gtest_color=yes --gtest_filter=*nightly*-*known_bug* #--gtest_filter=*nightly*
"""
String sudo = auxiliary.sudo(platform.jenkinsLabel)
def gfilter = auxiliary.isJobStartedByTimer() ? "*nightly*" : "*quick*:*pre_checkin*"

platform.runCommand(this, command)
junit "${project.paths.project_build_prefix}/build/release/clients/staging/*.xml"
}
else
{
command = """#!/usr/bin/env bash
def command = """#!/usr/bin/env bash
set -x
cd ${project.paths.project_build_prefix}/build/release/clients/staging
LD_LIBRARY_PATH=/opt/rocm/hcc/lib ./example-sscal
LD_LIBRARY_PATH=/opt/rocm/hcc/lib GTEST_LISTENER=NO_PASS_LINE_IN_LOG sudo ./rocblas-test --gtest_output=xml --gtest_color=yes --gtest_filter=*quick*:*pre_checkin*-*known_bug* #--gtest_filter=*checkin*
${sudo} LD_LIBRARY_PATH=/opt/rocm/hcc/lib GTEST_LISTENER=NO_PASS_LINE_IN_LOG ./rocblas-test --gtest_output=xml --gtest_color=yes --gtest_filter=${gfilter}-*known_bug*
"""

platform.runCommand(this, command)
junit "${project.paths.project_build_prefix}/build/release/clients/staging/*.xml"
}
}
else
{
if(auxiliary.isJobStartedByTimer())
{
command = """#!/usr/bin/env bash
set -x
cd ${project.paths.project_build_prefix}/build/release/clients/staging
LD_LIBRARY_PATH=/opt/rocm/hcc/lib GTEST_LISTENER=NO_PASS_LINE_IN_LOG ./rocblas-test --gtest_output=xml --gtest_color=yes --gtest_filter=*nightly*-*known_bug* #--gtest_filter=*nightly*
"""

platform.runCommand(this, command)
junit "${project.paths.project_build_prefix}/build/release/clients/staging/*.xml"
}
else
{
command = """#!/usr/bin/env bash
set -x
cd ${project.paths.project_build_prefix}/build/release/clients/staging
LD_LIBRARY_PATH=/opt/rocm/hcc/lib ./example-sscal
LD_LIBRARY_PATH=/opt/rocm/hcc/lib GTEST_LISTENER=NO_PASS_LINE_IN_LOG ./rocblas-test --gtest_output=xml --gtest_color=yes --gtest_filter=*quick*:*pre_checkin*-*known_bug* #--gtest_filter=*checkin*
"""

platform.runCommand(this, command)
junit "${project.paths.project_build_prefix}/build/release/clients/staging/*.xml"
}
}
platform.runCommand(this, command)
junit "${project.paths.project_build_prefix}/build/release/clients/staging/*.xml"
}

def packageCommand =
{
platform, project->
String sudo = auxiliary.sudo(platform.jenkinsLabel)

def command

if(platform.jenkinsLabel.contains('centos'))
if(platform.jenkinsLabel.contains('centos') || platform.jenkinsLabel.contains('sles'))
{
command = """
set -x
cd ${project.paths.project_build_prefix}/build/release
make package
mkdir -p package
mv *.rpm package/
rpm -qlp package/*.rpm
${sudo} make package
${sudo} mkdir -p package
${sudo} mv *.rpm package/
${sudo} rpm -qlp package/*.rpm
"""

platform.runCommand(this, command)
Expand Down
12 changes: 8 additions & 4 deletions bump_develop_version.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,16 @@
# - run this script in master branch
# - after running this script merge master into develop

OLD_ROCBLAS_VERSION="2.8.0"
NEW_ROCBLAS_VERSION="2.9.0"
OLD_ROCBLAS_VERSION="2.10.0"
NEW_ROCBLAS_VERSION="2.11.0"

OLD_TENSILE_VERSION="tensile_tag 015477ad8c8ea0ef6f59b8d49a65015b46b8a48e"
NEW_TENSILE_VERSION="tensile_tag 015477ad8c8ea0ef6f59b8d49a65015b46b8a48e"
OLD_TENSILE_VERSION="Tensile 4.12.0"
NEW_TENSILE_VERSION="Tensile 4.13.0"

OLD_TENSILE_HASH="fe4f721886d07eef6251cea4225e027181022aa5"
NEW_TENSILE_HASH="a9379f4e42efb754c9a618047bfbf292d74dfd0f"

sed -i "s/${OLD_ROCBLAS_VERSION}/${NEW_ROCBLAS_VERSION}/g" CMakeLists.txt
sed -i "s/${OLD_TENSILE_VERSION}/${NEW_TENSILE_VERSION}/g" CMakeLists.txt
sed -i "s/${OLD_TENSILE_HASH}/${NEW_TENSILE_HASH}/g" tensile_tag.txt

14 changes: 9 additions & 5 deletions bump_master_version.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,20 +6,24 @@
# - after running this script and merging develop into master, run bump_develop_version.sh in master and
# merge master into develop

OLD_ROCBLAS_VERSION="2.7.0"
NEW_ROCBLAS_VERSION="2.8.0"
OLD_ROCBLAS_VERSION="2.9.0"
NEW_ROCBLAS_VERSION="2.10.0"

OLD_TENSILE_VERSION="tensile_tag 9c63a0bf1c0acdb44376ddc80b867beb3386981a"
NEW_TENSILE_VERSION="tensile_tag 015477ad8c8ea0ef6f59b8d49a65015b46b8a48e"
OLD_TENSILE_VERSION="Tensile 4.12.0"
NEW_TENSILE_VERSION="Tensile 4.13.0"

OLD_TENSILE_HASH="3ab0890743db4cca5244d0dab30a574fa34c89b8"
NEW_TENSILE_HASH="fe4f721886d07eef6251cea4225e027181022aa5"

OLD_MINIMUM_REQUIRED_VERSION="MinimumRequiredVersion: 4.6.0"
NEW_MINIMUM_REQUIRED_VERSION="MinimumRequiredVersion: 4.7.1"

sed -i "s/${OLD_ROCBLAS_VERSION}/${NEW_ROCBLAS_VERSION}/g" CMakeLists.txt
sed -i "s/${OLD_TENSILE_VERSION}/${NEW_TENSILE_VERSION}/g" CMakeLists.txt
sed -i "s/${OLD_TENSILE_HASH}/${NEW_TENSILE_HASH}/g" tensile_tag.txt

#only update yaml files for a Tensile major version change
#for FILE in library/src/blas3/Tensile/Logic/*/*yaml
#do
# sed -i "s/${OLD_MINIMUM_REQUIRED_VERSION}/${NEW_MINIMUM_REQUIRED_VERSION}/" $FILE
#done
#a9379f4e42efb754c9a618047bfbf292d74dfd0fdone
101 changes: 97 additions & 4 deletions clients/benchmarks/client.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,17 @@
#include "testing_nrm2_batched.hpp"
#include "testing_nrm2_strided_batched.hpp"
#include "testing_rot.hpp"
#include "testing_rot_batched.hpp"
#include "testing_rot_strided_batched.hpp"
#include "testing_rotg.hpp"
#include "testing_rotg_batched.hpp"
#include "testing_rotg_strided_batched.hpp"
#include "testing_rotm.hpp"
#include "testing_rotm_batched.hpp"
#include "testing_rotm_strided_batched.hpp"
#include "testing_rotmg.hpp"
#include "testing_rotmg_batched.hpp"
#include "testing_rotmg_strided_batched.hpp"
#include "testing_scal.hpp"
#include "testing_scal_batched.hpp"
#include "testing_scal_strided_batched.hpp"
Expand Down Expand Up @@ -174,14 +182,18 @@ struct perf_blas<
testing_set_get_vector<T>(arg);
else if(!strcmp(arg.function, "set_get_matrix"))
testing_set_get_matrix<T>(arg);
else if(!strcmp(arg.function, "rot"))
testing_rot<T>(arg);
else if(!strcmp(arg.function, "rotg"))
testing_rotg<T>(arg);
else if(!strcmp(arg.function, "rotm"))
testing_rotm<T>(arg);
else if(!strcmp(arg.function, "rotm_batched"))
testing_rotm_batched<T>(arg);
else if(!strcmp(arg.function, "rotm_strided_batched"))
testing_rotm_strided_batched<T>(arg);
else if(!strcmp(arg.function, "rotmg"))
testing_rotmg<T>(arg);
else if(!strcmp(arg.function, "rotmg_batched"))
testing_rotmg_batched<T>(arg);
else if(!strcmp(arg.function, "rotmg_strided_batched"))
testing_rotmg_strided_batched<T>(arg);
else if(!strcmp(arg.function, "gemv"))
testing_gemv<T>(arg);
else if(!strcmp(arg.function, "gemv_batched"))
Expand Down Expand Up @@ -326,6 +338,47 @@ struct perf_blas<T,
}
};

template <typename Ti, typename To = Ti, typename Tc = To, typename = void>
struct perf_blas_rot : rocblas_test_invalid
{
};

template <typename Ti, typename To, typename Tc>
struct perf_blas_rot<
Ti,
To,
Tc,
typename std::enable_if<(
(std::is_same<Ti, float>{} && std::is_same<Ti, To>{} && std::is_same<To, Tc>{})
|| (std::is_same<Ti, double>{} && std::is_same<Ti, To>{} && std::is_same<To, Tc>{})
|| (std::is_same<Ti, rocblas_float_complex>{} && std::is_same<To, float>{}
&& std::is_same<Tc, rocblas_float_complex>{})
|| (std::is_same<Ti, rocblas_float_complex>{} && std::is_same<To, float>{}
&& std::is_same<Tc, float>{})
|| (std::is_same<Ti, rocblas_double_complex>{} && std::is_same<To, double>{}
&& std::is_same<Tc, rocblas_double_complex>{})
|| (std::is_same<Ti, rocblas_double_complex>{} && std::is_same<To, double>{}
&& std::is_same<Tc, double>{}))>::type>
{
explicit operator bool()
{
return true;
}

void operator()(const Arguments& arg)
{
if(!strcmp(arg.function, "rot"))
testing_rot<Ti, To, Tc>(arg);
else if(!strcmp(arg.function, "rot_batched"))
testing_rot_batched<Ti, To, Tc>(arg);
else if(!strcmp(arg.function, "rot_strided_batched"))
testing_rot_strided_batched<Ti, To, Tc>(arg);
else
throw std::invalid_argument("Invalid combination --function "s + arg.function
+ " --a_type "s + rocblas_datatype2string(arg.a_type));
}
};

template <typename Ta, typename Tb = Ta, typename = void>
struct perf_blas_scal : rocblas_test_invalid
{
Expand Down Expand Up @@ -361,6 +414,40 @@ struct perf_blas_scal<
}
};

template <typename Ta, typename Tb = Ta, typename = void>
struct perf_blas_rotg : rocblas_test_invalid
{
};

template <typename Ta, typename Tb>
struct perf_blas_rotg<
Ta,
Tb,
typename std::enable_if<
(std::is_same<Ta, rocblas_double_complex>{} && std::is_same<Tb, double>{})
|| (std::is_same<Ta, rocblas_float_complex>{} && std::is_same<Tb, float>{})
|| (std::is_same<Ta, Tb>{} && std::is_same<Ta, float>{})
|| (std::is_same<Ta, Tb>{} && std::is_same<Ta, double>{})>::type>
{
explicit operator bool()
{
return true;
}
void operator()(const Arguments& arg)
{
if(!strcmp(arg.function, "rotg"))
testing_rotg<Ta, Tb>(arg);
else if(!strcmp(arg.function, "rotg_batched"))
testing_rotg_batched<Ta, Tb>(arg);
else if(!strcmp(arg.function, "rotg_strided_batched"))
testing_rotg_strided_batched<Ta, Tb>(arg);
else
throw std::invalid_argument("Invalid combination --function "s + arg.function
+ " --a_type " + rocblas_datatype2string(arg.a_type)
+ " --b_type " + rocblas_datatype2string(arg.b_type));
}
};

int run_bench_test(Arguments& arg)
{
// disable unit_check in client benchmark, it is only used in gtest unit test
Expand Down Expand Up @@ -523,6 +610,12 @@ int run_bench_test(Arguments& arg)
if(!strcmp(function, "scal") || !strcmp(function, "scal_batched")
|| !strcmp(function, "scal_strided_batched"))
rocblas_blas1_dispatch<perf_blas_scal>(arg);
else if(!strcmp(function, "rotg") || !strcmp(function, "rotg_batched")
|| !strcmp(function, "rotg_strided_batched"))
rocblas_blas1_dispatch<perf_blas_rotg>(arg);
else if(!strcmp(function, "rot") || !strcmp(function, "rot_batched")
|| !strcmp(function, "rot_strided_batched"))
rocblas_blas1_dispatch<perf_blas_rot>(arg);
else
rocblas_simple_dispatch<perf_blas>(arg);
}
Expand Down
50 changes: 41 additions & 9 deletions clients/common/rocblas_gentest.py
Original file line number Diff line number Diff line change
Expand Up @@ -199,21 +199,53 @@ def setdefaults(test):
if test['function'] in ('asum_strided_batched', 'nrm2_strided_batched',
'scal_strided_batched', 'swap_strided_batched',
'copy_strided_batched', 'dot_strided_batched',
'dotc_strided_batched'):
'dotc_strided_batched', 'rot_strided_batched',
'rotm_strided_batched'):
if all([x in test for x in ('N', 'incx', 'stride_scale')]):
test.setdefault('stride_x', int(test['N'] * abs(test['incx']) *
test['stride_scale']))
if all([x in test for x in ('N', 'incy', 'stride_scale')]):
test.setdefault('stride_y', int(test['N'] * abs(test['incy']) *
test['stride_scale']))

if test['function'] in ('ger_strided_batched'):
if all([x in test for x in ('M', 'incx', 'stride_scale')]):
test.setdefault('stride_x', int(test['M'] * abs(test['incx']) *
test['stride_scale']))
if all([x in test for x in ('N', 'incy', 'stride_scale')]):
test.setdefault('stride_y', int(test['N'] * abs(test['incy']) *
test['stride_scale']))
# we are using stride_c for param in rotm
if all([x in test for x in ('stride_scale')]):
test.setdefault('stride_c', int(test['stride_scale']) * 5)

if test['function'] in ('gemv_strided_batched', 'ger_strided_batched'):
if test['function'] in ('ger_strided_batched') or test['transA'] in ('T', 'C'):
if all([x in test for x in ('M', 'incx', 'stride_scale')]):
test.setdefault('stride_x', int(test['M'] * abs(test['incx']) *
test['stride_scale']))
if all([x in test for x in ('N', 'incy', 'stride_scale')]):
test.setdefault('stride_y', int(test['N'] * abs(test['incy']) *
test['stride_scale']))
else:
if all([x in test for x in ('N', 'incx', 'stride_scale')]):
test.setdefault('stride_x', int(test['N'] * abs(test['incx']) *
test['stride_scale']))
if all([x in test for x in ('M', 'incy', 'stride_scale')]):
test.setdefault('stride_y', int(test['M'] * abs(test['incy']) *
test['stride_scale']))

# we are using stride_c for arg c and stride_d for arg s in rotg
# these are are single values for each batch
if test['function'] in ('rotg_strided_batched'):
if 'stride_scale' in test:
test.setdefault('stride_a', int(test['stride_scale']))
test.setdefault('stride_b', int(test['stride_scale']))
test.setdefault('stride_c', int(test['stride_scale']))
test.setdefault('stride_d', int(test['stride_scale']))

# we are using stride_a for d1, stride_b for d2, and stride_c for param in
# rotmg. These are are single values for each batch, except param which is
# a 5 element array
if test['function'] in ('rotmg_strided_batched'):
if 'stride_scale' in test:
test.setdefault('stride_a', int(test['stride_scale']))
test.setdefault('stride_b', int(test['stride_scale']))
test.setdefault('stride_c', int(test['stride_scale']) * 5)
test.setdefault('stride_x', int(test['stride_scale']))
test.setdefault('stride_y', int(test['stride_scale']))

test.setdefault('stride_x', 0)
test.setdefault('stride_y', 0)
Expand Down
2 changes: 1 addition & 1 deletion clients/gtest/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,7 @@ endif( )
set( ROCBLAS_TEST_DATA "${PROJECT_BINARY_DIR}/staging/rocblas_gtest.data")
add_custom_command( OUTPUT "${ROCBLAS_TEST_DATA}"
COMMAND ../common/rocblas_gentest.py -I ../include rocblas_gtest.yaml -o "${ROCBLAS_TEST_DATA}"
DEPENDS ../common/rocblas_gentest.py rocblas_gtest.yaml ../include/rocblas_common.yaml known_bugs.yaml blas1_gtest.yaml gemm_gtest.yaml gemm_batched_gtest.yaml gemm_strided_batched_gtest.yaml gemv_gtest.yaml gemv_batched_gtest.yaml gemv_strided_batched_gtest.yaml symv_gtest.yaml syr_gtest.yaml ger_gtest.yaml trsm_gtest.yaml trtri_gtest.yaml geam_gtest.yaml set_get_vector_gtest.yaml set_get_matrix_gtest.yaml trsv_gtest.yaml logging_mode_gtest.yaml set_get_pointer_mode_gtest.yaml
DEPENDS ../common/rocblas_gentest.py rocblas_gtest.yaml ../include/rocblas_common.yaml known_bugs.yaml blas1_gtest.yaml gemm_gtest.yaml gemm_batched_gtest.yaml gemm_strided_batched_gtest.yaml gemv_gtest.yaml symv_gtest.yaml syr_gtest.yaml ger_gtest.yaml trsm_gtest.yaml trtri_gtest.yaml geam_gtest.yaml set_get_vector_gtest.yaml set_get_matrix_gtest.yaml trsv_gtest.yaml logging_mode_gtest.yaml set_get_pointer_mode_gtest.yaml
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" )
add_custom_target( rocblas-test-data
DEPENDS "${ROCBLAS_TEST_DATA}" )
Expand Down
Loading