1. C++ / Говнокод #24917

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    void testing_dot(int N)
    {
    	Vector_type<float> X(N), Y(N);
    	for (int i = 0; i < N; ++i)
    	{
    		X[i] = sin(i);
    		Y[i] = cos(i);
    	}
    	int Ntest = 20;
    	float taxpyseq = 0.0, t;
    	const float axpyflop = Ntest*Ntest*N * 3 * 1E-9;
    	printf("testing sequential ops:\n");
    	omp_set_num_threads(1);
    	for (int i = 0; i < Ntest; i++) {
    		t = omp_get_wtime();
    		for (int j = 0; j < Ntest; j++) dot(X, Y);
    		taxpyseq += omp_get_wtime() - t;
    	}
    	printf("Sequential ops timing: \n");
    	printf("dot time=%6.3fs GFLOPS=%6.2f\n", taxpyseq, axpyflop / taxpyseq);
    	//parallel mode
    	const int NTR = omp_get_num_procs();
    	for (int ntr = 2; ntr <= NTR; ntr += 2) {
    		for (int i = 0; i < N; ++i)
    		{
    			X[i] = sin(i);
    			Y[i] = cos(i);
    		}
    		printf("testing parallel ops for ntr=%d:\n", ntr);
    		omp_set_num_threads(ntr);
    		float taxpypar = 0.0;
    		for (int i = 0; i < Ntest; i++) {
    			t = omp_get_wtime();
    			for (int j = 0; j < Ntest; j++); dot(X, Y);//действительно небывалое ускорение!!!
    			taxpypar += omp_get_wtime() - t;
    		}
    		printf("dot time=%6.3fs GFLOPS=%6.2f Speedup=%6.2fX \n",
    			taxpypar, axpyflop / taxpypar, taxpyseq / taxpypar);
    	}
    }

    когда ты доказываешь закащику, что твой алгоритм реально лучше...

    Запостил: cat_code, 13 Октября 2018

    Комментарии (2) RSS

    Добавить комментарий