cf. CUDA C++ Programming Guide / §16. Compute Capabilities / §16.2. Features and Technical Specifications
| NVIDIA GPU | deviceQuery output |
cf. CUDA C++ Programming Guide / §16. Compute Capabilities / §16.2. Features and Technical Specifications
| NVIDIA GPU | deviceQuery output |
| #include <bit> | |
| #include <random> | |
| #include <benchmark/benchmark.h> | |
| template <class Generator> static void BM_random(benchmark::State &state) { | |
| Generator gen; | |
| for (auto _ : state) | |
| benchmark::DoNotOptimize(gen()); |
| !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefg | |
| !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgh | |
| "#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghi | |
| #$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghij | |
| $%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijk | |
| %&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkl | |
| &'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklm | |
| '()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmn | |
| ()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmno | |
| )*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnop |
| $ c++ rump.cpp -lmpfi -lmpfr -lgmp | |
| $ for prec in 1 10 20 30 31 32 33 34 35 36 37 38 39 40; do ./a.out $prec; done | |
| prec = 1: {-5.48801451098564180059512748897e+36,8.80613556589959273415384575891e+36} | |
| prec = 10: {-719561148094296450146500608,1425281040027303069683286016} | |
| prec = 20: {-108086391056891902.82763671875,144115188075855873.1728515625} | |
| prec = 30: {-4194302.82739605994683529388567,4194305.17260394005319312782376} | |
| prec = 31: {-524286.827396059946822859387794,524289.172603940053178916969046} | |
| prec = 32: {-32766.8273960599468214160978619,1.17260394005317863186453174879} | |
| prec = 33: {-4094.82739605994682137446449843,1.17260394005317863186453174879} | |
| prec = 34: {-510.827396059946821369260328005,1.17260394005317863186453174879} |
| #!/usr/bin/env python3 | |
| import numpy as np | |
| # Assume that P = N * N. | |
| N = 4 | |
| A = np.arange(0, 2 * N * N, 2).reshape(N, N) | |
| B = np.arange(1, 2 * N * N, 2).reshape(N, N) | |
| C_gt = A.dot(B) |
| #include <iostream> | |
| #include <gmp.h> | |
| #include <gmpxx.h> | |
| #include <omp.h> | |
| int main(int argc, char *argv[]) | |
| { | |
| if (argc != 1 + 2) { | |
| std::cerr << "Specify a and b for comb(a, b)\n"; | |
| return 1; |