Skip to content

Commit

Permalink
GEMM: Added skeleton for cuBLAS GEMM calls
Browse files Browse the repository at this point in the history
  • Loading branch information
ptillet committed Oct 4, 2016
1 parent 889b4cf commit f1a636f
Show file tree
Hide file tree
Showing 27 changed files with 18,544 additions and 645 deletions.
23 changes: 19 additions & 4 deletions include/isaac/driver/dispatch.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
//CUDA Backend
#include "isaac/driver/external/CUDA/cuda.h"
#include "isaac/driver/external/CUDA/nvrtc.h"
#include "isaac/driver/external/CUDA/cublas.h"

#include <iostream>

Expand All @@ -48,9 +49,7 @@ class dispatch

template <class R, class... A>
struct return_type<R (*)(A...)>
{
typedef R type;
};
{ typedef R type; };

typedef bool (*f_init_t)();

Expand All @@ -65,10 +64,13 @@ class dispatch
return (*fptr)(args...);
}

static void cublasCreate(cublasHandle_t* h);

public:
static bool clinit();
static bool cuinit();
static bool cublasinit();
static bool nvrtcinit();
static bool cuinit();

static void release();

Expand Down Expand Up @@ -144,10 +146,17 @@ class dispatch
static nvrtcResult nvrtcCreateProgram(nvrtcProgram *prog, const char *src, const char *name, int numHeaders, const char **headers, const char **includeNames);
static nvrtcResult nvrtcGetProgramLog(nvrtcProgram prog, char *log);

static void cublasGetStream(cudaStream_t *streamId);
static void cublasSetStream(cudaStream_t streamId);
static void cublasSgemm (cublasOperation_t transa, cublasOperation_t transb, int m, int n, int k, float* alpha, const float *A, int lda, const float *B, int ldb, float* beta, float *C, int ldc);
static void cublasDgemm (cublasOperation_t transa, cublasOperation_t transb, int m, int n, int k, double* alpha, const double *A, int lda, const double *B, int ldb, double* beta, double *C, int ldc);

private:
static void* opencl_;
static void* cuda_;
static void* nvrtc_;
static void* cublas_;
static cublasHandle_t cublas_handle_;

//OpenCL
static void* clBuildProgram_;
Expand Down Expand Up @@ -220,6 +229,12 @@ class dispatch
static void* nvrtcGetPTXSize_;
static void* nvrtcCreateProgram_;
static void* nvrtcGetProgramLog_;

static void* cublasCreate_;
static void* cublasGetStream_;
static void* cublasSetStream_;
static void* cublasSgemm_;
static void* cublasDgemm_;
};

}
Expand Down
64 changes: 64 additions & 0 deletions include/isaac/driver/external/CUDA/builtin_types.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
/*
* Copyright 1993-2014 NVIDIA Corporation. All rights reserved.
*
* NOTICE TO LICENSEE:
*
* This source code and/or documentation ("Licensed Deliverables") are
* subject to NVIDIA intellectual property rights under U.S. and
* international Copyright laws.
*
* These Licensed Deliverables contained herein is PROPRIETARY and
* CONFIDENTIAL to NVIDIA and is being provided under the terms and
* conditions of a form of NVIDIA software license agreement by and
* between NVIDIA and Licensee ("License Agreement") or electronically
* accepted by Licensee. Notwithstanding any terms or conditions to
* the contrary in the License Agreement, reproduction or disclosure
* of the Licensed Deliverables to any third party without the express
* written consent of NVIDIA is prohibited.
*
* NOTWITHSTANDING ANY TERMS OR CONDITIONS TO THE CONTRARY IN THE
* LICENSE AGREEMENT, NVIDIA MAKES NO REPRESENTATION ABOUT THE
* SUITABILITY OF THESE LICENSED DELIVERABLES FOR ANY PURPOSE. IT IS
* PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY OF ANY KIND.
* NVIDIA DISCLAIMS ALL WARRANTIES WITH REGARD TO THESE LICENSED
* DELIVERABLES, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY,
* NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE.
* NOTWITHSTANDING ANY TERMS OR CONDITIONS TO THE CONTRARY IN THE
* LICENSE AGREEMENT, IN NO EVENT SHALL NVIDIA BE LIABLE FOR ANY
* SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, OR ANY
* DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
* WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
* ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THESE LICENSED DELIVERABLES.
*
* U.S. Government End Users. These Licensed Deliverables are a
* "commercial item" as that term is defined at 48 C.F.R. 2.101 (OCT
* 1995), consisting of "commercial computer software" and "commercial
* computer software documentation" as such terms are used in 48
* C.F.R. 12.212 (SEPT 1995) and is provided to the U.S. Government
* only as a commercial end item. Consistent with 48 C.F.R.12.212 and
* 48 C.F.R. 227.7202-1 through 227.7202-4 (JUNE 1995), all
* U.S. Government End Users acquire the Licensed Deliverables with
* only those rights set forth herein.
*
* Any use of the Licensed Deliverables in individual and commercial
* software must include, in the user documentation and internal
* comments to the code, the above Disclaimer and U.S. Government End
* Users Notice.
*/

/*******************************************************************************
* *
* *
* *
*******************************************************************************/

#include "device_types.h"
#if !defined(__CUDACC_RTC__)
#define EXCLUDE_FROM_RTC
#include "driver_types.h"
#undef EXCLUDE_FROM_RTC
#endif /* !__CUDACC_RTC__ */
#include "surface_types.h"
#include "texture_types.h"
#include "vector_types.h"
Loading

0 comments on commit f1a636f

Please sign in to comment.