提交 1dafbaba 编写于 作者: L Liu Yiqun

Merge branch 'develop' into cmake_protobuf

...@@ -29,13 +29,20 @@ void* lapack_dso_handle = nullptr; ...@@ -29,13 +29,20 @@ void* lapack_dso_handle = nullptr;
* *
* note: default dynamic linked libs * note: default dynamic linked libs
*/ */
// The argument for stringizing operator is not macro-expanded first.
// We have to use two levels of macro to do the expansion.
// See https://gcc.gnu.org/onlinedocs/cpp/Stringizing.html
#define STR(x) #x
#define DYNAMIC_LOAD_LAPACK_WRAP(__name) \ #define DYNAMIC_LOAD_LAPACK_WRAP(__name) \
struct DynLoad__##__name { \ struct DynLoad__##__name { \
template <typename... Args> \ template <typename... Args> \
auto operator()(Args... args) -> decltype(__name(args...)) { \ auto operator()(Args... args) -> decltype(__name(args...)) { \
using lapack_func = decltype(__name(args...)) (*)(Args...); \ using lapack_func = decltype(__name(args...)) (*)(Args...); \
std::call_once(lapack_dso_flag, GetLapackDsoHandle, &lapack_dso_handle); \ std::call_once(lapack_dso_flag, GetLapackDsoHandle, &lapack_dso_handle); \
void* p_##__name = dlsym(lapack_dso_handle, #__name); \ void* p_##__name = dlsym(lapack_dso_handle, STR(__name)); \
CHECK(p_##__name) << "Cannot find symbol " << STR(__name) \
<< " in liblapack.so"; \
return reinterpret_cast<lapack_func>(p_##__name)(args...); \ return reinterpret_cast<lapack_func>(p_##__name)(args...); \
} \ } \
} __name; // struct DynLoad__##__name } __name; // struct DynLoad__##__name
...@@ -51,7 +58,7 @@ void* lapack_dso_handle = nullptr; ...@@ -51,7 +58,7 @@ void* lapack_dso_handle = nullptr;
#define PADDLE_DGETRF LAPACKE_dgetrf #define PADDLE_DGETRF LAPACKE_dgetrf
#define PADDLE_SGETRI LAPACKE_sgetri #define PADDLE_SGETRI LAPACKE_sgetri
#define PADDLE_DGETRI LAPACKE_dgetri #define PADDLE_DGETRI LAPACKE_dgetri
#endif #endif
#define LAPACK_ROUTINE_EACH(__macro) \ #define LAPACK_ROUTINE_EACH(__macro) \
__macro(PADDLE_SGETRF) \ __macro(PADDLE_SGETRF) \
......
...@@ -237,14 +237,7 @@ TEST(Matrix, unary) { ...@@ -237,14 +237,7 @@ TEST(Matrix, unary) {
testMatrixRotate(height, width); testMatrixRotate(height, width);
} }
// inverse matrix // inverse matrix
void** dso_handler = nullptr; testMatrixInverse(height);
GetLapackDsoHandle(dso_handler);
if (nullptr == *dso_handler) {
LOG(WARNING) << "Failed to find liblapack.so, please specify its path "
"using LD_LIBRARY_PATH.";
} else {
testMatrixInverse(height);
}
} }
} }
......
...@@ -52,7 +52,7 @@ static inline std::string join(const std::string& part1, ...@@ -52,7 +52,7 @@ static inline std::string join(const std::string& part1,
static inline void GetDsoHandleFromDefaultPath(std::string& dso_path, static inline void GetDsoHandleFromDefaultPath(std::string& dso_path,
void** dso_handle, void** dso_handle,
int dynload_flags) { int dynload_flags) {
VLOG(3) << "Try to find cuda library: " << dso_path VLOG(3) << "Try to find library: " << dso_path
<< " from default system path."; << " from default system path.";
// default search from LD_LIBRARY_PATH/DYLD_LIBRARY_PATH // default search from LD_LIBRARY_PATH/DYLD_LIBRARY_PATH
*dso_handle = dlopen(dso_path.c_str(), dynload_flags); *dso_handle = dlopen(dso_path.c_str(), dynload_flags);
......
...@@ -41,7 +41,7 @@ def word_count(f, word_freq=None): ...@@ -41,7 +41,7 @@ def word_count(f, word_freq=None):
return word_freq return word_freq
def build_dict(): def build_dict(typo_freq=50):
""" """
Build a word dictionary from the corpus, Keys of the dictionary are words, Build a word dictionary from the corpus, Keys of the dictionary are words,
and values are zero-based IDs of these words. and values are zero-based IDs of these words.
...@@ -59,8 +59,7 @@ def build_dict(): ...@@ -59,8 +59,7 @@ def build_dict():
# remove <unk> for now, since we will set it as last index # remove <unk> for now, since we will set it as last index
del word_freq['<unk>'] del word_freq['<unk>']
TYPO_FREQ = 50 word_freq = filter(lambda x: x[1] > typo_freq, word_freq.items())
word_freq = filter(lambda x: x[1] > TYPO_FREQ, word_freq.items())
word_freq_sorted = sorted(word_freq, key=lambda x: (-x[1], x[0])) word_freq_sorted = sorted(word_freq, key=lambda x: (-x[1], x[0]))
words, _ = list(zip(*word_freq_sorted)) words, _ = list(zip(*word_freq_sorted))
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册