Commit da011b99 authored by Paul's avatar Paul
Browse files

Add initial miopen code

parent f0d27006
...@@ -8,3 +8,4 @@ target_include_directories(rtg PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_D ...@@ -8,3 +8,4 @@ target_include_directories(rtg PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_D
add_subdirectory(onnx) add_subdirectory(onnx)
add_subdirectory(targets/cpu) add_subdirectory(targets/cpu)
add_subdirectory(targets/miopen)
list(APPEND CMAKE_PREFIX_PATH /opt/rocm /opt/rocm/hip /opt/rocm/hcc)
find_package(miopen)
if(NOT TARGET MIOpen)
message(SEND_ERROR "Cant find miopen")
endif()
add_library(rtg_miopen
miopen_target.cpp
)
rocm_clang_tidy_check(rtg_miopen)
target_link_libraries(rtg_miopen rtg MIOpen)
target_include_directories(rtg_miopen PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>)
#ifndef RTG_GUARD_RTGLIB_MIOPEN_TARGET_HPP
#define RTG_GUARD_RTGLIB_MIOPEN_TARGET_HPP
#include <rtg/program.hpp>
namespace rtg { namespace miopen {
struct miopen_target
{
std::string name() const;
void apply(program& p) const;
};
} // namespace miopen
} // namespace rtg
#endif
#include <rtg/miopen/miopen_target.hpp>
#include <rtg/manage_ptr.hpp>
#include <miopen/miopen.h>
namespace rtg { namespace miopen {
using miopen_handle = RTG_MANAGE_PTR(miopenHandle_t, miopenDestroy);
using tensor_descriptor = RTG_MANAGE_PTR(miopenTensorDescriptor_t, miopenDestroyTensorDescriptor);
using convolution_descriptor = RTG_MANAGE_PTR(miopenConvolutionDescriptor_t, miopenDestroyConvolutionDescriptor);
using activation_descriptor = RTG_MANAGE_PTR(miopenActivationDescriptor_t, miopenDestroyActivationDescriptor);
struct miopen_apply
{
program * prog;
void apply()
{
for(auto it = prog->begin();it != prog->end();it++) {
if (it->op.name() == "convolution") {
apply_convolution(it);
} else if (it->op.name() == "activation") {
apply_activation(it);
}
}
}
void apply_convolution(instruction_ref ins)
{
// auto&& op = any_cast<convolution>(ins->op);
// prog->replace_instruction(ins, miopen_convolution{op}, ins->arguments);
}
void apply_activation(instruction_ref ins)
{
}
};
std::string miopen_target::name() const
{
return "miopen";
}
void miopen_target::apply(program& p) const
{
miopen_apply{&p}.apply();
}
} // namespace miopen
} // namespace rtg
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