summaryrefslogtreecommitdiffstats
path: root/ml/dlib/dlib/test/blas_bindings/blas_bindings_gemm.cpp
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-05 12:08:03 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-05 12:08:18 +0000
commit5da14042f70711ea5cf66e034699730335462f66 (patch)
tree0f6354ccac934ed87a2d555f45be4c831cf92f4a /ml/dlib/dlib/test/blas_bindings/blas_bindings_gemm.cpp
parentReleasing debian version 1.44.3-2. (diff)
downloadnetdata-5da14042f70711ea5cf66e034699730335462f66.tar.xz
netdata-5da14042f70711ea5cf66e034699730335462f66.zip
Merging upstream version 1.45.3+dfsg.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'ml/dlib/dlib/test/blas_bindings/blas_bindings_gemm.cpp')
-rw-r--r--ml/dlib/dlib/test/blas_bindings/blas_bindings_gemm.cpp311
1 files changed, 0 insertions, 311 deletions
diff --git a/ml/dlib/dlib/test/blas_bindings/blas_bindings_gemm.cpp b/ml/dlib/dlib/test/blas_bindings/blas_bindings_gemm.cpp
deleted file mode 100644
index 83d41edd1..000000000
--- a/ml/dlib/dlib/test/blas_bindings/blas_bindings_gemm.cpp
+++ /dev/null
@@ -1,311 +0,0 @@
-// Copyright (C) 2009 Davis E. King (davis@dlib.net)
-// License: Boost Software License See LICENSE.txt for the full license.
-
-#include "../tester.h"
-#include <dlib/matrix.h>
-
-#ifndef DLIB_USE_BLAS
-#error "BLAS bindings must be used for this test to make any sense"
-#endif
-
-namespace dlib
-{
- namespace blas_bindings
- {
- // This is a little screwy. This function is used inside the BLAS
- // bindings to count how many times each of the BLAS functions get called.
-#ifdef DLIB_TEST_BLAS_BINDINGS
- int& counter_gemm() { static int counter = 0; return counter; }
-#endif
-
- }
-}
-
-namespace
-{
- using namespace test;
- using namespace std;
- // Declare the logger we will use in this test. The name of the logger
- // should start with "test."
- dlib::logger dlog("test.gemm");
-
-
- class blas_bindings_gemm_tester : public tester
- {
- public:
- blas_bindings_gemm_tester (
- ) :
- tester (
- "test_gemm", // the command line argument name for this test
- "Run tests for GEMM routines.", // the command line argument description
- 0 // the number of command line arguments for this test
- )
- {}
-
- template <typename matrix_type>
- void test_gemm_stuff(
- const matrix_type& c
- ) const
- {
- using namespace dlib;
- using namespace dlib::blas_bindings;
-
- matrix_type b, a;
- a = c;
-
- counter_gemm() = 0;
- b = a*a;
- DLIB_TEST(counter_gemm() == 1);
-
- counter_gemm() = 0;
- b = a/2*a;
- DLIB_TEST(counter_gemm() == 1);
-
- counter_gemm() = 0;
- b = a*trans(a) + a;
- DLIB_TEST(counter_gemm() == 1);
-
- counter_gemm() = 0;
- b = (a+a)*(a+a);
- DLIB_TEST(counter_gemm() == 1);
-
- counter_gemm() = 0;
- b = a*(a-a);
- DLIB_TEST(counter_gemm() == 1);
-
- counter_gemm() = 0;
- b = trans(a)*trans(a) + a;
- DLIB_TEST(counter_gemm() == 1);
-
- counter_gemm() = 0;
- b = trans(trans(trans(a)*a + a));
- DLIB_TEST(counter_gemm() == 1);
-
- counter_gemm() = 0;
- b = a*a*a*a;
- DLIB_TEST(counter_gemm() == 3);
- b = c;
-
- counter_gemm() = 0;
- a = a*a*a*a;
- DLIB_TEST(counter_gemm() == 3);
- a = c;
-
- counter_gemm() = 0;
- a = (b + a*trans(a)*a*3*a)*trans(b);
- DLIB_TEST(counter_gemm() == 4);
- a = c;
-
- counter_gemm() = 0;
- a = trans((trans(b) + trans(a)*trans(a)*a*3*a)*trans(b));
- DLIB_TEST(counter_gemm() == 4);
- a = c;
-
- counter_gemm() = 0;
- a = trans((trans(b) + trans(a)*(a)*trans(a)*3*a)*trans(b));
- DLIB_TEST(counter_gemm() == 4);
- a = c;
-
- counter_gemm() = 0;
- a = trans((trans(b) + trans(a)*(a + b)*trans(a)*3*a)*trans(b));
- DLIB_TEST_MSG(counter_gemm() == 4, counter_gemm());
- a = c;
-
- counter_gemm() = 0;
- a = trans((trans(b) + trans(a)*(a*8 + b+b+b+b)*trans(a)*3*a)*trans(b));
- DLIB_TEST_MSG(counter_gemm() == 4, counter_gemm());
- a = c;
- }
-
- template <typename matrix_type>
- void test_gemm_stuff_conj(
- const matrix_type& c
- ) const
- {
- using namespace dlib;
- using namespace dlib::blas_bindings;
-
- matrix_type b, a;
- a = c;
-
- counter_gemm() = 0;
- b = a*conj(a);
- DLIB_TEST(counter_gemm() == 1);
-
- counter_gemm() = 0;
- b = a*trans(conj(a)) + a;
- DLIB_TEST(counter_gemm() == 1);
-
- counter_gemm() = 0;
- b = conj(trans(a))*trans(a) + a;
- DLIB_TEST(counter_gemm() == 1);
-
- counter_gemm() = 0;
- b = trans(trans(trans(a)*conj(a) + conj(a)));
- DLIB_TEST(counter_gemm() == 1);
-
- counter_gemm() = 0;
- b = a*a*conj(a)*a;
- DLIB_TEST(counter_gemm() == 3);
- b = c;
-
- counter_gemm() = 0;
- a = a*trans(conj(a))*a*a;
- DLIB_TEST(counter_gemm() == 3);
- a = c;
-
- counter_gemm() = 0;
- a = (b + a*trans(conj(a))*a*3*a)*trans(b);
- DLIB_TEST(counter_gemm() == 4);
- a = c;
-
- counter_gemm() = 0;
- a = (trans((conj(trans(b)) + trans(a)*conj(trans(a))*a*3*a)*trans(b)));
- DLIB_TEST(counter_gemm() == 4);
- a = c;
-
- counter_gemm() = 0;
- a = ((trans(b) + trans(a)*(a)*trans(a)*3*a)*trans(conj(b)));
- DLIB_TEST(counter_gemm() == 4);
- a = c;
-
- counter_gemm() = 0;
- a = trans((trans(b) + trans(a)*conj(a + b)*trans(a)*3*a)*trans(b));
- DLIB_TEST_MSG(counter_gemm() == 4, counter_gemm());
- a = c;
-
- counter_gemm() = 0;
- a = trans((trans(b) + trans(a)*(a*8 + b+b+b+b)*trans(a)*3*conj(a))*trans(b));
- DLIB_TEST_MSG(counter_gemm() == 4, counter_gemm());
- a = c;
- }
-
- void perform_test (
- )
- {
- using namespace dlib;
- typedef dlib::memory_manager<char>::kernel_1a mm;
-
- print_spinner();
-
- dlog << dlib::LINFO << "test double";
- {
- matrix<double> a = randm(4,4);
- test_gemm_stuff(a);
- }
-
- print_spinner();
- dlog << dlib::LINFO << "test float";
- {
- matrix<float> a = matrix_cast<float>(randm(4,4));
- test_gemm_stuff(a);
- }
-
- print_spinner();
- dlog << dlib::LINFO << "test complex<float>";
- {
- matrix<float> a = matrix_cast<float>(randm(4,4));
- matrix<float> b = matrix_cast<float>(randm(4,4));
- matrix<complex<float> > c = complex_matrix(a,b);
- test_gemm_stuff(c);
- test_gemm_stuff_conj(c);
- }
-
- print_spinner();
- dlog << dlib::LINFO << "test complex<double>";
- {
- matrix<double> a = matrix_cast<double>(randm(4,4));
- matrix<double> b = matrix_cast<double>(randm(4,4));
- matrix<complex<double> > c = complex_matrix(a,b);
- test_gemm_stuff(c);
- test_gemm_stuff_conj(c);
- }
-
-
- print_spinner();
-
- dlog << dlib::LINFO << "test double, column major";
- {
- matrix<double,100,100,mm,column_major_layout> a = randm(100,100);
- test_gemm_stuff(a);
- }
-
- print_spinner();
- dlog << dlib::LINFO << "test float, column major";
- {
- matrix<float,100,100,mm,column_major_layout> a = matrix_cast<float>(randm(100,100));
- test_gemm_stuff(a);
- }
-
- print_spinner();
- dlog << dlib::LINFO << "test complex<double>, column major";
- {
- matrix<double,100,100,mm,column_major_layout> a = matrix_cast<double>(randm(100,100));
- matrix<double,100,100,mm,column_major_layout> b = matrix_cast<double>(randm(100,100));
- matrix<complex<double>,100,100,mm,column_major_layout > c = complex_matrix(a,b);
- test_gemm_stuff(c);
- test_gemm_stuff_conj(c);
- }
-
- print_spinner();
-
- dlog << dlib::LINFO << "test complex<float>, column major";
- {
- matrix<float,100,100,mm,column_major_layout> a = matrix_cast<float>(randm(100,100));
- matrix<float,100,100,mm,column_major_layout> b = matrix_cast<float>(randm(100,100));
- matrix<complex<float>,100,100,mm,column_major_layout > c = complex_matrix(a,b);
- test_gemm_stuff(c);
- test_gemm_stuff_conj(c);
- }
-
- {
- using namespace dlib;
- using namespace dlib::blas_bindings;
- array2d<double> a(100,100);
- array2d<double> b(100,100);
- matrix<double> c;
-
- counter_gemm() = 0;
- c = mat(a)*mat(b);
- DLIB_TEST(counter_gemm() == 1);
-
- counter_gemm() = 0;
- c = trans(2*mat(a)*mat(b));
- DLIB_TEST(counter_gemm() == 1);
- }
-
- {
- using namespace dlib;
- using namespace dlib::blas_bindings;
- array2d<double> a(100,100);
- array2d<double> b(100,100);
- matrix<double> aa(100,100);
- matrix<double> bb(100,100);
- matrix<double> c;
-
- counter_gemm() = 0;
- c = mat(&a[0][0],100,100)*mat(&b[0][0],100,100);
- DLIB_TEST(counter_gemm() == 1);
- set_ptrm(&c(0,0),100,100) = mat(&a[0][0],100,100)*mat(&b[0][0],100,100);
- DLIB_TEST(counter_gemm() == 2);
- set_ptrm(&c(0,0),100,100) = aa*bb;
- DLIB_TEST(counter_gemm() == 3);
-
- counter_gemm() = 0;
- c = trans(2*mat(&a[0][0],100,100)*mat(&b[0][0],100,100));
- DLIB_TEST(counter_gemm() == 1);
- set_ptrm(&c(0,0),100,100) = trans(2*mat(&a[0][0],100,100)*mat(&b[0][0],100,100));
- DLIB_TEST(counter_gemm() == 2);
- set_ptrm(&c(0,0),100,100) = trans(2*mat(a)*mat(b));
- DLIB_TEST(counter_gemm() == 3);
- }
-
- print_spinner();
- }
- };
-
- blas_bindings_gemm_tester a;
-
-}
-
-