Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
gaoqiong
MIGraphX
Commits
5488b443
Unverified
Commit
5488b443
authored
Nov 16, 2023
by
Artur Wojcik
Committed by
GitHub
Nov 16, 2023
Browse files
fix detection of hiprtc driver on Windows (#2401)
parent
0039b11a
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
37 additions
and
5 deletions
+37
-5
src/dynamic_loader.cpp
src/dynamic_loader.cpp
+24
-0
src/include/migraphx/dynamic_loader.hpp
src/include/migraphx/dynamic_loader.hpp
+0
-3
src/targets/gpu/compile_hip.cpp
src/targets/gpu/compile_hip.cpp
+13
-2
No files found.
src/dynamic_loader.cpp
View file @
5488b443
...
@@ -130,6 +130,30 @@ struct dynamic_loader_impl
...
@@ -130,6 +130,30 @@ struct dynamic_loader_impl
tmp_dir
temp
;
tmp_dir
temp
;
};
};
fs
::
path
dynamic_loader
::
path
(
void
*
address
)
{
HMODULE
module
=
nullptr
;
if
(
GetModuleHandleEx
(
GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS
|
GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT
,
static_cast
<
LPCSTR
>
(
address
),
&
module
)
==
0
)
{
auto
err
=
GetLastError
();
MIGRAPHX_THROW
(
"Unable to obtain module handle, error = "
+
std
::
to_string
(
err
));
}
TCHAR
buffer
[
MAX_PATH
];
if
(
GetModuleFileName
(
module
,
buffer
,
sizeof
(
buffer
))
==
0
)
{
auto
err
=
GetLastError
();
MIGRAPHX_THROW
(
"Unable to read module file path, error = "
+
std
::
to_string
(
err
));
}
if
(
GetLastError
()
==
ERROR_INSUFFICIENT_BUFFER
)
{
MIGRAPHX_THROW
(
"Buffer too small ("
+
std
::
to_string
(
MAX_PATH
)
+
") to hold the path"
);
}
return
{
buffer
};
}
#endif
#endif
optional
<
dynamic_loader
>
dynamic_loader
::
try_load
(
const
fs
::
path
&
p
)
optional
<
dynamic_loader
>
dynamic_loader
::
try_load
(
const
fs
::
path
&
p
)
...
...
src/include/migraphx/dynamic_loader.hpp
View file @
5488b443
...
@@ -38,15 +38,12 @@ struct dynamic_loader_impl;
...
@@ -38,15 +38,12 @@ struct dynamic_loader_impl;
struct
MIGRAPHX_EXPORT
dynamic_loader
struct
MIGRAPHX_EXPORT
dynamic_loader
{
{
#ifndef _WIN32
template
<
class
T
>
template
<
class
T
>
static
fs
::
path
path
(
T
*
address
)
static
fs
::
path
path
(
T
*
address
)
{
{
return
path
(
reinterpret_cast
<
void
*>
(
address
));
return
path
(
reinterpret_cast
<
void
*>
(
address
));
}
}
static
fs
::
path
path
(
void
*
address
);
static
fs
::
path
path
(
void
*
address
);
#endif
static
optional
<
dynamic_loader
>
try_load
(
const
fs
::
path
&
p
);
static
optional
<
dynamic_loader
>
try_load
(
const
fs
::
path
&
p
);
dynamic_loader
()
=
default
;
dynamic_loader
()
=
default
;
...
...
src/targets/gpu/compile_hip.cpp
View file @
5488b443
...
@@ -251,10 +251,21 @@ compile_hip_src(const std::vector<src_file>& srcs, std::string params, const std
...
@@ -251,10 +251,21 @@ compile_hip_src(const std::vector<src_file>& srcs, std::string params, const std
std
::
cout
<<
std
::
string
(
src
.
content
)
<<
std
::
endl
;
std
::
cout
<<
std
::
string
(
src
.
content
)
<<
std
::
endl
;
}
}
}
}
auto
fname
=
fs
::
path
{
"migraphx-hiprtc-driver"
};
#ifdef _WIN32
fname
.
replace_extension
(
".exe"
);
#endif
auto
p
=
dynamic_loader
::
path
(
&
compile_hip_src_with_hiprtc
);
auto
p
=
dynamic_loader
::
path
(
&
compile_hip_src_with_hiprtc
);
auto
driver
=
p
.
parent_path
().
parent_path
()
/
"bin"
/
"migraphx-hiprtc-driver"
;
auto
driver
=
p
.
parent_path
()
/
fname
;
bool
found
=
fs
::
exists
(
driver
);
if
(
not
found
)
{
driver
=
p
.
parent_path
().
parent_path
()
/
"bin"
/
fname
;
found
=
fs
::
exists
(
driver
);
}
if
(
f
s
::
exists
(
driver
)
)
if
(
f
ound
)
{
{
value
v
;
value
v
;
v
[
"srcs"
]
=
to_value
(
hsrcs
);
v
[
"srcs"
]
=
to_value
(
hsrcs
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment