Unverified Commit 04e17804 authored by kahmed10's avatar kahmed10 Committed by GitHub
Browse files

Update Docker to ROCm 4.5 and support Navi on Jenkins (#994)

Moving our Docker file from ROCm 4.3 to 4.5 
Add Navi base GPUs in to the CI infrastructure 
parent eb6abd27
...@@ -6,7 +6,7 @@ ARG PREFIX=/usr/local ...@@ -6,7 +6,7 @@ ARG PREFIX=/usr/local
RUN dpkg --add-architecture i386 RUN dpkg --add-architecture i386
# Add rocm repository # Add rocm repository
RUN sh -c 'echo deb [arch=amd64 trusted=yes] http://repo.radeon.com/rocm/apt/4.2/ xenial main > /etc/apt/sources.list.d/rocm.list' RUN sh -c 'echo deb [arch=amd64 trusted=yes] http://repo.radeon.com/rocm/apt/4.5/ ubuntu main > /etc/apt/sources.list.d/rocm.list'
# Install dependencies # Install dependencies
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --allow-unauthenticated \ RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --allow-unauthenticated \
...@@ -32,6 +32,8 @@ RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --allow- ...@@ -32,6 +32,8 @@ RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --allow-
software-properties-common \ software-properties-common \
wget \ wget \
rocm-device-libs \ rocm-device-libs \
hip-base \
libnuma-dev \
miopen-hip \ miopen-hip \
rocblas \ rocblas \
zlib1g-dev && \ zlib1g-dev && \
......
...@@ -20,7 +20,7 @@ def rocmtestnode(Map conf) { ...@@ -20,7 +20,7 @@ def rocmtestnode(Map conf) {
rm -rf build rm -rf build
mkdir build mkdir build
cd build cd build
CXX=${compiler} CXXFLAGS='-Werror -Wno-fallback' cmake -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache ${flags} .. CXX=${compiler} CXXFLAGS='-Werror' cmake -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache ${flags} ..
make -j\$(nproc) generate all doc package check VERBOSE=1 make -j\$(nproc) generate all doc package check VERBOSE=1
""" """
echo cmd echo cmd
...@@ -75,6 +75,8 @@ def rocmnodename(name) { ...@@ -75,6 +75,8 @@ def rocmnodename(name) {
node_name = "${rocmtest_name} && fiji"; node_name = "${rocmtest_name} && fiji";
} else if(name == "vega") { } else if(name == "vega") {
node_name = "${rocmtest_name} && vega"; node_name = "${rocmtest_name} && vega";
} else if(name == "navi21") {
node_name = "${rocmtest_name} && navi21";
} else if(name == "nogpu") { } else if(name == "nogpu") {
return rocmtest_name; return rocmtest_name;
} }
...@@ -110,6 +112,10 @@ rocmtest clang_debug: rocmnode('vega') { cmake_build -> ...@@ -110,6 +112,10 @@ rocmtest clang_debug: rocmnode('vega') { cmake_build ->
def debug_flags = "-g -O2 -fno-omit-frame-pointer -fsanitize=${sanitizers} -fno-sanitize-recover=${sanitizers}" def debug_flags = "-g -O2 -fno-omit-frame-pointer -fsanitize=${sanitizers} -fno-sanitize-recover=${sanitizers}"
cmake_build("/opt/rocm/llvm/bin/clang++", "-DCMAKE_BUILD_TYPE=debug -DMIGRAPHX_ENABLE_PYTHON=Off -DMIGRAPHX_ENABLE_GPU=Off -DMIGRAPHX_ENABLE_CPU=On -DCMAKE_CXX_FLAGS_DEBUG='${debug_flags}'") cmake_build("/opt/rocm/llvm/bin/clang++", "-DCMAKE_BUILD_TYPE=debug -DMIGRAPHX_ENABLE_PYTHON=Off -DMIGRAPHX_ENABLE_GPU=Off -DMIGRAPHX_ENABLE_CPU=On -DCMAKE_CXX_FLAGS_DEBUG='${debug_flags}'")
} }
}, clang_release_navi: rocmnode('navi21') { cmake_build ->
stage('HIP Clang Release Navi') {
cmake_build("/opt/rocm/llvm/bin/clang++", "-DCMAKE_BUILD_TYPE=release")
}
} }
def onnxnode(name, body) { def onnxnode(name, body) {
......
...@@ -6,7 +6,7 @@ ARG PREFIX=/usr/local ...@@ -6,7 +6,7 @@ ARG PREFIX=/usr/local
RUN dpkg --add-architecture i386 RUN dpkg --add-architecture i386
# Add rocm repository # Add rocm repository
RUN sh -c 'echo deb [arch=amd64 trusted=yes] http://repo.radeon.com/rocm/apt/4.2/ xenial main > /etc/apt/sources.list.d/rocm.list' RUN sh -c 'echo deb [arch=amd64 trusted=yes] http://repo.radeon.com/rocm/apt/4.5/ ubuntu main > /etc/apt/sources.list.d/rocm.list'
# Install dependencies # Install dependencies
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --allow-unauthenticated \ RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --allow-unauthenticated \
...@@ -29,6 +29,8 @@ RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --allow- ...@@ -29,6 +29,8 @@ RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --allow-
software-properties-common \ software-properties-common \
wget \ wget \
rocm-device-libs \ rocm-device-libs \
hip-base \
libnuma-dev \
miopen-hip \ miopen-hip \
rocblas \ rocblas \
zlib1g-dev && \ zlib1g-dev && \
......
...@@ -252,7 +252,7 @@ struct shape : MIGRAPHX_CONST_HANDLE_BASE(shape) ...@@ -252,7 +252,7 @@ struct shape : MIGRAPHX_CONST_HANDLE_BASE(shape)
const size_t* pout; const size_t* pout;
size_t pout_size; size_t pout_size;
call(&migraphx_shape_lengths, &pout, &pout_size, this->get_handle_ptr()); call(&migraphx_shape_lengths, &pout, &pout_size, this->get_handle_ptr());
return std::vector<size_t>(pout, pout + pout_size); return {pout, pout + pout_size};
} }
std::vector<size_t> strides() const std::vector<size_t> strides() const
...@@ -260,7 +260,7 @@ struct shape : MIGRAPHX_CONST_HANDLE_BASE(shape) ...@@ -260,7 +260,7 @@ struct shape : MIGRAPHX_CONST_HANDLE_BASE(shape)
const size_t* pout; const size_t* pout;
size_t pout_size; size_t pout_size;
call(&migraphx_shape_strides, &pout, &pout_size, this->get_handle_ptr()); call(&migraphx_shape_strides, &pout, &pout_size, this->get_handle_ptr());
return std::vector<size_t>(pout, pout + pout_size); return {pout, pout + pout_size};
} }
migraphx_shape_datatype_t type() const migraphx_shape_datatype_t type() const
...@@ -312,7 +312,7 @@ struct argument : MIGRAPHX_CONST_HANDLE_BASE(argument) ...@@ -312,7 +312,7 @@ struct argument : MIGRAPHX_CONST_HANDLE_BASE(argument)
{ {
const_migraphx_shape_t pout; const_migraphx_shape_t pout;
call(&migraphx_argument_shape, &pout, this->get_handle_ptr()); call(&migraphx_argument_shape, &pout, this->get_handle_ptr());
return shape(pout); return {pout};
} }
char* data() const char* data() const
...@@ -325,9 +325,8 @@ struct argument : MIGRAPHX_CONST_HANDLE_BASE(argument) ...@@ -325,9 +325,8 @@ struct argument : MIGRAPHX_CONST_HANDLE_BASE(argument)
/// Generate an argument using random data /// Generate an argument using random data
static argument generate(shape ps, size_t pseed = 0) static argument generate(shape ps, size_t pseed = 0)
{ {
return argument( return {make<migraphx_argument>(&migraphx_argument_generate, ps.get_handle_ptr(), pseed),
make<migraphx_argument>(&migraphx_argument_generate, ps.get_handle_ptr(), pseed), own{}};
own{});
} }
friend bool operator==(const argument& px, const argument& py) friend bool operator==(const argument& px, const argument& py)
...@@ -378,7 +377,7 @@ struct program_parameter_shapes : MIGRAPHX_HANDLE_BASE(program_parameter_shapes) ...@@ -378,7 +377,7 @@ struct program_parameter_shapes : MIGRAPHX_HANDLE_BASE(program_parameter_shapes)
{ {
const_migraphx_shape_t pout; const_migraphx_shape_t pout;
call(&migraphx_program_parameter_shapes_get, &pout, this->get_handle_ptr(), pname); call(&migraphx_program_parameter_shapes_get, &pout, this->get_handle_ptr(), pname);
return shape(pout); return {pout};
} }
std::vector<const char*> names() const std::vector<const char*> names() const
...@@ -438,7 +437,7 @@ struct arguments : MIGRAPHX_HANDLE_BASE(arguments), array_base<arguments> ...@@ -438,7 +437,7 @@ struct arguments : MIGRAPHX_HANDLE_BASE(arguments), array_base<arguments>
{ {
const_migraphx_argument_t pout; const_migraphx_argument_t pout;
call(&migraphx_arguments_get, &pout, this->get_handle_ptr(), pidx); call(&migraphx_arguments_get, &pout, this->get_handle_ptr(), pidx);
return argument(pout); return {pout};
} }
struct iterator_read struct iterator_read
...@@ -449,7 +448,7 @@ struct arguments : MIGRAPHX_HANDLE_BASE(arguments), array_base<arguments> ...@@ -449,7 +448,7 @@ struct arguments : MIGRAPHX_HANDLE_BASE(arguments), array_base<arguments>
const_migraphx_argument_t pout; const_migraphx_argument_t pout;
call(&migraphx_arguments_get, &pout, self, pidx); call(&migraphx_arguments_get, &pout, self, pidx);
return argument(pout); return {pout};
} }
}; };
}; };
...@@ -471,7 +470,7 @@ struct shapes : MIGRAPHX_HANDLE_BASE(shapes), array_base<shapes> ...@@ -471,7 +470,7 @@ struct shapes : MIGRAPHX_HANDLE_BASE(shapes), array_base<shapes>
{ {
const_migraphx_shape_t pout; const_migraphx_shape_t pout;
call(&migraphx_shapes_get, &pout, this->get_handle_ptr(), pidx); call(&migraphx_shapes_get, &pout, this->get_handle_ptr(), pidx);
return shape(pout); return {pout};
} }
struct iterator_read struct iterator_read
...@@ -481,7 +480,7 @@ struct shapes : MIGRAPHX_HANDLE_BASE(shapes), array_base<shapes> ...@@ -481,7 +480,7 @@ struct shapes : MIGRAPHX_HANDLE_BASE(shapes), array_base<shapes>
{ {
const_migraphx_shape_t pout; const_migraphx_shape_t pout;
call(&migraphx_shapes_get, &pout, self, pidx); call(&migraphx_shapes_get, &pout, self, pidx);
return shape(pout); return {pout};
} }
}; };
}; };
...@@ -609,7 +608,7 @@ struct operation : MIGRAPHX_HANDLE_BASE(operation) ...@@ -609,7 +608,7 @@ struct operation : MIGRAPHX_HANDLE_BASE(operation)
{ {
std::array<char, 1024> out_name; std::array<char, 1024> out_name;
call(&migraphx_operation_name, out_name.data(), 1024, this->get_handle_ptr()); call(&migraphx_operation_name, out_name.data(), 1024, this->get_handle_ptr());
return std::string(out_name.data()); return {out_name.data()};
} }
}; };
......
...@@ -35,7 +35,7 @@ struct if_op ...@@ -35,7 +35,7 @@ struct if_op
MIGRAPHX_THROW("IF: output shapes of submodules must be the same."); MIGRAPHX_THROW("IF: output shapes of submodules must be the same.");
} }
return shape(out_shapes0); return {out_shapes0};
} }
argument compute(const shape&, argument compute(const shape&,
......
...@@ -54,7 +54,7 @@ struct loop ...@@ -54,7 +54,7 @@ struct loop
ins_out_shapes.push_back({out_s.type(), lens}); ins_out_shapes.push_back({out_s.type(), lens});
} }
return shape(ins_out_shapes); return {ins_out_shapes};
} }
struct ref_loop struct ref_loop
......
...@@ -45,7 +45,7 @@ struct topk ...@@ -45,7 +45,7 @@ struct topk
shape s_val{type, lens}; shape s_val{type, lens};
shape s_ind{shape::int64_type, lens}; shape s_ind{shape::int64_type, lens};
return shape({s_val, s_ind}); return {{s_val, s_ind}};
} }
template <class T, class Compare> template <class T, class Compare>
...@@ -131,7 +131,7 @@ struct topk ...@@ -131,7 +131,7 @@ struct topk
}); });
}); });
return argument({res_val, res_ind}); return {{res_val, res_ind}};
} }
}; };
......
...@@ -106,7 +106,7 @@ argument run_loop(const LoopModel& model, ...@@ -106,7 +106,7 @@ argument run_loop(const LoopModel& model,
std::copy(in_args.begin() + 2, in_args.end(), out_args.begin()); std::copy(in_args.begin() + 2, in_args.end(), out_args.begin());
model.set_zero(ctx, scan_outputs, iter); model.set_zero(ctx, scan_outputs, iter);
return argument(out_args); return {out_args};
} }
} // namespace MIGRAPHX_INLINE_NS } // namespace MIGRAPHX_INLINE_NS
......
...@@ -71,7 +71,7 @@ std::string trim(const std::string& s, F f) ...@@ -71,7 +71,7 @@ std::string trim(const std::string& s, F f)
{ {
auto start = std::find_if_not(s.begin(), s.end(), f); auto start = std::find_if_not(s.begin(), s.end(), f);
auto last = std::find_if_not(s.rbegin(), std::string::const_reverse_iterator(start), f).base(); auto last = std::find_if_not(s.rbegin(), std::string::const_reverse_iterator(start), f).base();
return std::string(start, last); return {start, last};
} }
inline std::string trim(const std::string& s) inline std::string trim(const std::string& s)
......
...@@ -73,7 +73,7 @@ dnnl::memory::desc to_dnnl_memory_desc(const shape& s) ...@@ -73,7 +73,7 @@ dnnl::memory::desc to_dnnl_memory_desc(const shape& s)
dnnl::memory to_dnnl_memory(const dnnl::memory::desc& desc, const argument& a) dnnl::memory to_dnnl_memory(const dnnl::memory::desc& desc, const argument& a)
{ {
return dnnl::memory(desc, get_dnnl_context().engine, a.data()); return {desc, get_dnnl_context().engine, a.data()};
} }
dnnl::memory to_dnnl_memory(const argument& a) dnnl::memory to_dnnl_memory(const argument& a)
......
...@@ -11,7 +11,7 @@ std::vector<char> msgpack_buffer(const T& src) ...@@ -11,7 +11,7 @@ std::vector<char> msgpack_buffer(const T& src)
msgpack::pack(buffer, src); msgpack::pack(buffer, src);
buffer.seekg(0); buffer.seekg(0);
std::string str = buffer.str(); std::string str = buffer.str();
return std::vector<char>(str.data(), str.data() + str.size()); return std::vector<char>(str.data(), str.data() + str.size()); // NOLINT
} }
TEST_CASE(test_msgpack_empty_value) TEST_CASE(test_msgpack_empty_value)
......
...@@ -75,7 +75,7 @@ struct test_loop_op ...@@ -75,7 +75,7 @@ struct test_loop_op
ins_out_shapes.push_back({out_s.type(), lens}); ins_out_shapes.push_back({out_s.type(), lens});
} }
return migraphx::shape(ins_out_shapes); return {ins_out_shapes};
} }
struct test_loop : public migraphx::op::loop::ref_loop struct test_loop : public migraphx::op::loop::ref_loop
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment