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
yangql
composable_kernel-1
Commits
ae98b52a
Commit
ae98b52a
authored
Aug 07, 2021
by
Chao Liu
Browse files
remove online compilation from CK
parent
cb954213
Changes
54
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
2 additions
and
697 deletions
+2
-697
host/online_compile/include/kernel_cache.hpp
host/online_compile/include/kernel_cache.hpp
+0
-97
host/online_compile/include/logger.hpp
host/online_compile/include/logger.hpp
+0
-23
host/online_compile/include/manage_ptr.hpp
host/online_compile/include/manage_ptr.hpp
+0
-76
host/online_compile/include/md5.hpp
host/online_compile/include/md5.hpp
+0
-12
host/online_compile/include/op_kernel_args.hpp
host/online_compile/include/op_kernel_args.hpp
+0
-40
host/online_compile/include/simple_hash.hpp
host/online_compile/include/simple_hash.hpp
+0
-44
host/online_compile/include/stringutils.hpp
host/online_compile/include/stringutils.hpp
+0
-133
host/online_compile/include/target_properties.hpp
host/online_compile/include/target_properties.hpp
+0
-56
host/online_compile/include/tmp_dir.hpp
host/online_compile/include/tmp_dir.hpp
+0
-26
host/online_compile/include/write_file.hpp
host/online_compile/include/write_file.hpp
+0
-30
host/online_compile/kernel.cpp.in
host/online_compile/kernel.cpp.in
+0
-70
host/online_compile/kernel_includes.cpp.in
host/online_compile/kernel_includes.cpp.in
+0
-80
host/online_compile/kernels_batch.cpp.in
host/online_compile/kernels_batch.cpp.in
+0
-1
host/solver/include/solver_common.hpp
host/solver/include/solver_common.hpp
+2
-9
No files found.
host/online_compile/include/kernel_cache.hpp
deleted
100644 → 0
View file @
cb954213
/*******************************************************************************
*
* MIT License
*
* Copyright (c) 2017 Advanced Micro Devices, Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
*******************************************************************************/
/* ************************************************************************
* Copyright 2015 Vratis, Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* ************************************************************************ */
#ifndef GUARD_OLC_KERNEL_CACHE_HPP_
#define GUARD_OLC_KERNEL_CACHE_HPP_
#include <handle.hpp>
#include <kernel.hpp>
#include <simple_hash.hpp>
#include <string>
#include <unordered_map>
#include <vector>
namespace
online_compile
{
/**
* @brief The KernelCache class Build and cache kernels
*
*/
class
KernelCache
{
public:
using
Key
=
std
::
pair
<
std
::
string
,
std
::
string
>
;
using
KernelMap
=
std
::
unordered_map
<
Key
,
std
::
vector
<
Kernel
>
,
SimpleHash
>
;
using
ProgramMap
=
std
::
unordered_map
<
Key
,
Program
,
SimpleHash
>
;
Kernel
AddKernel
(
const
Handle
&
h
,
const
std
::
string
&
algorithm
,
const
std
::
string
&
network_config
,
const
std
::
string
&
program_name
,
const
std
::
string
&
kernel_name
,
const
std
::
vector
<
size_t
>&
vld
,
const
std
::
vector
<
size_t
>&
vgd
,
std
::
string
params
=
""
,
std
::
size_t
cache_index
=
0
);
void
AddKernel
(
Key
key
,
Kernel
k
,
std
::
size_t
cache_index
);
void
ClearKernels
(
const
std
::
string
&
algorithm
,
const
std
::
string
&
network_config
);
const
std
::
vector
<
Kernel
>&
GetKernels
(
const
std
::
string
&
algorithm
,
const
std
::
string
&
network_config
);
bool
HasKernels
(
const
std
::
string
&
algorithm
,
const
std
::
string
&
network_config
)
const
;
bool
HasProgram
(
const
std
::
string
&
name
,
const
std
::
string
&
params
)
const
;
void
AddProgram
(
Program
prog
,
const
std
::
string
&
program_name
,
std
::
string
params
);
KernelCache
();
private:
KernelMap
kernel_map
;
ProgramMap
program_map
;
};
}
// namespace online_compile
#endif // GUARD_OLC_KERNEL_CACHE_HPP_
host/online_compile/include/logger.hpp
deleted
100644 → 0
View file @
cb954213
#ifndef _OLC_LOGGER_HPP_
#define _OLC_LOGGER_HPP_
#include <fstream>
namespace
online_compile
{
enum
class
LogLevel
{
Quiet
=
1
,
Error
=
2
,
Warning
=
3
,
Info
=
4
,
Info2
=
5
};
std
::
ostream
&
fdt_log
(
LogLevel
level
,
const
char
*
header
,
const
char
*
content
);
std
::
ostream
&
fdt_log
();
void
fdt_log_flush
();
};
// namespace online_compile
#endif
host/online_compile/include/manage_ptr.hpp
deleted
100644 → 0
View file @
cb954213
/*******************************************************************************
*
* MIT License
*
* Copyright (c) 2017 Advanced Micro Devices, Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
*******************************************************************************/
#ifndef GUARD_OLC_MANAGE_PTR_HPP
#define GUARD_OLC_MANAGE_PTR_HPP
#include <memory>
#include <type_traits>
namespace
online_compile
{
template
<
class
F
,
F
f
>
struct
manage_deleter
{
template
<
class
T
>
void
operator
()(
T
*
x
)
const
{
if
(
x
!=
nullptr
)
{
(
void
)
f
(
x
);
// NOLINT (cppcoreguidelines-owning-memory)
}
}
};
struct
null_deleter
{
template
<
class
T
>
void
operator
()(
T
*
/*x*/
)
const
{
}
};
template
<
class
T
,
class
F
,
F
f
>
using
manage_ptr
=
std
::
unique_ptr
<
T
,
manage_deleter
<
F
,
f
>>
;
template
<
class
T
>
struct
element_type
{
using
type
=
typename
T
::
element_type
;
};
template
<
class
T
>
using
remove_ptr
=
typename
std
::
conditional
<
std
::
is_pointer
<
T
>::
value
,
std
::
remove_pointer
<
T
>
,
element_type
<
T
>>::
type
::
type
;
template
<
class
T
>
using
shared
=
std
::
shared_ptr
<
remove_ptr
<
T
>>
;
}
// namespace online_compile
#define OLC_MANAGE_PTR(T, F) \
online_compile::manage_ptr<typename std::remove_pointer<T>::type, decltype(&F), &F> // NOLINT
#endif
host/online_compile/include/md5.hpp
deleted
100644 → 0
View file @
cb954213
#ifndef GUARD_OLC_MD5_HPP
#define GUARD_OLC_MD5_HPP
#include <string>
namespace
online_compile
{
std
::
string
md5
(
std
::
string
s
);
}
// namespace online_compile
#endif
host/online_compile/include/op_kernel_args.hpp
deleted
100644 → 0
View file @
cb954213
#ifndef OLC_GUARD_MLOPEN_OP_KERNEL_ARGS_HPP
#define OLC_GUARD_MLOPEN_OP_KERNEL_ARGS_HPP
#include <type_traits>
#include <cstdint>
#include <half.hpp>
#include <boost/container/small_vector.hpp>
namespace
online_compile
{
struct
OpKernelArg
{
OpKernelArg
(
char
val
,
size_t
sz
)
:
buffer
(
sz
)
{
std
::
fill
(
buffer
.
begin
(),
buffer
.
end
(),
val
);
}
template
<
typename
T
>
OpKernelArg
(
T
arg
)
:
buffer
(
sizeof
(
T
))
{
static_assert
(
std
::
is_trivial
<
T
>
{}
||
std
::
is_same
<
T
,
half_float
::
half
>
{},
"Only for trivial types"
);
*
(
reinterpret_cast
<
T
*>
(
buffer
.
data
()))
=
arg
;
}
template
<
typename
T
>
OpKernelArg
(
T
*
arg
)
// NOLINT
:
buffer
(
sizeof
(
T
*
))
{
*
(
reinterpret_cast
<
T
**>
(
buffer
.
data
()))
=
arg
;
is_ptr
=
true
;
}
std
::
size_t
size
()
const
{
return
buffer
.
size
();
};
boost
::
container
::
small_vector
<
char
,
8
>
buffer
;
bool
is_ptr
=
false
;
};
}
// namespace online_compile
#endif
host/online_compile/include/simple_hash.hpp
deleted
100644 → 0
View file @
cb954213
/*******************************************************************************
*
* MIT License
*
* Copyright (c) 2018 Advanced Micro Devices, Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
*******************************************************************************/
#ifndef GUARD_OLC_SIMPLE_HASH_HPP
#define GUARD_OLC_SIMPLE_HASH_HPP
#include <string>
namespace
online_compile
{
struct
SimpleHash
{
size_t
operator
()(
const
std
::
pair
<
std
::
string
,
std
::
string
>&
p
)
const
{
using
std
::
hash
;
return
(
hash
<
std
::
string
>
()(
p
.
first
)
^
hash
<
std
::
string
>
()(
p
.
second
));
}
};
}
// namespace online_compile
#endif
host/online_compile/include/stringutils.hpp
deleted
100644 → 0
View file @
cb954213
/*******************************************************************************
*
* MIT License
*
* Copyright (c) 2017 Advanced Micro Devices, Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
*******************************************************************************/
#ifndef GUARD_OLC_STRINGUTILS_HPP
#define GUARD_OLC_STRINGUTILS_HPP
#include <algorithm>
#include <iterator>
#include <numeric>
#include <string>
#include <vector>
#include <sstream>
#define OLC_STRINGIZE_1(...) #__VA_ARGS__
#define OLC_STRINGIZE(...) OLC_STRINGIZE_1(__VA_ARGS__)
namespace
online_compile
{
inline
std
::
string
ReplaceString
(
std
::
string
subject
,
const
std
::
string
&
search
,
const
std
::
string
&
replace
)
{
size_t
pos
=
0
;
while
((
pos
=
subject
.
find
(
search
,
pos
))
!=
std
::
string
::
npos
)
{
subject
.
replace
(
pos
,
search
.
length
(),
replace
);
pos
+=
replace
.
length
();
}
return
subject
;
}
inline
bool
EndsWith
(
const
std
::
string
&
value
,
const
std
::
string
&
suffix
)
{
if
(
suffix
.
size
()
>
value
.
size
())
return
false
;
else
return
std
::
equal
(
suffix
.
rbegin
(),
suffix
.
rend
(),
value
.
rbegin
());
}
template
<
class
Strings
>
inline
std
::
string
JoinStrings
(
Strings
strings
,
std
::
string
delim
)
{
auto
it
=
strings
.
begin
();
if
(
it
==
strings
.
end
())
return
""
;
auto
nit
=
std
::
next
(
it
);
return
std
::
accumulate
(
nit
,
strings
.
end
(),
*
it
,
[
&
](
std
::
string
x
,
std
::
string
y
)
{
return
x
+
delim
+
y
;
});
}
template
<
class
F
>
static
inline
std
::
string
TransformString
(
std
::
string
s
,
F
f
)
{
std
::
transform
(
s
.
begin
(),
s
.
end
(),
s
.
begin
(),
f
);
return
s
;
}
inline
std
::
string
ToUpper
(
std
::
string
s
)
{
return
TransformString
(
std
::
move
(
s
),
::
toupper
);
}
inline
bool
StartsWith
(
const
std
::
string
&
value
,
const
std
::
string
&
prefix
)
{
if
(
prefix
.
size
()
>
value
.
size
())
return
false
;
else
return
std
::
equal
(
prefix
.
begin
(),
prefix
.
end
(),
value
.
begin
());
}
inline
std
::
string
RemovePrefix
(
std
::
string
s
,
std
::
string
prefix
)
{
if
(
StartsWith
(
s
,
prefix
))
return
s
.
substr
(
prefix
.
length
());
else
return
s
;
}
inline
std
::
vector
<
std
::
string
>
SplitSpaceSeparated
(
const
std
::
string
&
in
)
{
std
::
istringstream
ss
(
in
);
std
::
istream_iterator
<
std
::
string
>
begin
(
ss
),
end
;
return
{
begin
,
end
};
}
inline
std
::
vector
<
std
::
string
>
SplitSpaceSeparated
(
const
std
::
string
&
in
,
const
std
::
vector
<
std
::
string
>&
dontSplitAfter
)
{
std
::
vector
<
std
::
string
>
rv
;
std
::
istringstream
ss
(
in
);
std
::
string
s
;
while
(
ss
>>
s
)
{
if
(
std
::
any_of
(
dontSplitAfter
.
begin
(),
dontSplitAfter
.
end
(),
[
&
](
const
auto
&
dont
)
{
return
dont
==
s
;
}))
{
std
::
string
s2
;
if
(
ss
>>
s2
)
{
s
+=
std
::
string
(
" "
).
append
(
s2
);
// Exactly one space is important.
rv
.
push_back
(
s
);
continue
;
}
throw
std
::
runtime_error
(
"Error parsing string: '"
+
in
+
'\''
);
}
rv
.
push_back
(
s
);
}
return
rv
;
}
}
// namespace online_compile
#endif // GUARD_OLC_STRINGUTILS_HPP
host/online_compile/include/target_properties.hpp
deleted
100644 → 0
View file @
cb954213
/*******************************************************************************
*
* MIT License
*
* Copyright (c) 2020 Advanced Micro Devices, Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
*******************************************************************************/
#ifndef GUARD_OLC_TARGET_PROPERTIES_HPP
#define GUARD_OLC_TARGET_PROPERTIES_HPP
#include <boost/optional.hpp>
#include <string>
namespace
online_compile
{
struct
Handle
;
struct
TargetProperties
{
const
std
::
string
&
Name
()
const
{
return
name
;
}
const
std
::
string
&
DbId
()
const
{
return
dbId
;
}
boost
::
optional
<
bool
>
Xnack
()
const
{
return
xnack
;
}
boost
::
optional
<
bool
>
Sramecc
()
const
{
return
sramecc
;
}
boost
::
optional
<
bool
>
SrameccReported
()
const
{
return
sramecc_reported
;
}
void
Init
(
const
Handle
*
);
private:
void
InitDbId
();
std
::
string
name
;
std
::
string
dbId
;
boost
::
optional
<
bool
>
xnack
=
boost
::
none
;
boost
::
optional
<
bool
>
sramecc
=
boost
::
none
;
boost
::
optional
<
bool
>
sramecc_reported
=
boost
::
none
;
};
}
// namespace online_compile
#endif // GUARD_OLC_TARGET_PROPERTIES_HPP
host/online_compile/include/tmp_dir.hpp
deleted
100644 → 0
View file @
cb954213
#ifndef GUARD_OLC_TMP_DIR_HPP
#define GUARD_OLC_TMP_DIR_HPP
#include <string>
#include <boost/filesystem/path.hpp>
namespace
online_compile
{
void
SystemCmd
(
std
::
string
cmd
);
struct
TmpDir
{
boost
::
filesystem
::
path
path
;
TmpDir
(
std
::
string
prefix
);
TmpDir
(
TmpDir
const
&
)
=
delete
;
TmpDir
&
operator
=
(
TmpDir
const
&
)
=
delete
;
void
Execute
(
std
::
string
exe
,
std
::
string
args
)
const
;
~
TmpDir
();
};
}
// namespace online_compile
#endif
host/online_compile/include/write_file.hpp
deleted
100644 → 0
View file @
cb954213
#ifndef GUARD_OLC_WRITE_FILE_HPP
#define GUARD_OLC_WRITE_FILE_HPP
#include <boost/filesystem.hpp>
#include <manage_ptr.hpp>
#include <fstream>
namespace
online_compile
{
using
FilePtr
=
OLC_MANAGE_PTR
(
FILE
*
,
std
::
fclose
);
inline
void
WriteFile
(
const
std
::
string
&
content
,
const
boost
::
filesystem
::
path
&
name
)
{
// std::cerr << "Write file: " << name << std::endl;
FilePtr
f
{
std
::
fopen
(
name
.
string
().
c_str
(),
"w"
)};
if
(
std
::
fwrite
(
content
.
c_str
(),
1
,
content
.
size
(),
f
.
get
())
!=
content
.
size
())
throw
std
::
runtime_error
(
"Failed to write to file"
);
}
inline
void
WriteFile
(
const
std
::
vector
<
char
>&
content
,
const
boost
::
filesystem
::
path
&
name
)
{
// std::cerr << "Write file: " << name << std::endl;
FilePtr
f
{
std
::
fopen
(
name
.
string
().
c_str
(),
"w"
)};
if
(
std
::
fwrite
(
&
content
[
0
],
1
,
content
.
size
(),
f
.
get
())
!=
content
.
size
())
throw
std
::
runtime_error
(
"Failed to write to file"
);
}
}
// namespace online_compile
#endif
host/online_compile/kernel.cpp.in
deleted
100644 → 0
View file @
cb954213
/*******************************************************************************
*
* MIT License
*
* Copyright (c) 2021 Advanced Micro Devices, Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
*******************************************************************************/
#include <algorithm>
#include <map>
#include <stdexcept>
// clang-format off
${KERNELS_DECLS}
// clang-format on
namespace online_compile {
const std::map<std::string, std::string>& kernels()
{
static const std::map<std::string, std::string> data{${INIT_KERNELS}};
return data;
}
std::string GetKernelSrc(std::string name)
{
// Use the base name of the string
int start = 0;
auto slash = static_cast<int>(name.find_last_of("/\\"));
if(slash != std::string::npos)
{
start = slash + 1;
}
int len = name.size();
auto ex = static_cast<int>(name.rfind('.'));
if(ex != std::string::npos)
{
len = ex - start;
}
auto key = name.substr(start, len);
// Convert to uppercase
std::transform(key.begin(), key.end(), key.begin(), ::toupper);
auto it = kernels().find(key);
if(it == kernels().end())
throw std::runtime_error("Failed to load kernel source: " + key);
return it->second;
}
} // namespace online_compile
host/online_compile/kernel_includes.cpp.in
deleted
100644 → 0
View file @
cb954213
/*******************************************************************************
*
* MIT License
*
* Copyright (c) 2019 Advanced Micro Devices, Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
*******************************************************************************/
#include "olc_kernel_includes.h"
#include <algorithm>
#include <map>
#include <stdexcept>
#include <vector>
namespace online_compile {
static inline bool EndsWith(const std::string& value, const std::string& suffix)
{
if(suffix.size() > value.size())
return false;
else
return std::equal(suffix.rbegin(), suffix.rend(), value.rbegin());
}
const std::map<std::string, std::string>& kernel_includes()
{
static const std::map<std::string, std::string> data{${INIT_KERNELS}};
return data;
}
std::string GetKernelInc(std::string key)
{
auto it = kernel_includes().find(key);
if(it == kernel_includes().end())
throw std::runtime_error("Failed to load kernel source: " + key);
return it->second;
}
std::vector<std::string> GetKernelIncList()
{
std::vector<std::string> keys;
auto m = kernel_includes();
std::transform(m.begin(),
m.end(),
std::back_inserter(keys),
[](decltype(m)::value_type const& pair) { return pair.first; });
return keys;
}
std::vector<std::string> GetHipKernelIncList()
{
auto keys = GetKernelIncList();
keys.erase(std::remove_if(keys.begin(),
keys.end(),
[&](const auto& key) {
return !(EndsWith(key, ".hpp") || EndsWith(key, ".h"));
}),
keys.end());
return keys;
}
} // namespace online_compile
host/online_compile/kernels_batch.cpp.in
deleted
100644 → 0
View file @
cb954213
#include "${KERNEL_SRC_HPP_FILENAME}"
host/
driver_online/include/online_dri
ver_common.hpp
→
host/
solver/include/sol
ver_common.hpp
View file @
ae98b52a
#ifndef
ONLINE_DRI
VER_COMMON_HPP
#define
ONLINE_DRI
VER_COMMON_HPP
#ifndef
CK_SOL
VER_COMMON_HPP
#define
CK_SOL
VER_COMMON_HPP
namespace
ck
{
namespace
driver
{
inline
auto
get_ck_hip_online_compile_common_flag
()
{
std
::
string
param
=
" -std=c++17"
;
return
param
;
}
// greatest common divisor, aka highest common factor
inline
int
gcd
(
int
x
,
int
y
)
{
...
...
Prev
1
2
3
Next
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