Skip to content

Commit ce90e2b

Browse files
author
Rajalakshmi Srinivasaraghavan
committed
Include shgemm in benchtest
This patch is to enable benchtest for half precision gemm when BUILD_HALF is set during make.
1 parent 948b671 commit ce90e2b

File tree

2 files changed

+26
-7
lines changed

2 files changed

+26
-7
lines changed

benchmark/Makefile

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,12 @@ else
4949
GOTO_LAPACK_TARGETS=
5050
endif
5151

52+
ifeq ($(BUILD_HALF),1)
53+
GOTO_HALF_TARGETS=shgemm.goto
54+
else
55+
GOTO_HALF_TARGETS=
56+
endif
57+
5258
ifeq ($(OSNAME), WINNT)
5359

5460
goto :: slinpack.goto dlinpack.goto clinpack.goto zlinpack.goto \
@@ -91,7 +97,7 @@ goto :: slinpack.goto dlinpack.goto clinpack.goto zlinpack.goto \
9197
sgetri.goto dgetri.goto cgetri.goto zgetri.goto \
9298
spotrf.goto dpotrf.goto cpotrf.goto zpotrf.goto \
9399
ssymm.goto dsymm.goto csymm.goto zsymm.goto \
94-
saxpby.goto daxpby.goto caxpby.goto zaxpby.goto
100+
saxpby.goto daxpby.goto caxpby.goto zaxpby.goto $(GOTO_HALF_TARGETS)
95101

96102
acml :: slinpack.acml dlinpack.acml clinpack.acml zlinpack.acml \
97103
scholesky.acml dcholesky.acml ccholesky.acml zcholesky.acml \
@@ -264,7 +270,7 @@ goto :: sgemm.goto dgemm.goto cgemm.goto zgemm.goto \
264270
samin.goto damin.goto camin.goto zamin.goto \
265271
smin.goto dmin.goto \
266272
saxpby.goto daxpby.goto caxpby.goto zaxpby.goto \
267-
snrm2.goto dnrm2.goto scnrm2.goto dznrm2.goto $(GOTO_LAPACK_TARGETS)
273+
snrm2.goto dnrm2.goto scnrm2.goto dznrm2.goto $(GOTO_LAPACK_TARGETS) $(GOTO_HALF_TARGETS)
268274

269275
acml :: slinpack.acml dlinpack.acml clinpack.acml zlinpack.acml \
270276
scholesky.acml dcholesky.acml ccholesky.acml zcholesky.acml \
@@ -614,6 +620,11 @@ zcholesky.essl : zcholesky.$(SUFFIX)
614620
-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBESSL) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)
615621

616622
##################################### Sgemm ####################################################
623+
ifeq ($(BUILD_HALF),1)
624+
shgemm.goto : shgemm.$(SUFFIX) ../$(LIBNAME)
625+
$(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB) -lm
626+
endif
627+
617628
sgemm.goto : sgemm.$(SUFFIX) ../$(LIBNAME)
618629
$(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB) -lm
619630

@@ -2916,6 +2927,11 @@ ccholesky.$(SUFFIX) : cholesky.c
29162927
zcholesky.$(SUFFIX) : cholesky.c
29172928
$(CC) $(CFLAGS) -c -DCOMPLEX -DDOUBLE -o $(@F) $^
29182929

2930+
ifeq ($(BUILD_HALF),1)
2931+
shgemm.$(SUFFIX) : gemm.c
2932+
$(CC) $(CFLAGS) -c -DHALF -UCOMPLEX -UDOUBLE -o $(@F) $^
2933+
endif
2934+
29192935
sgemm.$(SUFFIX) : gemm.c
29202936
$(CC) $(CFLAGS) -c -UCOMPLEX -UDOUBLE -o $(@F) $^
29212937

benchmark/gemm.c

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
3939

4040
#ifdef DOUBLE
4141
#define GEMM BLASFUNC(dgemm)
42+
#elif defined(HALF)
43+
#define GEMM BLASFUNC(shgemm)
4244
#else
4345
#define GEMM BLASFUNC(sgemm)
4446
#endif
@@ -120,7 +122,8 @@ static void *huge_malloc(BLASLONG size){
120122

121123
int main(int argc, char *argv[]){
122124

123-
FLOAT *a, *b, *c;
125+
IFLOAT *a, *b;
126+
FLOAT *c;
124127
FLOAT alpha[] = {1.0, 0.0};
125128
FLOAT beta [] = {0.0, 0.0};
126129
char transa = 'N';
@@ -184,10 +187,10 @@ int main(int argc, char *argv[]){
184187
k = to;
185188
}
186189

187-
if (( a = (FLOAT *)malloc(sizeof(FLOAT) * m * k * COMPSIZE)) == NULL) {
190+
if (( a = (IFLOAT *)malloc(sizeof(IFLOAT) * m * k * COMPSIZE)) == NULL) {
188191
fprintf(stderr,"Out of Memory!!\n");exit(1);
189192
}
190-
if (( b = (FLOAT *)malloc(sizeof(FLOAT) * k * n * COMPSIZE)) == NULL) {
193+
if (( b = (IFLOAT *)malloc(sizeof(IFLOAT) * k * n * COMPSIZE)) == NULL) {
191194
fprintf(stderr,"Out of Memory!!\n");exit(1);
192195
}
193196
if (( c = (FLOAT *)malloc(sizeof(FLOAT) * m * n * COMPSIZE)) == NULL) {
@@ -199,10 +202,10 @@ int main(int argc, char *argv[]){
199202
#endif
200203

201204
for (i = 0; i < m * k * COMPSIZE; i++) {
202-
a[i] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5;
205+
a[i] = ((IFLOAT) rand() / (IFLOAT) RAND_MAX) - 0.5;
203206
}
204207
for (i = 0; i < k * n * COMPSIZE; i++) {
205-
b[i] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5;
208+
b[i] = ((IFLOAT) rand() / (IFLOAT) RAND_MAX) - 0.5;
206209
}
207210
for (i = 0; i < m * n * COMPSIZE; i++) {
208211
c[i] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5;

0 commit comments

Comments
 (0)