Posted Friday, April 04, 2008 8:41 AM
|
|
|
|
| We will be moving our C# project to 64 bit Vista and I am wondering about the use of bluebit in this mode. Currently we use the 2.5 version. Is the 4.0 version compiled to take advantage of the 64 bit OS? And whatever the answer to the first question might be, what implications might there be with performance (better / worse)? Thanks Blake
|
|
Posted Friday, April 11, 2008 7:44 AM
|
|
|
|
We have tested the new version 4.0 on a dual boot machine (Quad Core) system running both Visa 32bit/64bit. The following tables list the performance of both the 32-bit and 64-bit versions:.NET Matrix Library 32-bit
------------------------------------------------- | Multiplication | ------------------------------------------------- | Matrix Size | Duration | Operations/sec | ------------------------------------------------- | 50 | 5.4686E-005 | 1.8286E+004 | | 100 | 4.5977E-004 | 2.1750E+003 | | 250 | 0.0059 | 169.3497 | | 500 | 0.0440 | 22.7118 | | 1000 | 0.3492 | 2.8636 | -------------------------------------------------
------------------------------------------------- | Solve A * X = B | ------------------------------------------------- | Matrix Size | Duration | Operations/sec | ------------------------------------------------- | 50 | 0.0027 | 376.8835 | | 100 | 3.7149E-004 | 2.6919E+003 | | 250 | 0.0030 | 334.0920 | | 500 | 0.0209 | 47.9085 | | 1000 | 0.1535 | 6.5163 | -------------------------------------------------
------------------------------------------------- | LU Decomposition | ------------------------------------------------- | Matrix Size | Duration | Operations/sec | ------------------------------------------------- | 50 | 7.5010E-005 | 1.3332E+004 | | 100 | 2.5213E-004 | 3.9663E+003 | | 250 | 0.0027 | 363.8673 | | 500 | 0.0191 | 52.3909 | | 1000 | 0.1503 | 6.6521 | -------------------------------------------------
------------------------------------------------- | QR Decomposition | ------------------------------------------------- | Matrix Size | Duration | Operations/sec | ------------------------------------------------- | 50 | 0.0010 | 999.5937 | | 100 | 7.4786E-004 | 1.3371E+003 | | 250 | 0.0079 | 126.3439 | | 500 | 0.0596 | 16.7870 | | 1000 | 0.7924 | 1.2620 | -------------------------------------------------
------------------------------------------------- | SVD Decomposition | ------------------------------------------------- | Matrix Size | Duration | Operations/sec | ------------------------------------------------- | 50 | 0.0028 | 362.5957 | | 100 | 0.0077 | 129.1672 | | 250 | 0.0646 | 15.4875 | | 500 | 0.3883 | 2.5754 | | 1000 | 2.9375 | 0.3404 | -------------------------------------------------
------------------------------------------------- | Inversion | ------------------------------------------------- | Matrix Size | Duration | Operations/sec | ------------------------------------------------- | 50 | 0.0013 | 760.9981 | | 100 | 8.2308E-004 | 1.2149E+003 | | 250 | 0.0098 | 102.5320 | | 500 | 0.0643 | 15.5599 | | 1000 | 0.4782 | 2.0913 | -------------------------------------------------
------------------------------------------------- | Eigenvalues eigenvectors (Symmetric matrix) | ------------------------------------------------- | Matrix Size | Duration | Operations/sec | ------------------------------------------------- | 50 | 0.0020 | 512.6819 | | 100 | 0.0042 | 236.0399 | | 250 | 0.0473 | 21.1286 | | 500 | 0.3417 | 2.9268 | | 1000 | 2.6205 | 0.3816 | -------------------------------------------------
------------------------------------------------- | Eigenvalues eigenvectors (General matrix) | ------------------------------------------------- | Matrix Size | Duration | Operations/sec | ------------------------------------------------- | 50 | 0.0045 | 224.2647 | | 100 | 0.0170 | 58.6565 | | 250 | 0.2307 | 4.3354 | | 500 | 1.8507 | 0.5403 | | 1000 | 17.3691 | 0.0576 | ------------------------------------------------- .NET Matrix Library 64-bit
------------------------------------------------- | Multiplication | ------------------------------------------------- | Matrix Size | Duration | Operations/sec | ------------------------------------------------- | 50 | 5.6990E-005 | 1.7547E+004 | | 100 | 3.8420E-004 | 2.6028E+003 | | 250 | 0.0047 | 214.3472 | | 500 | 0.0311 | 32.1172 | | 1000 | 0.2352 | 4.2509 | -------------------------------------------------
------------------------------------------------- | Solve A * X = B | ------------------------------------------------- | Matrix Size | Duration | Operations/sec | ------------------------------------------------- | 50 | 0.0056 | 177.7596 | | 100 | 3.3447E-004 | 2.9898E+003 | | 250 | 0.0029 | 350.5835 | | 500 | 0.0155 | 64.3603 | | 1000 | 0.1145 | 8.7326 | -------------------------------------------------
------------------------------------------------- | LU Decomposition | ------------------------------------------------- | Matrix Size | Duration | Operations/sec | ------------------------------------------------- | 50 | 9.2679E-005 | 1.0790E+004 | | 100 | 2.8432E-004 | 3.5171E+003 | | 250 | 0.0025 | 396.0879 | | 500 | 0.0154 | 64.9745 | | 1000 | 0.1111 | 8.9989 | -------------------------------------------------
------------------------------------------------- | QR Decomposition | ------------------------------------------------- | Matrix Size | Duration | Operations/sec | ------------------------------------------------- | 50 | 0.0023 | 438.6025 | | 100 | 5.5866E-004 | 1.7900E+003 | | 250 | 0.0070 | 143.1976 | | 500 | 0.0483 | 20.7103 | | 1000 | 0.6895 | 1.4504 | -------------------------------------------------
------------------------------------------------- | SVD Decomposition | ------------------------------------------------- | Matrix Size | Duration | Operations/sec | ------------------------------------------------- | 50 | 0.0042 | 236.6446 | | 100 | 0.0067 | 148.7649 | | 250 | 0.0513 | 19.4915 | | 500 | 0.2833 | 3.5298 | | 1000 | 2.2659 | 0.4413 | -------------------------------------------------
------------------------------------------------- | Inversion | ------------------------------------------------- | Matrix Size | Duration | Operations/sec | ------------------------------------------------- | 50 | 0.0030 | 334.5760 | | 100 | 8.3977E-004 | 1.1908E+003 | | 250 | 0.0086 | 115.9170 | | 500 | 0.0494 | 20.2389 | | 1000 | 0.3421 | 2.9228 | -------------------------------------------------
------------------------------------------------- | Eigenvalues eigenvectors (Symmetric matrix) | ------------------------------------------------- | Matrix Size | Duration | Operations/sec | ------------------------------------------------- | 50 | 0.0029 | 340.8522 | | 100 | 0.0037 | 272.1932 | | 250 | 0.0362 | 27.6454 | | 500 | 0.2475 | 4.0406 | | 1000 | 2.2198 | 0.4505 | -------------------------------------------------
------------------------------------------------- | Eigenvalues eigenvectors (General matrix) | ------------------------------------------------- | Matrix Size | Duration | Operations/sec | ------------------------------------------------- | 50 | 0.0063 | 158.4308 | | 100 | 0.0140 | 71.3227 | | 250 | 0.1804 | 5.5439 | | 500 | 1.4484 | 0.6904 | | 1000 | 13.4902 | 0.0741 | ------------------------------------------------- |
As you will notice the 64-bit version tends to be slower for smaller matrices, but it is much faster than the 32-bit version when it comes to large matrices.
Trifon Triantafillidis | Lead Developer |
|
|
|
|
|