Program Listing for File preMain.cpp#
↰ Return to documentation for file (librapid/src/preMain.cpp)
#include <librapid/librapid.hpp>
namespace librapid::detail {
bool preMainRun = false;
PreMain::PreMain() {
if (!preMainRun) {
#if defined(LIBRAPID_WINDOWS) && !defined(LIBRAPID_NO_WINDOWS_H)
// Force the terminal to accept ANSI characters
system(("chcp " + std::to_string(CP_UTF8)).c_str());
#endif // LIBRAPID_WINDOWS
preMainRun = true;
global::cacheLineSize = cacheLineSize();
// OpenCL compatible devices are detected after this function is called,
// meaning nothing is found here. The user must call configureOpenCL()
// manually.
// #if defined(LIBRAPID_HAS_OPENCL)
// configureOpenCL();
// #endif // LIBRAPID_HAS_OPENCL
#if defined(LIBRAPID_HAS_CUDA)
cudaSafeCall(cudaStreamCreate(&global::cudaStream));
cublasSafeCall(cublasCreate(&global::cublasHandle));
cublasSafeCall(cublasSetStream(global::cublasHandle, global::cudaStream));
cudaSafeCall(cudaMallocAsync(
&global::cublasLtWorkspace, global::cublasLtWorkspaceSize, global::cudaStream));
cublasSafeCall(cublasLtCreate(&global::cublasLtHandle));
cublasSafeCall(cublasSetWorkspace(
global::cublasHandle, global::cublasLtWorkspace, global::cublasLtWorkspaceSize));
// Stream is specified in the function calls
#endif // LIBRAPID_HAS_CUDA
}
}
} // namespace librapid::detail