| 1722 | } |
| 1723 | |
| 1724 | void test_more_ops(const long nr, const long nc) |
| 1725 | { |
| 1726 | using namespace dlib::tt; |
| 1727 | print_spinner(); |
| 1728 | // We are going to make sure that the CPU implementation of these things matches |
| 1729 | // the CUDA implementation. |
| 1730 | |
| 1731 | tensor_rand rnd; |
| 1732 | |
| 1733 | resizable_tensor dest(nr,nc), src(nr,nc), dest2, src2; |
| 1734 | resizable_tensor srcb(nr,nc), srcc(nr,nc), srcb2, srcc2; |
| 1735 | |
| 1736 | |
| 1737 | rnd.fill_uniform(dest); |
| 1738 | rnd.fill_uniform(src); |
| 1739 | dest2 = dest; src2 = src; |
| 1740 | cuda::multiply(false, dest, dest, src); |
| 1741 | cpu::multiply(false, dest2, dest2, src2); |
| 1742 | DLIB_TEST(equal(mat(dest),mat(dest2))); |
| 1743 | cuda::multiply(true, dest, dest, src); |
| 1744 | cpu::multiply(true, dest2, dest2, src2); |
| 1745 | DLIB_TEST(equal(mat(dest),mat(dest2))); |
| 1746 | |
| 1747 | |
| 1748 | rnd.fill_uniform(dest); |
| 1749 | rnd.fill_uniform(src); |
| 1750 | dest2 = dest; src2 = src; |
| 1751 | cuda::affine_transform(dest, src, 2, 3); |
| 1752 | cpu::affine_transform(dest2, src2, 2, 3); |
| 1753 | DLIB_TEST(equal(mat(dest),mat(dest2))); |
| 1754 | |
| 1755 | rnd.fill_uniform(dest); |
| 1756 | rnd.fill_uniform(src); |
| 1757 | rnd.fill_uniform(srcb); |
| 1758 | dest2 = dest; src2 = src; srcb2 = srcb; |
| 1759 | cuda::affine_transform(dest, src, srcb, 2, 3, 4); |
| 1760 | cpu::affine_transform(dest2, src2, srcb2, 2, 3, 4); |
| 1761 | DLIB_TEST(equal(mat(dest),mat(dest2))); |
| 1762 | |
| 1763 | rnd.fill_uniform(dest); |
| 1764 | rnd.fill_uniform(src); |
| 1765 | rnd.fill_uniform(srcb); |
| 1766 | rnd.fill_uniform(srcc); |
| 1767 | dest2 = dest; src2 = src; srcb2 = srcb; srcc2 = srcc; |
| 1768 | cuda::affine_transform(dest, src, srcb, srcc, 2, 3, 4, 5); |
| 1769 | cpu::affine_transform(dest2, src2, srcb2, srcc2, 2, 3, 4, 5); |
| 1770 | DLIB_TEST(equal(mat(dest),mat(dest2))); |
| 1771 | |
| 1772 | cuda::affine_transform(dest, src, srcb, srcc, 2, 3, 4, 0); |
| 1773 | cpu::affine_transform(dest2, src2, srcb2, srcc2, 2, 3, 4, 0); |
| 1774 | DLIB_TEST(equal(mat(dest),mat(dest2))); |
| 1775 | |
| 1776 | cuda::affine_transform_range(0, dest.size(), dest, src, srcb, srcc, 2, 3, 4); |
| 1777 | cpu::affine_transform_range(0, dest2.size(), dest2, src2, srcb2, srcc2, 2, 3, 4); |
| 1778 | DLIB_TEST(equal(mat(dest),mat(dest2))); |
| 1779 | |
| 1780 | if (3 < dest.size()) |
| 1781 | { |
no test coverage detected