Program Listing for File compat.cpp#

Return to documentation for file (librapid/src/compat.cpp)

#include <librapid/librapid.hpp>

#if defined(LIBRAPID_HAS_OPENCL)

namespace clblast {
    // template<>
    // StatusCode PUBLIC_API Gemm(const Layout layout, const Transpose a_transpose,
    //                         const Transpose b_transpose, const size_t m, const size_t n,
    //                         const size_t k, const librapid::Complex<float> alpha,
    //                         const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
    //                         const cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
    //                         const librapid::Complex<float> beta, cl_mem c_buffer,
    //                         const size_t c_offset, const size_t c_ld, cl_command_queue *queue,
    //                         cl_event *event, cl_mem temp_buffer) {
    //  return Gemm<float2>(layout,
    //                      a_transpose,
    //                      b_transpose,
    //                      m,
    //                      n,
    //                      k,
    //                      {alpha.real(), alpha.imag()},
    //                      a_buffer,
    //                      a_offset,
    //                      a_ld,
    //                      b_buffer,
    //                      b_offset,
    //                      b_ld,
    //                      {beta.real(), beta.imag()},
    //                      c_buffer,
    //                      c_offset,
    //                      c_ld,
    //                      queue,
    //                      event,
    //                      temp_buffer);
    // }

    // template<>
    // StatusCode PUBLIC_API Gemm(const Layout layout, const Transpose a_transpose,
    //                         const Transpose b_transpose, const size_t m, const size_t n,
    //                         const size_t k, const librapid::Complex<double> alpha,
    //                         const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
    //                         const cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
    //                         const librapid::Complex<double> beta, cl_mem c_buffer,
    //                         const size_t c_offset, const size_t c_ld, cl_command_queue *queue,
    //                         cl_event *event, cl_mem temp_buffer) {
    //  return Gemm<double2>(layout,
    //                       a_transpose,
    //                       b_transpose,
    //                       m,
    //                       n,
    //                       k,
    //                       {alpha.real(), alpha.imag()},
    //                       a_buffer,
    //                       a_offset,
    //                       a_ld,
    //                       b_buffer,
    //                       b_offset,
    //                       b_ld,
    //                       {beta.real(), beta.imag()},
    //                       c_buffer,
    //                       c_offset,
    //                       c_ld,
    //                       queue,
    //                       event,
    //                       temp_buffer);
    // }

    template<>
    StatusCode PUBLIC_API Gemm(const Layout layout, const Transpose a_transpose,
                               const Transpose b_transpose, const size_t m, const size_t n,
                               const size_t k, const librapid::half alpha, const cl_mem a_buffer,
                               const size_t a_offset, const size_t a_ld, const cl_mem b_buffer,
                               const size_t b_offset, const size_t b_ld, const librapid::half beta,
                               cl_mem c_buffer, const size_t c_offset, const size_t c_ld,
                               cl_command_queue *queue, cl_event *event, cl_mem temp_buffer) {
        return Gemm<cl_half>(layout,
                             a_transpose,
                             b_transpose,
                             m,
                             n,
                             k,
                             alpha.data().m_bits,
                             a_buffer,
                             a_offset,
                             a_ld,
                             b_buffer,
                             b_offset,
                             b_ld,
                             beta.data().m_bits,
                             c_buffer,
                             c_offset,
                             c_ld,
                             queue,
                             event,
                             temp_buffer);
    }
} // namespace clblast

#endif // LIBRAPID_HAS_OPENCL