已合并
[flang] Fix patch 4-add-test-cases-for-openmp-optimization.patch #22
AtomGit-Bot创建于 2022年11月4日
[flang] Fix patch 4-add-test-cases-for-openmp-optimization.patch #22
已合并
从refs/pull/22/head合入到master
共 2 个文件变更+785-19
| @@ -1,8 +1,21 @@ | |||
| 1 | -From d285972f0bd71a1db981008cbadda8909da8b1ac Mon Sep 17 00:00:00 2001 | 1 | +From 22be02d7a701ced84b8f8b5b575f7f2d07e0524b Mon Sep 17 00:00:00 2001 |
| 2 | From: xieyihui <yihui@isrc.iscas.ac.cn> | 2 | From: xieyihui <yihui@isrc.iscas.ac.cn> |
| 3 | -Date: Thu, 13 Oct 2022 18:25:41 +0800 | 3 | +Date: Fri, 11 Nov 2022 13:15:51 +0800 |
| 4 | Subject: [PATCH] Add test cases for openmp optimization | 4 | Subject: [PATCH] Add test cases for openmp optimization |
| 5 | 5 | ||
| 6 | +diff --git a/test/openmp_optimization/fortran_func010.f90 b/test/openmp_optimization/fortran_func010.f90 | ||
| 7 | +new file mode 100644 | ||
| 8 | +index 0000000..2c0b65e | ||
| 9 | +--- /dev/null | ||
| 10 | ++++ b/test/openmp_optimization/fortran_func010.f90 | ||
| 11 | + | ||
| 12 | ++subroutine f(a, b, c) | ||
| 13 | ++ integer :: a(10000000), b(10000000), c(10000000) | ||
| 14 | ++ do i = 2, 10000000 | ||
| 15 | ++ a(i) = a(i - 1) + b(i) * c(i) | ||
| 16 | ++ end do | ||
| 17 | ++end | ||
| 18 | + | ||
| 6 | diff --git a/test/openmp_optimization/fortran_main001.f90 b/test/openmp_optimization/fortran_main001.f90 | 19 | diff --git a/test/openmp_optimization/fortran_main001.f90 b/test/openmp_optimization/fortran_main001.f90 |
| 7 | new file mode 100644 | 20 | new file mode 100644 |
| 8 | index 0000000..2ef72a2 | 21 | index 0000000..2ef72a2 |
| @@ -327,6 +340,312 @@ index 0000000..6f219de | |||
| 327 | +! IWOMP 2018. Lecture Notes in Computer Science(), vol 11128. Springer, | 340 | +! IWOMP 2018. Lecture Notes in Computer Science(), vol 11128. Springer, |
| 328 | +! Cham. https://doi.org/10.1007/978-3-319-98521-3_8 | 341 | +! Cham. https://doi.org/10.1007/978-3-319-98521-3_8 |
| 329 | 342 | ||
| 343 | +diff --git a/test/openmp_optimization/fortran_main010.f90 b/test/openmp_optimization/fortran_main010.f90 | ||
| 344 | +new file mode 100644 | ||
| 345 | +index 0000000..9542916 | ||
| 346 | +--- /dev/null | ||
| 347 | ++++ b/test/openmp_optimization/fortran_main010.f90 | ||
| 348 | + | ||
| 349 | ++! Test optimizaton for fortran use openmp about partial simd | ||
| 350 | ++! | ||
| 351 | ++program main | ||
| 352 | ++ use omp_lib | ||
| 353 | ++ real(kind = 8) :: starttime, endtime, time | ||
| 354 | ++ integer :: a(10000000), b(10000000), c(10000000) | ||
| 355 | ++ do i = 1, 10000000 | ||
| 356 | ++ a(i) = i | ||
| 357 | ++ b(i) = i | ||
| 358 | ++ c(i) = i | ||
| 359 | ++ end do | ||
| 360 | ++ starttime = omp_get_wtime() | ||
| 361 | ++ do i = 1, 50 | ||
| 362 | ++ call f(a, b, c) | ||
| 363 | ++ end do | ||
| 364 | ++ endtime = omp_get_wtime() | ||
| 365 | ++ time = endtime - starttime | ||
| 366 | ++print *, time | ||
| 367 | ++end program main | ||
| 368 | + | ||
| 369 | +diff --git a/test/openmp_optimization/fortran_main011.f90 b/test/openmp_optimization/fortran_main011.f90 | ||
| 370 | +new file mode 100644 | ||
| 371 | +index 0000000..0c53aea | ||
| 372 | +--- /dev/null | ||
| 373 | ++++ b/test/openmp_optimization/fortran_main011.f90 | ||
| 374 | + | ||
| 375 | ++! Test optimizaton for fortran use openmp about avoid false sharing | ||
| 376 | ++! | ||
| 377 | ++program main | ||
| 378 | ++ use omp_lib | ||
| 379 | ++ real(kind = 8) :: starttime, endtime, time | ||
| 380 | ++ integer :: a(10000) | ||
| 381 | ++ integer :: temp | ||
| 382 | ++ do i = 1, 10000 | ||
| 383 | ++ a(i) = i | ||
| 384 | ++ end do | ||
| 385 | ++ starttime = omp_get_wtime() | ||
| 386 | ++ do n = 1, 50000 | ||
| 387 | ++ !$omp parallel do schedule (static, 1) | ||
| 388 | ++ do i = 1, 10000 | ||
| 389 | ++ a(i) = a(i) + 1 | ||
| 390 | ++ end do | ||
| 391 | ++ !$omp end parallel do | ||
| 392 | ++ end do | ||
| 393 | ++ endtime = omp_get_wtime() | ||
| 394 | ++ time = endtime - starttime | ||
| 395 | ++print *, time | ||
| 396 | ++end program main | ||
| 397 | ++ | ||
| 398 | ++! Reference | ||
| 399 | ++! http://akira.ruc.dk/~keld/teaching/IPDC_f10/Slides/pdf4x/4_Performance.4x.pdf | ||
| 400 | + | ||
| 401 | +diff --git a/test/openmp_optimization/fortran_main012.f90 b/test/openmp_optimization/fortran_main012.f90 | ||
| 402 | +new file mode 100644 | ||
| 403 | +index 0000000..2a02961 | ||
| 404 | +--- /dev/null | ||
| 405 | ++++ b/test/openmp_optimization/fortran_main012.f90 | ||
| 406 | + | ||
| 407 | ++! Test optimizaton for fortran use openmp about variable attributes | ||
| 408 | ++! | ||
| 409 | ++program main | ||
| 410 | ++ use omp_lib | ||
| 411 | ++ real(kind = 8) :: starttime, endtime, time | ||
| 412 | ++ integer :: a(1000), b(1000) | ||
| 413 | ++ integer :: temp | ||
| 414 | ++ starttime = omp_get_wtime() | ||
| 415 | ++ do n = 1, 5000 | ||
| 416 | ++ !$omp parallel | ||
| 417 | ++ !$omp do private(a) | ||
| 418 | ++ do i = 1, 1000 | ||
| 419 | ++ temp = a(i) | ||
| 420 | ++ end do | ||
| 421 | ++ !$omp end do | ||
| 422 | ++ !$omp do private(a) | ||
| 423 | ++ do i = 1, 1000 | ||
| 424 | ++ temp = b(i) | ||
| 425 | ++ end do | ||
| 426 | ++ !$omp end do | ||
| 427 | ++ !$omp end parallel | ||
| 428 | ++ end do | ||
| 429 | ++ endtime = omp_get_wtime() | ||
| 430 | ++ time = endtime - starttime | ||
| 431 | ++ print *, time | ||
| 432 | ++end program main | ||
| 433 | ++ | ||
| 434 | ++! Reference | ||
| 435 | ++! 游佐勇. OpenMP并行编程模型与性能优化方法的研究及应用[D].成都理工大学,2011. | ||
| 436 | + | ||
| 437 | +diff --git a/test/openmp_optimization/fortran_main013.f90 b/test/openmp_optimization/fortran_main013.f90 | ||
| 438 | +new file mode 100644 | ||
| 439 | +index 0000000..f7eb485 | ||
| 440 | +--- /dev/null | ||
| 441 | ++++ b/test/openmp_optimization/fortran_main013.f90 | ||
| 442 | + | ||
| 443 | ++! Test optimizaton for fortran use openmp about parallel region | ||
| 444 | ++! reconstruction | ||
| 445 | ++! | ||
| 446 | ++subroutine add1(s) | ||
| 447 | ++ use omp_lib | ||
| 448 | ++ real :: s(10000) | ||
| 449 | ++ !$omp parallel do | ||
| 450 | ++ do i = 1, 10000 | ||
| 451 | ++ s(i) = i + 1 | ||
| 452 | ++ end do | ||
| 453 | ++ !$omp end parallel do | ||
| 454 | ++end subroutine add1 | ||
| 455 | ++program main | ||
| 456 | ++ use omp_lib | ||
| 457 | ++ real(kind = 8) :: starttime, endtime, time | ||
| 458 | ++ real :: a(10000) | ||
| 459 | ++ starttime = omp_get_wtime() | ||
| 460 | ++ do n = 1, 50000 | ||
| 461 | ++ call add1(a) | ||
| 462 | ++ end do | ||
| 463 | ++ endtime = omp_get_wtime() | ||
| 464 | ++ time = endtime - starttime | ||
| 465 | ++ print *, time | ||
| 466 | ++end program main | ||
| 467 | ++ | ||
| 468 | ++! Reference | ||
| 469 | ++! 刘京,郑启龙,李彭勇,郭连伟.面向Open64的OpenMP程序优化[J].计算机系统应用,2016,25(01):154-159. | ||
| 470 | + | ||
| 471 | +diff --git a/test/openmp_optimization/fortran_main014.f90 b/test/openmp_optimization/fortran_main014.f90 | ||
| 472 | +new file mode 100644 | ||
| 473 | +index 0000000..5e6f6b7 | ||
| 474 | +--- /dev/null | ||
| 475 | ++++ b/test/openmp_optimization/fortran_main014.f90 | ||
| 476 | + | ||
| 477 | ++! Test optimizaton for fortran use openmp about parallel removing | ||
| 478 | ++! parallel region with no side-effects | ||
| 479 | ++! | ||
| 480 | ++subroutine foo() | ||
| 481 | ++ integer :: x = 1 | ||
| 482 | ++end subroutine foo | ||
| 483 | ++program main | ||
| 484 | ++ use omp_lib | ||
| 485 | ++ real(kind = 8) :: starttime, endtime, time | ||
| 486 | ++ starttime = omp_get_wtime() | ||
| 487 | ++ do n = 1, 100000 | ||
| 488 | ++ !$omp parallel | ||
| 489 | ++ !$omp end parallel | ||
| 490 | ++ !$omp parallel | ||
| 491 | ++ call foo() | ||
| 492 | ++ !$omp end parallel | ||
| 493 | ++ end do | ||
| 494 | ++ endtime = omp_get_wtime() | ||
| 495 | ++ time = endtime - starttime | ||
| 496 | ++print *, time | ||
| 497 | ++end program main | ||
| 498 | ++ | ||
| 499 | ++! Reference | ||
| 500 | ++! https://openmp.llvm.org/remarks/OptimizationRemarks.html | ||
| 501 | + | ||
| 502 | +diff --git a/test/openmp_optimization/fortran_main015.f90 b/test/openmp_optimization/fortran_main015.f90 | ||
| 503 | +new file mode 100644 | ||
| 504 | +index 0000000..9c9ee4d | ||
| 505 | +--- /dev/null | ||
| 506 | ++++ b/test/openmp_optimization/fortran_main015.f90 | ||
| 507 | + | ||
| 508 | ++! Test optimizaton for fortran use openmp about remove dependencies | ||
| 509 | ++! | ||
| 510 | ++program main | ||
| 511 | ++ use omp_lib | ||
| 512 | ++ real(kind = 8) :: starttime, endtime, time | ||
| 513 | ++ integer :: a(1000000) | ||
| 514 | ++ integer :: b(1000000) | ||
| 515 | ++ integer :: c(1000000) | ||
| 516 | ++ integer :: x | ||
| 517 | ++ do i = 1, 1000000 | ||
| 518 | ++ a(i) = i | ||
| 519 | ++ b(i) = i + 1 | ||
| 520 | ++ c(i) = i + 2 | ||
| 521 | ++ end do | ||
| 522 | ++ starttime = omp_get_wtime() | ||
| 523 | ++ do w = 1, 100 | ||
| 524 | ++ do i = 1, 1000000 | ||
| 525 | ++ x = (b(i) + c(i)) / 2 | ||
| 526 | ++ a(i) = a(i + 1) + x | ||
| 527 | ++ end do | ||
| 528 | ++ end do | ||
| 529 | ++ endtime = omp_get_wtime() | ||
| 530 | ++ time = endtime - starttime | ||
| 531 | ++print *, time | ||
| 532 | ++end program main | ||
| 533 | ++ | ||
| 534 | ++! Reference | ||
| 535 | ++! http://akira.ruc.dk/~keld/teaching/IPDC_f10/Slides/pdf4x/4_Performance.4x.pdf | ||
| 536 | + | ||
| 537 | +diff --git a/test/openmp_optimization/fortran_main016.f90 b/test/openmp_optimization/fortran_main016.f90 | ||
| 538 | +new file mode 100644 | ||
| 539 | +index 0000000..4aa262e | ||
| 540 | +--- /dev/null | ||
| 541 | ++++ b/test/openmp_optimization/fortran_main016.f90 | ||
| 542 | + | ||
| 543 | ++! Test optimizaton for fortran use openmp about remove dependencies | ||
| 544 | ++! | ||
| 545 | ++program main | ||
| 546 | ++ use omp_lib | ||
| 547 | ++ real(kind = 8) :: starttime, endtime, time | ||
| 548 | ++ integer :: a(1000000) | ||
| 549 | ++ integer :: b(1000000) | ||
| 550 | ++ integer :: c(1000000) | ||
| 551 | ++ do i = 1, 1000000 | ||
| 552 | ++ a(i) = i | ||
| 553 | ++ b(i) = i + 1 | ||
| 554 | ++ c(i) = i + 2 | ||
| 555 | ++ end do | ||
| 556 | ++ starttime = omp_get_wtime() | ||
| 557 | ++ do w = 1, 1000 | ||
| 558 | ++ do i = 1, 1000000 | ||
| 559 | ++ b(i) = b(i) + a(i - 1) | ||
| 560 | ++ a(i) = a(i) + c(i) | ||
| 561 | ++ end do | ||
| 562 | ++ end do | ||
| 563 | ++ endtime = omp_get_wtime() | ||
| 564 | ++ time = endtime - starttime | ||
| 565 | ++print *, time | ||
| 566 | ++end program main | ||
| 567 | ++ | ||
| 568 | ++! Reference | ||
| 569 | ++! http://akira.ruc.dk/~keld/teaching/IPDC_f10/Slides/pdf4x/4_Performance.4x.pdf | ||
| 570 | + | ||
| 571 | +diff --git a/test/openmp_optimization/fortran_main017.f90 b/test/openmp_optimization/fortran_main017.f90 | ||
| 572 | +new file mode 100644 | ||
| 573 | +index 0000000..014f0b6 | ||
| 574 | +--- /dev/null | ||
| 575 | ++++ b/test/openmp_optimization/fortran_main017.f90 | ||
| 576 | + | ||
| 577 | ++! Test optimizaton for fortran use openmp about communication | ||
| 578 | ++! | ||
| 579 | ++subroutine f(x, y) | ||
| 580 | ++ integer, pointer :: x(:) | ||
| 581 | ++ integer, pointer :: y | ||
| 582 | ++ integer :: n = 512 | ||
| 583 | ++ integer :: l | ||
| 584 | ++ integer :: k | ||
| 585 | ++ integer :: m | ||
| 586 | ++ l = x(1) | ||
| 587 | ++ a = n + l | ||
| 588 | ++ !$omp parallel do firstprivate(x, y, n, l, a) | ||
| 589 | ++ do i = 1, n | ||
| 590 | ++ k = y | ||
| 591 | ++ m = n * k | ||
| 592 | ++ x(i) = m + a * l * i | ||
| 593 | ++ end do | ||
| 594 | ++ !$omp end parallel do | ||
| 595 | ++end | ||
| 596 | ++ | ||
| 597 | ++program main | ||
| 598 | ++ use omp_lib | ||
| 599 | ++ interface | ||
| 600 | ++ subroutine f(x, y) | ||
| 601 | ++ integer, pointer :: x(:) | ||
| 602 | ++ integer, pointer :: y | ||
| 603 | ++ end subroutine | ||
| 604 | ++ end interface | ||
| 605 | ++ real(kind = 8) :: starttime, endtime, time | ||
| 606 | ++ integer, target :: a(512) | ||
| 607 | ++ integer, target :: b = 1 | ||
| 608 | ++ integer, pointer :: ap(:) | ||
| 609 | ++ integer, pointer :: bp | ||
| 610 | ++ do i = 1, 512 | ||
| 611 | ++ a(i) = i | ||
| 612 | ++ end do | ||
| 613 | ++ ap => a | ||
| 614 | ++ bp => b | ||
| 615 | ++ starttime = omp_get_wtime() | ||
| 616 | ++ do i = 1, 1000 | ||
| 617 | ++ call f(ap, bp) | ||
| 618 | ++ end do | ||
| 619 | ++ endtime = omp_get_wtime() | ||
| 620 | ++ time = endtime - starttime | ||
| 621 | ++ print *, time | ||
| 622 | ++end program main | ||
| 623 | ++ | ||
| 624 | ++! Reference | ||
| 625 | ++! Doerfert, J., Finkel, H. (2018). Compiler Optimizations for OpenMP. | ||
| 626 | ++! In: de Supinski, B., Valero-Lara, P., Martorell, X., Mateo Bellido S. | ||
| 627 | ++! , Labarta, J. (eds) Evolving OpenMP for Evolving Architectures. | ||
| 628 | ++! IWOMP 2018. Lecture Notes in Computer Science(), vol 11128. Springer, | ||
| 629 | ++! Cham. https://doi.org/10.1007/978-3-319-98521-3_8 | ||
| 630 | + | ||
| 631 | +diff --git a/test/openmp_optimization/fortran_optimized_func010.f90 b/test/openmp_optimization/fortran_optimized_func010.f90 | ||
| 632 | +new file mode 100644 | ||
| 633 | +index 0000000..be0920d | ||
| 634 | +--- /dev/null | ||
| 635 | ++++ b/test/openmp_optimization/fortran_optimized_func010.f90 | ||
| 636 | + | ||
| 637 | ++subroutine f(a, b, c, d) | ||
| 638 | ++ integer :: a(10000000), b(10000000), c(10000000), d(10000000) | ||
| 639 | ++ !$omp parallel do | ||
| 640 | ++ do i = 2, 10000000 | ||
| 641 | ++ d(i) = b(i) * c(i) | ||
| 642 | ++ end do | ||
| 643 | ++ !$parallel end do | ||
| 644 | ++ do i = 2, 10000000 | ||
| 645 | ++ a(i) = a(i - 1) + d(i) | ||
| 646 | ++ end do | ||
| 647 | ++end | ||
| 648 | + | ||
| 330 | diff --git a/test/openmp_optimization/optimized_main001.f90 b/test/openmp_optimization/optimized_main001.f90 | 649 | diff --git a/test/openmp_optimization/optimized_main001.f90 b/test/openmp_optimization/optimized_main001.f90 |
| 331 | new file mode 100644 | 650 | new file mode 100644 |
| 332 | index 0000000..f3c3cfa | 651 | index 0000000..f3c3cfa |
| @@ -548,11 +867,11 @@ index 0000000..728c8a8 | |||
| 548 | 867 | ||
| 549 | diff --git a/test/openmp_optimization/optimized_main009.f90 b/test/openmp_optimization/optimized_main009.f90 | 868 | diff --git a/test/openmp_optimization/optimized_main009.f90 b/test/openmp_optimization/optimized_main009.f90 |
| 550 | new file mode 100644 | 869 | new file mode 100644 |
| 551 | -index 0000000..1111c77 | 870 | +index 0000000..fdfc304 |
| 552 | --- /dev/null | 871 | --- /dev/null |
| 553 | +++ b/test/openmp_optimization/optimized_main009.f90 | 872 | +++ b/test/openmp_optimization/optimized_main009.f90 |
| 554 | 873 | ||
| 555 | -+! Test optimizaton for fortran use openmp about parallel region expand | 874 | ++! Test optimizaton for fortran use openmp about partial simd |
| 556 | +! | 875 | +! |
| 557 | +program main | 876 | +program main |
| 558 | + use omp_lib | 877 | + use omp_lib |
| @@ -590,12 +909,311 @@ index 0000000..1111c77 | |||
| 590 | +! IWOMP 2018. Lecture Notes in Computer Science(), vol 11128. Springer, | 909 | +! IWOMP 2018. Lecture Notes in Computer Science(), vol 11128. Springer, |
| 591 | +! Cham. https://doi.org/10.1007/978-3-319-98521-3_8 | 910 | +! Cham. https://doi.org/10.1007/978-3-319-98521-3_8 |
| 592 | 911 | ||
| 912 | +diff --git a/test/openmp_optimization/optimized_main010.f90 b/test/openmp_optimization/optimized_main010.f90 | ||
| 913 | +new file mode 100644 | ||
| 914 | +index 0000000..ca0189f | ||
| 915 | +--- /dev/null | ||
| 916 | ++++ b/test/openmp_optimization/optimized_main010.f90 | ||
| 917 | + | ||
| 918 | ++! Test optimizaton for fortran use openmp about partial simd | ||
| 919 | ++! | ||
| 920 | ++program main | ||
| 921 | ++ use omp_lib | ||
| 922 | ++ real(kind = 8) :: starttime, endtime, time | ||
| 923 | ++ integer :: a(10000000), b(10000000), c(10000000), d(10000000) | ||
| 924 | ++ do i = 1, 10000000 | ||
| 925 | ++ a(i) = i | ||
| 926 | ++ b(i) = i | ||
| 927 | ++ c(i) = i | ||
| 928 | ++ end do | ||
| 929 | ++ starttime = omp_get_wtime() | ||
| 930 | ++ do i = 1, 50 | ||
| 931 | ++ call f(a, b, c, d) | ||
| 932 | ++ end do | ||
| 933 | ++ endtime = omp_get_wtime() | ||
| 934 | ++ time = endtime - starttime | ||
| 935 | ++print *, time | ||
| 936 | ++end program main | ||
| 937 | + | ||
| 938 | +diff --git a/test/openmp_optimization/optimized_main011.f90 b/test/openmp_optimization/optimized_main011.f90 | ||
| 939 | +new file mode 100644 | ||
| 940 | +index 0000000..dd7fd85 | ||
| 941 | +--- /dev/null | ||
| 942 | ++++ b/test/openmp_optimization/optimized_main011.f90 | ||
| 943 | + | ||
| 944 | ++! Test optimizaton for fortran use openmp about avoid false sharing | ||
| 945 | ++! | ||
| 946 | ++program main | ||
| 947 | ++ use omp_lib | ||
| 948 | ++ real(kind = 8) :: starttime, endtime, time | ||
| 949 | ++ integer :: a(10000 * 16) | ||
| 950 | ++ integer :: temp | ||
| 951 | ++ do i = 1, 10000 | ||
| 952 | ++ a(i * 16) = i | ||
| 953 | ++ end do | ||
| 954 | ++ starttime = omp_get_wtime() | ||
| 955 | ++ do n = 1, 50000 | ||
| 956 | ++ !$omp parallel do schedule (static, 1) | ||
| 957 | ++ do i = 1, 10000 | ||
| 958 | ++ a(i) = a(i * 16) + 1 | ||
| 959 | ++ end do | ||
| 960 | ++ !$omp end parallel do | ||
| 961 | ++ end do | ||
| 962 | ++ endtime = omp_get_wtime() | ||
| 963 | ++ time = endtime - starttime | ||
| 964 | ++print *, time | ||
| 965 | ++end program main | ||
| 966 | ++ | ||
| 967 | ++! Reference | ||
| 968 | ++! http://akira.ruc.dk/~keld/teaching/IPDC_f10/Slides/pdf4x/4_Performance.4x.pdf | ||
| 969 | + | ||
| 970 | +diff --git a/test/openmp_optimization/optimized_main012.f90 b/test/openmp_optimization/optimized_main012.f90 | ||
| 971 | +new file mode 100644 | ||
| 972 | +index 0000000..6a2c1f6 | ||
| 973 | +--- /dev/null | ||
| 974 | ++++ b/test/openmp_optimization/optimized_main012.f90 | ||
| 975 | + | ||
| 976 | ++! Test optimizaton for fortran use openmp about variable attributes | ||
| 977 | ++! | ||
| 978 | ++program main | ||
| 979 | ++ use omp_lib | ||
| 980 | ++ real(kind = 8) :: starttime, endtime, time | ||
| 981 | ++ integer :: a(1000), b(1000) | ||
| 982 | ++ integer :: temp | ||
| 983 | ++ starttime = omp_get_wtime() | ||
| 984 | ++ do n = 1, 5000 | ||
| 985 | ++ !$omp parallel private(a) | ||
| 986 | ++ !$omp do | ||
| 987 | ++ do i = 1, 1000 | ||
| 988 | ++ temp = a(i) | ||
| 989 | ++ end do | ||
| 990 | ++ !$omp end do | ||
| 991 | ++ !$omp do | ||
| 992 | ++ do i = 1, 1000 | ||
| 993 | ++ temp = b(i) | ||
| 994 | ++ end do | ||
| 995 | ++ !$omp end do | ||
| 996 | ++ !$omp end parallel | ||
| 997 | ++ end do | ||
| 998 | ++ endtime = omp_get_wtime() | ||
| 999 | ++ time = endtime - starttime | ||
| 1000 | ++ print *, time | ||
| 1001 | ++end program main | ||
| 1002 | ++ | ||
| 1003 | ++! Reference | ||
| 1004 | ++! 游佐勇. OpenMP并行编程模型与性能优化方法的研究及应用[D].成都理工大学,2011. | ||
| 1005 | + | ||
| 1006 | +diff --git a/test/openmp_optimization/optimized_main013.f90 b/test/openmp_optimization/optimized_main013.f90 | ||
| 1007 | +new file mode 100644 | ||
| 1008 | +index 0000000..f5b1ae6 | ||
| 1009 | +--- /dev/null | ||
| 1010 | ++++ b/test/openmp_optimization/optimized_main013.f90 | ||
| 1011 | + | ||
| 1012 | ++! Test optimizaton for fortran use openmp about parallel region | ||
| 1013 | ++! reconstruction | ||
| 1014 | ++! | ||
| 1015 | ++subroutine add1(s) | ||
| 1016 | ++ use omp_lib | ||
| 1017 | ++ real :: s(10000) | ||
| 1018 | ++ !$omp do | ||
| 1019 | ++ do i = 1, 10000 | ||
| 1020 | ++ s(i) = i + 1 | ||
| 1021 | ++ end do | ||
| 1022 | ++ !$omp end do | ||
| 1023 | ++end subroutine add1 | ||
| 1024 | ++program main | ||
| 1025 | ++ use omp_lib | ||
| 1026 | ++ real(kind = 8) :: starttime, endtime, time | ||
| 1027 | ++ real :: a(10000) | ||
| 1028 | ++ starttime = omp_get_wtime() | ||
| 1029 | ++ do n = 1, 50000 | ||
| 1030 | ++ !$omp parallel | ||
| 1031 | ++ call add1(a) | ||
| 1032 | ++ !$omp end parallel | ||
| 1033 | ++ end do | ||
| 1034 | ++ endtime = omp_get_wtime() | ||
| 1035 | ++ time = endtime - starttime | ||
| 1036 | ++ print *, time | ||
| 1037 | ++end program main | ||
| 1038 | ++ | ||
| 1039 | ++! Reference | ||
| 1040 | ++! 刘京,郑启龙,李彭勇,郭连伟.面向Open64的OpenMP程序优化[J].计算机系统应用,2016,25(01):154-159. | ||
| 1041 | + | ||
| 1042 | +diff --git a/test/openmp_optimization/optimized_main014.f90 b/test/openmp_optimization/optimized_main014.f90 | ||
| 1043 | +new file mode 100644 | ||
| 1044 | +index 0000000..96393d0 | ||
| 1045 | +--- /dev/null | ||
| 1046 | ++++ b/test/openmp_optimization/optimized_main014.f90 | ||
| 1047 | + | ||
| 1048 | ++! Test optimizaton for fortran use openmp about parallel removing | ||
| 1049 | ++! parallel region with no side-effects | ||
| 1050 | ++! | ||
| 1051 | ++subroutine foo() | ||
| 1052 | ++ integer :: x = 1 | ||
| 1053 | ++end subroutine foo | ||
| 1054 | ++program main | ||
| 1055 | ++ use omp_lib | ||
| 1056 | ++ real(kind = 8) :: starttime, endtime, time | ||
| 1057 | ++ starttime = omp_get_wtime() | ||
| 1058 | ++ do n = 1, 100000 | ||
| 1059 | ++ | ||
| 1060 | ++ end do | ||
| 1061 | ++ endtime = omp_get_wtime() | ||
| 1062 | ++ time = endtime - starttime | ||
| 1063 | ++print *, time | ||
| 1064 | ++end program main | ||
| 1065 | ++ | ||
| 1066 | ++! Reference | ||
| 1067 | ++! https://openmp.llvm.org/remarks/OptimizationRemarks.html | ||
| 1068 | + | ||
| 1069 | +diff --git a/test/openmp_optimization/optimized_main015.f90 b/test/openmp_optimization/optimized_main015.f90 | ||
| 1070 | +new file mode 100644 | ||
| 1071 | +index 0000000..727fe74 | ||
| 1072 | +--- /dev/null | ||
| 1073 | ++++ b/test/openmp_optimization/optimized_main015.f90 | ||
| 1074 | + | ||
| 1075 | ++! Test optimizaton for fortran use openmp about remove dependencies | ||
| 1076 | ++! | ||
| 1077 | ++program main | ||
| 1078 | ++ use omp_lib | ||
| 1079 | ++ real(kind = 8) :: starttime, endtime, time | ||
| 1080 | ++ integer :: a(1000000), a_copy(1000000) | ||
| 1081 | ++ integer :: b(1000000) | ||
| 1082 | ++ integer :: c(1000000) | ||
| 1083 | ++ integer :: x | ||
| 1084 | ++ do i = 1, 1000000 | ||
| 1085 | ++ a(i) = i | ||
| 1086 | ++ b(i) = i + 1 | ||
| 1087 | ++ c(i) = i + 2 | ||
| 1088 | ++ end do | ||
| 1089 | ++ starttime = omp_get_wtime() | ||
| 1090 | ++ !$omp parallel shared(a, a_copy) | ||
| 1091 | ++ do w = 1, 100 | ||
| 1092 | ++ !$omp do | ||
| 1093 | ++ do i = 1, 1000000 | ||
| 1094 | ++ a_copy(i) = a(i + 1) | ||
| 1095 | ++ end do | ||
| 1096 | ++ !$omp end do | ||
| 1097 | ++ !$omp do | ||
| 1098 | ++ do i = 1, 1000000 | ||
| 1099 | ++ x = (b(i) + c(i)) / 2 | ||
| 1100 | ++ a(i) = a_copy(i) + x | ||
| 1101 | ++ end do | ||
| 1102 | ++ !$omp end do | ||
| 1103 | ++ end do | ||
| 1104 | ++ !$omp end parallel | ||
| 1105 | ++ endtime = omp_get_wtime() | ||
| 1106 | ++ time = endtime - starttime | ||
| 1107 | ++print *, time | ||
| 1108 | ++end program main | ||
| 1109 | ++ | ||
| 1110 | ++! Reference | ||
| 1111 | ++! http://akira.ruc.dk/~keld/teaching/IPDC_f10/Slides/pdf4x/4_Performance.4x.pdf | ||
| 1112 | + | ||
| 1113 | +diff --git a/test/openmp_optimization/optimized_main016.f90 b/test/openmp_optimization/optimized_main016.f90 | ||
| 1114 | +new file mode 100644 | ||
| 1115 | +index 0000000..2b0f650 | ||
| 1116 | +--- /dev/null | ||
| 1117 | ++++ b/test/openmp_optimization/optimized_main016.f90 | ||
| 1118 | + | ||
| 1119 | ++! Test optimizaton for fortran use openmp about remove dependencies | ||
| 1120 | ++! | ||
| 1121 | ++program main | ||
| 1122 | ++ use omp_lib | ||
| 1123 | ++ real(kind = 8) :: starttime, endtime, time | ||
| 1124 | ++ integer :: a(1000000) | ||
| 1125 | ++ integer :: b(1000000) | ||
| 1126 | ++ integer :: c(1000000) | ||
| 1127 | ++ do i = 1, 1000000 | ||
| 1128 | ++ a(i) = i | ||
| 1129 | ++ b(i) = i + 1 | ||
| 1130 | ++ c(i) = i + 2 | ||
| 1131 | ++ end do | ||
| 1132 | ++ starttime = omp_get_wtime() | ||
| 1133 | ++ do w = 1, 1000 | ||
| 1134 | ++ b(1) = b(1) - a(0) | ||
| 1135 | ++ !$omp parallel do shared(a, b, c) | ||
| 1136 | ++ do i = 2, 1000000 | ||
| 1137 | ++ b(i) = b(i) + a(i - 1) | ||
| 1138 | ++ a(i) = a(i) + c(i) | ||
| 1139 | ++ end do | ||
| 1140 | ++ !$omp end parallel do | ||
| 1141 | ++ a(1000000 - 1) = a(1000000 - 1) + c(1000000 - 1) | ||
| 1142 | ++ end do | ||
| 1143 | ++ endtime = omp_get_wtime() | ||
| 1144 | ++ time = endtime - starttime | ||
| 1145 | ++print *, time | ||
| 1146 | ++end program main | ||
| 1147 | ++ | ||
| 1148 | ++! Reference | ||
| 1149 | ++! http://akira.ruc.dk/~keld/teaching/IPDC_f10/Slides/pdf4x/4_Performance.4x.pdf | ||
| 1150 | + | ||
| 1151 | +diff --git a/test/openmp_optimization/optimized_main017.f90 b/test/openmp_optimization/optimized_main017.f90 | ||
| 1152 | +new file mode 100644 | ||
| 1153 | +index 0000000..09d6741 | ||
| 1154 | +--- /dev/null | ||
| 1155 | ++++ b/test/openmp_optimization/optimized_main017.f90 | ||
| 1156 | + | ||
| 1157 | ++! Test optimizaton for fortran use openmp about communication | ||
| 1158 | ++! | ||
| 1159 | ++subroutine f(x, y) | ||
| 1160 | ++ integer, pointer :: x(:) | ||
| 1161 | ++ integer, pointer :: y | ||
| 1162 | ++ integer :: l | ||
| 1163 | ++ integer :: k | ||
| 1164 | ++ integer :: m | ||
| 1165 | ++ integer :: a | ||
| 1166 | ++ l = x(1) | ||
| 1167 | ++ k = y | ||
| 1168 | ++ m = 512 * k | ||
| 1169 | ++ a = 512 + l | ||
| 1170 | ++ !$omp parallel do firstprivate(x, m, l, a) | ||
| 1171 | ++ do i = 1, 512 | ||
| 1172 | ++ x(i) = m + a * l * i | ||
| 1173 | ++ end do | ||
| 1174 | ++ !$omp end parallel do | ||
| 1175 | ++end | ||
| 1176 | ++ | ||
| 1177 | ++program main | ||
| 1178 | ++ use omp_lib | ||
| 1179 | ++ interface | ||
| 1180 | ++ subroutine f(x, y) | ||
| 1181 | ++ integer, pointer :: x(:) | ||
| 1182 | ++ integer, pointer :: y | ||
| 1183 | ++ end subroutine | ||
| 1184 | ++ end interface | ||
| 1185 | ++ real(kind = 8) :: starttime, endtime, time | ||
| 1186 | ++ integer, target :: a(512) | ||
| 1187 | ++ integer, target :: b = 1 | ||
| 1188 | ++ integer, pointer :: ap(:) | ||
| 1189 | ++ integer, pointer :: bp | ||
| 1190 | ++ do i = 1, 512 | ||
| 1191 | ++ a(i) = i | ||
| 1192 | ++ end do | ||
| 1193 | ++ ap => a | ||
| 1194 | ++ bp => b | ||
| 1195 | ++ starttime = omp_get_wtime() | ||
| 1196 | ++ do i = 1, 1000 | ||
| 1197 | ++ call f(ap, bp) | ||
| 1198 | ++ end do | ||
| 1199 | ++ endtime = omp_get_wtime() | ||
| 1200 | ++ time = endtime - starttime | ||
| 1201 | ++print *, time | ||
| 1202 | ++end program main | ||
| 1203 | ++ | ||
| 1204 | ++! Reference | ||
| 1205 | ++! Doerfert, J., Finkel, H. (2018). Compiler Optimizations for OpenMP. | ||
| 1206 | ++! In: de Supinski, B., Valero-Lara, P., Martorell, X., Mateo Bellido S. | ||
| 1207 | ++! , Labarta, J. (eds) Evolving OpenMP for Evolving Architectures. | ||
| 1208 | ++! IWOMP 2018. Lecture Notes in Computer Science(), vol 11128. Springer, | ||
| 1209 | ++! Cham. https://doi.org/10.1007/978-3-319-98521-3_8 | ||
| 1210 | + | ||
| 593 | diff --git a/test/openmp_optimization/readme.md b/test/openmp_optimization/readme.md | 1211 | diff --git a/test/openmp_optimization/readme.md b/test/openmp_optimization/readme.md |
| 594 | new file mode 100644 | 1212 | new file mode 100644 |
| 595 | -index 0000000..e12c628 | 1213 | +index 0000000..e8cf656 |
| 596 | --- /dev/null | 1214 | --- /dev/null |
| 597 | +++ b/test/openmp_optimization/readme.md | 1215 | +++ b/test/openmp_optimization/readme.md |
| 598 | -@@ -0,0 +1,35 @@ | 1216 | +@@ -0,0 +1,71 @@ |
| 599 | +These files are designed to test how OpenMP programs can be optimized. | 1217 | +These files are designed to test how OpenMP programs can be optimized. |
| 600 | +This folder has two types of test file, one is unoptimized, the other | 1218 | +This folder has two types of test file, one is unoptimized, the other |
| 601 | +one is optimized. | 1219 | +one is optimized. |
| @@ -604,17 +1222,45 @@ index 0000000..e12c628 | |||
| 604 | +3.20GHz, 512GB RAM, X86 | 1222 | +3.20GHz, 512GB RAM, X86 |
| 605 | +OMP_NUM_THREADS=8 | 1223 | +OMP_NUM_THREADS=8 |
| 606 | + | 1224 | + |
| 607 | -+test every case 10 times | 1225 | ++test every case 10 times with flang-new |
| 608 | + unoptimized optimized | 1226 | + unoptimized optimized |
| 609 | -+test001: 0.771 0.395 | 1227 | ++test001: 1.424 0.660 |
| 610 | -+test002: 0.270 0.153 | 1228 | ++test002: 0.636 0.442 |
| 611 | +test003: Unable to optimize with hand-written code | 1229 | +test003: Unable to optimize with hand-written code |
| 612 | -+test004: 0.571 0.201 | 1230 | ++test004: 1.021 0.568 |
| 613 | -+test005: 0.524 0.199 | 1231 | ++test005: 0.992 0.572 |
| 614 | +test006: Unable to optimize with hand-written code | 1232 | +test006: Unable to optimize with hand-written code |
| 615 | -+test007: 1.808 0.614 | 1233 | ++test007: 3.682 0.960 |
| 616 | -+test008: 6.265E-03 1.313E-04 | 1234 | ++test008: 0.0185 0.000089 |
| 617 | -+test009: 0.798 0.466 | 1235 | ++test009: 1.428 0.820 |
| 1236 | ++test010: 1.886 0.604 | ||
| 1237 | ++test011: 2.468 1.758 | ||
| 1238 | ++test012: 0.0986 0.0981 | ||
| 1239 | ++test013: 0.626 0.621 | ||
| 1240 | ++test014: 0.284 0.00102 | ||
| 1241 | ++test015: 0.463 0.907 | ||
| 1242 | ++test016: 3.903 0.713 | ||
| 1243 | ++test017: 0.0295 0.0221 //run by gfortran | ||
| 1244 | ++ | ||
| 1245 | ++test every case 10 times with flang | ||
| 1246 | ++ unoptimized optimized | ||
| 1247 | ++test001: 0.899 0.461 | ||
| 1248 | ++test002: 0.592 0.437 | ||
| 1249 | ++test003: Unable to optimize with hand-written code | ||
| 1250 | ++test004: 0.939 0.562 | ||
| 1251 | ++test005: 0.981 0.559 | ||
| 1252 | ++test006: Unable to optimize with hand-written code | ||
| 1253 | ++test007: 3.644 1.550 | ||
| 1254 | ++test008: 0.0146 0.0028 | ||
| 1255 | ++test009: 0.938 0.802 | ||
| 1256 | ++test010: 1.347 0.585 | ||
| 1257 | ++test011: 3.148 2.070 | ||
| 1258 | ++test012: 0.120 0.120 | ||
| 1259 | ++test013: 0.489 0.520 | ||
| 1260 | ++test014: 0.608 0.000495 | ||
| 1261 | ++test015: 0.392 1.812 | ||
| 1262 | ++test016: 2.822 0.593 | ||
| 1263 | ++test017: 0.0362 0.0254 | ||
| 618 | + | 1264 | + |
| 619 | +Reference | 1265 | +Reference |
| 620 | +[1] Müller, Matthias S.. "Some Simple OpenMP Optimization Techniques." | 1266 | +[1] Müller, Matthias S.. "Some Simple OpenMP Optimization Techniques." |
| @@ -631,13 +1277,21 @@ index 0000000..e12c628 | |||
| 631 | +Engineering, Artificial Intelligences, Networking and | 1277 | +Engineering, Artificial Intelligences, Networking and |
| 632 | +Parallel/Distributed Computing, 2009, pp. 495-500, doi: | 1278 | +Parallel/Distributed Computing, 2009, pp. 495-500, doi: |
| 633 | +10.1109/SNPD.2009.16. | 1279 | +10.1109/SNPD.2009.16. |
| 1280 | ++ | ||
| 1281 | ++[4] 刘京,郑启龙,李彭勇,郭连伟.面向Open64的OpenMP程序优化[J].计算机系统应用,2016,25(01):154-159. | ||
| 1282 | ++ | ||
| 1283 | ++[5] 游佐勇. OpenMP并行编程模型与性能优化方法的研究及应用[D].成都理工大学,2011. | ||
| 1284 | ++ | ||
| 1285 | ++[6] http://akira.ruc.dk/~keld/teaching/IPDC_f10/Slides/pdf4x/4_Performance.4x.pdf | ||
| 1286 | ++ | ||
| 1287 | ++[7] https://openmp.llvm.org/remarks/OptimizationRemarks.html | ||
| 634 | 1288 | ||
| 635 | -diff --git a/test/openmp_optimization/run.sh b/test/openmp_optimization/run.sh | 1289 | +diff --git a/test/openmp_optimization/run_flang-new.sh b/test/openmp_optimization/run_flang-new.sh |
| 636 | new file mode 100644 | 1290 | new file mode 100644 |
| 637 | -index 0000000..510f119 | 1291 | +index 0000000..1faa2e3 |
| 638 | --- /dev/null | 1292 | --- /dev/null |
| 639 | -+++ b/test/openmp_optimization/run.sh | 1293 | ++++ b/test/openmp_optimization/run_flang-new.sh |
| 640 | -@@ -0,0 +1,32 @@ | 1294 | +@@ -0,0 +1,67 @@ |
| 641 | +for i in {001..009} | 1295 | +for i in {001..009} |
| 642 | +do | 1296 | +do |
| 643 | +echo "------- test $i ------." | 1297 | +echo "------- test $i ------." |
| @@ -646,6 +1300,24 @@ index 0000000..510f119 | |||
| 646 | +./a.out | 1300 | +./a.out |
| 647 | +rm a.out | 1301 | +rm a.out |
| 648 | +done | 1302 | +done |
| 1303 | ++echo "------- test 10 ------." | ||
| 1304 | ++flang-new fortran_main010.f90 -c -o fortran-test.o -fopenmp | ||
| 1305 | ++flang-new fortran_func010.f90 -c -o fortran-test2.o | ||
| 1306 | ++flang-new fortran-test2.o fortran-test.o -fopenmp -O3 | ||
| 1307 | ++export OMP_NUM_THREADS=8 | ||
| 1308 | ++./a.out | ||
| 1309 | ++rm *.o | ||
| 1310 | ++rm a.out | ||
| 1311 | ++ | ||
| 1312 | ++for i in {011..017} | ||
| 1313 | ++do | ||
| 1314 | ++echo "------- test $i ------." | ||
| 1315 | ++flang-new fortran_main$i.f90 -fopenmp | ||
| 1316 | ++export OMP_NUM_THREADS=8 | ||
| 1317 | ++./a.out | ||
| 1318 | ++rm a.out | ||
| 1319 | ++done | ||
| 1320 | ++ | ||
| 649 | +for i in {001..002} | 1321 | +for i in {001..002} |
| 650 | +do | 1322 | +do |
| 651 | +echo "------- test $i ------." | 1323 | +echo "------- test $i ------." |
| @@ -670,6 +1342,97 @@ index 0000000..510f119 | |||
| 670 | +./a.out | 1342 | +./a.out |
| 671 | +rm a.out | 1343 | +rm a.out |
| 672 | +done | 1344 | +done |
| 1345 | ++echo "------- test 10 ------." | ||
| 1346 | ++flang-new optimized_main010.f90 -c -o fortran-test.o -fopenmp | ||
| 1347 | ++flang-new fortran_optimized_func010.f90 -c -o fortran-test2.o -fopenmp -O3 | ||
| 1348 | ++flang-new fortran-test2.o fortran-test.o -fopenmp -O3 | ||
| 1349 | ++export OMP_NUM_THREADS=8 | ||
| 1350 | ++./a.out | ||
| 1351 | ++rm *.o | ||
| 1352 | ++rm a.out | ||
| 1353 | ++ | ||
| 1354 | ++for i in {011..017} | ||
| 1355 | ++do | ||
| 1356 | ++echo "------- test $i ------." | ||
| 1357 | ++flang-new optimized_main$i.f90 -fopenmp | ||
| 1358 | ++export OMP_NUM_THREADS=8 | ||
| 1359 | ++./a.out | ||
| 1360 | ++rm a.out | ||
| 1361 | ++done | ||
| 1362 | + | ||
| 1363 | +diff --git a/test/openmp_optimization/run_flang.sh b/test/openmp_optimization/run_flang.sh | ||
| 1364 | +new file mode 100644 | ||
| 1365 | +index 0000000..9977b42 | ||
| 1366 | +--- /dev/null | ||
| 1367 | ++++ b/test/openmp_optimization/run_flang.sh | ||
| 1368 | + | ||
| 1369 | ++for i in {001..009} | ||
| 1370 | ++do | ||
| 1371 | ++echo "------- test $i ------." | ||
| 1372 | ++flang fortran_main$i.f90 -fopenmp | ||
| 1373 | ++export OMP_NUM_THREADS=8 | ||
| 1374 | ++./a.out | ||
| 1375 | ++rm a.out | ||
| 1376 | ++done | ||
| 1377 | ++echo "------- test 10 ------." | ||
| 1378 | ++flang fortran_main010.f90 -c -o fortran-test.o -fopenmp | ||
| 1379 | ++flang fortran_func010.f90 -c -o fortran-test2.o | ||
| 1380 | ++flang fortran-test2.o fortran-test.o -fopenmp -O3 | ||
| 1381 | ++export OMP_NUM_THREADS=8 | ||
| 1382 | ++./a.out | ||
| 1383 | ++rm *.o | ||
| 1384 | ++rm a.out | ||
| 1385 | ++ | ||
| 1386 | ++for i in {011..017} | ||
| 1387 | ++do | ||
| 1388 | ++echo "------- test $i ------." | ||
| 1389 | ++flang fortran_main$i.f90 -fopenmp | ||
| 1390 | ++export OMP_NUM_THREADS=8 | ||
| 1391 | ++./a.out | ||
| 1392 | ++rm a.out | ||
| 1393 | ++done | ||
| 1394 | ++ | ||
| 1395 | ++for i in {001..002} | ||
| 1396 | ++do | ||
| 1397 | ++echo "------- test $i ------." | ||
| 1398 | ++flang optimized_main$i.f90 -fopenmp | ||
| 1399 | ++export OMP_NUM_THREADS=8 | ||
| 1400 | ++./a.out | ||
| 1401 | ++rm a.out | ||
| 1402 | ++done | ||
| 1403 | ++for i in {004..005} | ||
| 1404 | ++do | ||
| 1405 | ++echo "------- test $i ------." | ||
| 1406 | ++flang optimized_main$i.f90 -fopenmp | ||
| 1407 | ++export OMP_NUM_THREADS=8 | ||
| 1408 | ++./a.out | ||
| 1409 | ++rm a.out | ||
| 1410 | ++done | ||
| 1411 | ++for i in {007..009} | ||
| 1412 | ++do | ||
| 1413 | ++echo "------- test $i ------." | ||
| 1414 | ++flang optimized_main$i.f90 -fopenmp | ||
| 1415 | ++export OMP_NUM_THREADS=8 | ||
| 1416 | ++./a.out | ||
| 1417 | ++rm a.out | ||
| 1418 | ++done | ||
| 1419 | ++echo "------- test 10 ------." | ||
| 1420 | ++flang optimized_main010.f90 -c -o fortran-test.o -fopenmp | ||
| 1421 | ++flang fortran_optimized_func010.f90 -c -o fortran-test2.o -fopenmp -O3 | ||
| 1422 | ++flang fortran-test2.o fortran-test.o -fopenmp -O3 | ||
| 1423 | ++export OMP_NUM_THREADS=8 | ||
| 1424 | ++./a.out | ||
| 1425 | ++rm *.o | ||
| 1426 | ++rm a.out | ||
| 1427 | ++ | ||
| 1428 | ++for i in {011..017} | ||
| 1429 | ++do | ||
| 1430 | ++echo "------- test $i ------." | ||
| 1431 | ++flang optimized_main$i.f90 -fopenmp | ||
| 1432 | ++export OMP_NUM_THREADS=8 | ||
| 1433 | ++./a.out | ||
| 1434 | ++rm a.out | ||
| 1435 | ++done | ||
| 673 | 1436 | ||
| 674 | -- | 1437 | -- |
| 675 | 2.25.1 | 1438 | 2.25.1 |
| @@ -2,7 +2,7 @@ | |||
| 2 | 2 | ||
| 3 | Name: flang | 3 | Name: flang |
| 4 | Version: flang_20210324 | 4 | Version: flang_20210324 |
| 5 | -Release: 12 | 5 | +Release: 13 |
| 6 | Summary: Fortran language compiler targeting LLVM | 6 | Summary: Fortran language compiler targeting LLVM |
| 7 | 7 | ||
| 8 | License: Apache-2.0 | 8 | License: Apache-2.0 |
| @@ -39,6 +39,9 @@ TODO: support build Flang. | |||
| 39 | 39 | ||
| 40 | 40 | ||
| 41 | %changelog | 41 | %changelog |
| 42 | +* Fri Nov 4 2022 xieyihui <yihui@isrc.iscas.ac.cn> - flang_20210324-13 | ||
| 43 | +- Fix 4-add-test-cases-for-openmp-optimization.patch for add new test cases for OpenMP optimization | ||
| 44 | + | ||
| 42 | * Thu Oct 27 2022 wangzhewei <zhewei@isrc.iscas.ac.cn> - flang_20210324-12 | 45 | * Thu Oct 27 2022 wangzhewei <zhewei@isrc.iscas.ac.cn> - flang_20210324-12 |
| 43 | - Add patch for add test cases for attribute declarations and specifications | 46 | - Add patch for add test cases for attribute declarations and specifications |
| 44 | 47 | ||