GOTO_LAPACK_TARGETS=\r
endif\r
\r
+ifeq ($(BUILD_HALF),1)\r
+GOTO_HALF_TARGETS=shgemm.goto\r
+else\r
+GOTO_HALF_TARGETS=\r
+endif\r
+\r
ifeq ($(OSNAME), WINNT)\r
\r
goto :: slinpack.goto dlinpack.goto clinpack.goto zlinpack.goto \\r
sgetri.goto dgetri.goto cgetri.goto zgetri.goto \\r
spotrf.goto dpotrf.goto cpotrf.goto zpotrf.goto \\r
ssymm.goto dsymm.goto csymm.goto zsymm.goto \\r
- saxpby.goto daxpby.goto caxpby.goto zaxpby.goto\r
+ saxpby.goto daxpby.goto caxpby.goto zaxpby.goto $(GOTO_HALF_TARGETS)\r
\r
acml :: slinpack.acml dlinpack.acml clinpack.acml zlinpack.acml \\r
scholesky.acml dcholesky.acml ccholesky.acml zcholesky.acml \\r
samin.goto damin.goto camin.goto zamin.goto \\r
smin.goto dmin.goto \\r
saxpby.goto daxpby.goto caxpby.goto zaxpby.goto \\r
- snrm2.goto dnrm2.goto scnrm2.goto dznrm2.goto $(GOTO_LAPACK_TARGETS)\r
+ snrm2.goto dnrm2.goto scnrm2.goto dznrm2.goto $(GOTO_LAPACK_TARGETS) $(GOTO_HALF_TARGETS)\r
\r
acml :: slinpack.acml dlinpack.acml clinpack.acml zlinpack.acml \\r
scholesky.acml dcholesky.acml ccholesky.acml zcholesky.acml \\r
-$(CC) $(CFLAGS) -o $(@F) $^ $(LIBESSL) $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB)\r
\r
##################################### Sgemm ####################################################\r
+ifeq ($(BUILD_HALF),1)\r
+shgemm.goto : shgemm.$(SUFFIX) ../$(LIBNAME)\r
+ $(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB) -lm\r
+endif\r
+\r
sgemm.goto : sgemm.$(SUFFIX) ../$(LIBNAME)\r
$(CC) $(CFLAGS) -o $(@F) $^ $(CEXTRALIB) $(EXTRALIB) $(FEXTRALIB) -lm\r
\r
zcholesky.$(SUFFIX) : cholesky.c\r
$(CC) $(CFLAGS) -c -DCOMPLEX -DDOUBLE -o $(@F) $^\r
\r
+ifeq ($(BUILD_HALF),1)\r
+shgemm.$(SUFFIX) : gemm.c\r
+ $(CC) $(CFLAGS) -c -DHALF -UCOMPLEX -UDOUBLE -o $(@F) $^\r
+endif\r
+\r
sgemm.$(SUFFIX) : gemm.c\r
$(CC) $(CFLAGS) -c -UCOMPLEX -UDOUBLE -o $(@F) $^\r
\r
#ifdef DOUBLE
#define GEMM BLASFUNC(dgemm)
+#elif defined(HALF)
+#define GEMM BLASFUNC(shgemm)
#else
#define GEMM BLASFUNC(sgemm)
#endif
int main(int argc, char *argv[]){
- FLOAT *a, *b, *c;
+ IFLOAT *a, *b;
+ FLOAT *c;
FLOAT alpha[] = {1.0, 0.0};
FLOAT beta [] = {0.0, 0.0};
char transa = 'N';
k = to;
}
- if (( a = (FLOAT *)malloc(sizeof(FLOAT) * m * k * COMPSIZE)) == NULL) {
+ if (( a = (IFLOAT *)malloc(sizeof(IFLOAT) * m * k * COMPSIZE)) == NULL) {
fprintf(stderr,"Out of Memory!!\n");exit(1);
}
- if (( b = (FLOAT *)malloc(sizeof(FLOAT) * k * n * COMPSIZE)) == NULL) {
+ if (( b = (IFLOAT *)malloc(sizeof(IFLOAT) * k * n * COMPSIZE)) == NULL) {
fprintf(stderr,"Out of Memory!!\n");exit(1);
}
if (( c = (FLOAT *)malloc(sizeof(FLOAT) * m * n * COMPSIZE)) == NULL) {
#endif
for (i = 0; i < m * k * COMPSIZE; i++) {
- a[i] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5;
+ a[i] = ((IFLOAT) rand() / (IFLOAT) RAND_MAX) - 0.5;
}
for (i = 0; i < k * n * COMPSIZE; i++) {
- b[i] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5;
+ b[i] = ((IFLOAT) rand() / (IFLOAT) RAND_MAX) - 0.5;
}
for (i = 0; i < m * n * COMPSIZE; i++) {
c[i] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5;