1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753
|
///
/// Copyright (c) 2017-2024 Arm Limited.
///
/// SPDX-License-Identifier: MIT
///
/// Permission is hereby granted, free of charge, to any person obtaining a copy
/// of this software and associated documentation files (the "Software"), to
/// deal in the Software without restriction, including without limitation the
/// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
/// sell copies of the Software, and to permit persons to whom the Software is
/// furnished to do so, subject to the following conditions:
///
/// The above copyright notice and this permission notice shall be included in all
/// copies or substantial portions of the Software.
///
/// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
/// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
/// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
/// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
/// SOFTWARE.
///
namespace arm_compute
{
/** @page versions_changelogs Release Versions and Changelog
@tableofcontents
@section S2_1_versions Release versions
All releases are numbered vYY.MM Where YY are the last two digits of the year, and MM the month number.
If there is more than one release in a month then an extra sequential number is appended at the end:
v17.03 (First release of March 2017)
v17.03.1 (Second release of March 2017)
v17.04 (First release of April 2017)
@note We're aiming at releasing one major public release with new features per quarter. All releases in between will only contain bug fixes.
@note Starting from release 22.05, 'master' branch is no longer being used, it has been replaced by 'main'. Please update your clone jobs accordingly.
@section S2_2_changelog Changelog
v24.08 Public major release
- Expose CpuAdd functionality using the experimental operators api
- Expose CpuDepthwiseConv2d functionality using the experimental operators api
- Expose CpuElementwiseDivision functionality using the experimental operators api
- Expose CpuElementwiseMax functionality using the experimental operators api
- Expose CpuElementwiseMin functionality using the experimental operators api
- Expose CpuGemmAssemblyDispatch functionality using the experimental operators low-level api
- Expose CpuMul functionality using the experimental operators api
- Expose CpuSub functionality using the experimental operators api
v24.07 Public major release
- Expose CpuActivation functionality using the experimental operators api
- Expose CpuGemm functionality using the experimental operators api
- Expose CpuGemmConv2d functionality using the experimental operators api
- Expose CpuGemmDirectConv2d functionality using the experimental operators api
- Expose CpuTranspose functionality using the experimental operators api
- Expose CpuWinogradConv2d functionality using the experimental operators api
- Optimize CPU operator memory management.
- Add support for mixed sign quantized convolution.
- Add support for mixed sign dequantized GEMM.
- Add SME FP32 kernel for logistic activation function
- Add SME FP16 GEMV kernel.
- Change SME vector length function to use RDSVL instead of static variable.
- Remove unused "get_default_activation_values" functions.
- Add SVE fixed format interleaved BF16 DOT kernel.
- Updates and optimizations to assembly kernels.
- Add Optimized SME kernel for QASYMM8_SIGNED elementwise multiplication operation
v24.06 Public minor release
- Enable FP16 in multiple Neon™ kernels for multi_isa + v8a
- Fix OpenMP® thread scheduling for large machine
- Optimize CPU activation functions using LUT-based implementation:
- Tanh function for FP16.
v24.05 Public major release
- Add @ref CLScatter operator for FP32/16, S32/16/8, U32/16/8 data types
- Various fixes to enable FP16 kernels in armv8a multi_isa builds.
- Updated logic in the OpenMP scheduler to exclude LITTLE cores.
v24.04 Public major release
- Add Bfloat16 data type support for @ref NEMatMul.
- Add support for SoftMax in SME2 for FP32, FP16, QASYMM8 and QASYMM8_SIGNED.
- Add support for in place accumulation to CPU GEMM kernels.
- Add low-precision Int8 * Int8 -> FP32 CPU GEMM which dequantizes after multiplication
- Add is_dynamic flag to QuantizationInfo to signal to operators that it may change after configuration
- Performance optimizations:
- Optimize start-up time of @ref NEConvolutionLayer for some input configurations where GeMM is selected as the convolution algorithm
- Optimize @ref NEConvolutionLayer for input tensor size > 1e7 bytes and weight tensor height > 7
- Optimize @ref NESoftmaxLayer for axis != 0 by natively supporting higher axes up to axis 3.
v24.02.1 Public patch release
- Fix performance regression in fixed-format kernels
- Fix compile and runtime errors in arm_compute_validation for Windows on Arm(WoA)
v24.02 Public major release
- Replace template writer with compute kernel writer in dynamic fusion.
- Performance optimizations:
- Parallelize @ref NEDepthwiseConvolutionLayer over batches if there is only 1 row
v24.01 Public major release
- Remove the legacy 'libarm_compute_core' library. This library is an artifact of Compute Library's legacy library architecture and no longer serves any purpose.
You should link only to the main `libarm_compute` library for core functionality.
- Expand GPUTarget list with Mali™ G720 and G620.
- Optimize CPU activation functions using LUT-based implementation:
- Sigmoid function for FP16.
- New features
- Add support for FP16 in all multi_isa builds.
- Performance optimizations:
- Optimize @ref NESoftmaxLayer
- Optimize @ref NEDepthToSpaceLayer.
v23.11 Public major release
- New features
- Add support for input data type U64/S64 in CLCast and NECast.
- Add support for output data type S64 in NEArgMinMaxLayer and CLArgMinMaxLayer
- Port the following kernels in the experimental Dynamic Fusion interface to use the new Compute Kernel Writer interface:
- experimental::dynamic_fusion::GpuCkwResize
- experimental::dynamic_fusion::GpuCkwPool2d
- experimental::dynamic_fusion::GpuCkwDepthwiseConv2d
- experimental::dynamic_fusion::GpuCkwMatMul
- Add support for OpenCL™ comand buffer with mutable dispatch extension.
- Add support for Arm® Cortex®-A520 and Arm® Cortex®-R82.
- Add support for negative axis values and inverted axis values in @ref arm_compute::NEReverse and @ref arm_compute::CLReverse.
- Add new OpenCL™ kernels:
- opencl::kernels::ClMatMulLowpNativeMMULKernel support for QASYMM8 and QASYMM8_SIGNED, with batch support
- Performance optimizations:
- Optimize cpu::CpuReshape
- Optimize opencl::ClTranspose
- Optimize @ref NEStackLayer
- Optimize @ref CLReductionOperation.
- Optimize @ref CLSoftmaxLayer.
- Optimize start-up time of @ref NEConvolutionLayer for some input configurations where GeMM is selected as the convolution algorithm
- Reduce CPU Overhead by optimal flushing of CL kernels.
- Deprecate support for Bfloat16 in cpu::CpuCast.
- Support for U32 axis in @ref arm_compute::NEReverse and @ref arm_compute::CLReverse will be deprecated in 24.02.
- Remove legacy PostOps interface. PostOps was the experimental interface for kernel fusion and is replaced by the new Dynamic Fusion interface.
- Update OpenCL™ API headers to v2023.04.17
v23.08 Public major release
- Deprecate the legacy 'libarm_compute_core' library. This library is an artifact of Compute Library's legacy library architecture and no longer serves any purpose.
Users must no longer link their applications to this library and instead link only to the main `libarm_compute` library for core functionality.
- New features
- Rewrite CLArgMinMaxLayer for axis 0 and enable S64 output.
- Add multi-sketch support for dynamic fusion.
- Break up arm_compute/core/Types.h and utils/Utils.h a bit to reduce unused code in each inclusion of these headers.
- Add Fused Activation to CLMatMul.
- Implement FP32/FP16 opencl::kernels::ClMatMulNativeMMULKernel using the MMUL extension.
- Use MatMul in fully connected layer with dynamic weights when supported.
- Optimize CPU depthwise convolution with channel multiplier.
- Add support in CpuCastKernel for conversion of S64/U64 to F32.
- Add new OpenCL™ kernels:
- opencl::kernels::ClMatMulNativeMMULKernel support for FP32 and FP16, with batch support
- Enable transposed convolution with non-square kernels on CPU and GPU.
- Add support for input data type U64/S64 in CLCast.
- Add new Compute Kernel Writer (CKW) subproject that offers a C++ interface to generate tile-based OpenCL code in just-in-time fashion.
- Port the following kernels in the experimental Dynamic Fusion interface to use the new Compute Kernel Writer interface with support for FP16/FP32 only:
- experimental::dynamic_fusion::GpuCkwActivation
- experimental::dynamic_fusion::GpuCkwCast
- experimental::dynamic_fusion::GpuCkwDirectConv2d
- experimental::dynamic_fusion::GpuCkwElementwiseBinary
- experimental::dynamic_fusion::GpuCkwStore
- Various optimizations and bug fixes.
v23.05.1 Public patch release
- Enable CMake and Bazel option to build multi_isa without FP16 support.
- Fix compilation error in NEReorderLayer (aarch64 only).
- Disable invalid (false-negative) validation test with CPU scale layer on FP16.
- Various bug fixes
v23.05 Public major release
- New features:
- Add new Arm® Neon™ kernels / functions:
- @ref NEMatMul for QASYMM8, QASYMM8_SIGNED, FP32 and FP16, with batch support.
- NEReorderLayer (aarch64 only)
- Add new OpenCL™ kernels / functions:
- @ref CLMatMul support for QASYMM8, QASYMM8_SIGNED, FP32 and FP16, with batch support.
- Add support for the multiple dimensions in the indices parameter for both the Arm® Neon™ and OpenCL™ implementations of the Gather Layer.
- Add support for dynamic weights in @ref CLFullyConnectedLayer and @ref NEFullyConnectedLayer for all data types.
- Add support for cropping in the Arm® Neon™ and OpenCL™: implementations of the BatchToSpace Layer for all data types.
- Add support for quantized data types for the ElementwiseUnary Operators for Arm® Neon™.
- Implement RSQRT for quantized data types on OpenCL™.
- Add FP16 depthwise convolution kernels for SME2.
- Performance optimizations:
- Improve CLTuner exhaustive mode tuning time.
- Deprecate dynamic block shape in @ref NEBatchToSpaceLayer and @ref CLBatchToSpaceLayer.
- Various optimizations and bug fixes.
v23.02.1 Public patch release
- Allow mismatching data layouts between the source tensor and weights for cpu::CpuGemmDirectConv2d CpuGemmDirectConv2d with fixed format kernels.
- Fixes for experimental CPU only Bazel and CMake builds.
v23.02 Public major release
- New features:
- Rework the experimental dynamic fusion interface by identifying auxiliary and intermediate tensors, and specifying an explicit output operator.
- Add the following operators to the experimental dynamic fusion API:
- GpuAdd, GpuCast, GpuClamp, GpuDepthwiseConv2d, GpuMul, GpuOutput, GpuPool2d, GpuReshape, GpuResize, GpuSoftmax, GpuSub.
- Add SME/SME2 kernels for GeMM, Winograd convolution, Depthwise convolution and Pooling.
- Add new CPU operator AddMulAdd for float and quantized types.
- Add new flag @ref ITensorInfo::lock_paddings() to tensors to prevent extending tensor paddings.
- Add experimental support for CPU only Bazel and CMake builds.
- Performance optimizations:
- Optimize CPU base-e exponential functions for FP32.
- Optimize CPU StridedSlice by copying first dimension elements in bulk where possible.
- Optimize CPU quantized Subtraction by reusing the quantized Addition kernel.
- Optimize CPU ReduceMean by removing quantization steps and performing the operation in integer domain.
- Optimize GPU Scale and Dynamic Fusion GpuResize by removing quantization steps and performing the operation in integer domain.
- Update the heuristic for CLDepthwiseConvolutionNative kernel.
- Add new optimized OpenCL kernel to compute indirect convolution:
- opencl::kernels::ClIndirectConv2dKernel ClIndirectConv2dKernel
- Add new optimized OpenCL kernel to compute transposed convolution:
- opencl::kernels::ClTransposedConvolutionKernel ClTransposedConvolutionKernel
- Update recommended/minimum NDK version to r20b.
- Various optimizations and bug fixes.
v22.11 Public major release
- New features:
- Add new experimental dynamic fusion API.
- Add CPU batch matrix multiplication with adj_x = false and adj_y = false for FP32.
- Add CPU MeanStdDevNorm for QASYMM8.
- Add CPU and GPU GELU activation function for FP32 and FP16.
- Add CPU swish activation function for FP32 and FP16.
- Performance optimizations:
- Optimize CPU bilinear scale for FP32, FP16, QASYMM8, QASYMM8_SIGNED, U8 and S8.
- Optimize CPU activation functions using LUT-based implementation:
- Sigmoid function for QASYMM8 and QASYMM8_SIGNED.
- Hard swish function for QASYMM8_SIGNED.
- Optimize CPU addition for QASYMM8 and QASYMM8_SIGNED using fixed-point arithmetic.
- Optimize CPU multiplication, subtraction and activation layers by considering tensors as 1D.
- Optimize GPU depthwise convolution kernel and heuristic.
- Optimize GPU Conv2d heuristic.
- Optimize CPU MeanStdDevNorm for FP16.
- Optimize CPU tanh activation function for FP16 using rational approximation.
- Improve GPU GeMMLowp start-up time.
- Various optimizations and bug fixes.
v22.08 Public major release
- Various bug fixes.
- Disable unsafe FP optimizations causing accuracy issues in:
- opencl::kernels::ClDirectConv2dKernel ClDirectConv2dKernel
- opencl::kernels::ClDirectConv2dKernel ClDirectConv3dKernel
- CLDepthwiseConvolutionLayerNativeKernel
- Add Dynamic Fusion of Elementwise Operators: Div, Floor, Add.
- Optimize the gemm_reshaped_rhs_nly_nt OpenCL kernel using the arm_matrix_multiply extension available for Arm® Mali™-G715 and Arm® Mali™-G615.
- Add support for the arm_matrix_multiply extension in the gemmlowp_mm_reshaped_only_rhs_t OpenCL kernel.
- Expand GPUTarget list with missing Mali™ GPUs product names: G57, G68, G78AE, G610, G510, G310.
- Extend the direct convolution 2d interface to configure the block size.
- Update ClConv2D heuristic to use direct convolution.
- Use official Khronos® OpenCL extensions:
- Add cl_khr_integer_dot_product extension support.
- Add support of OpenCL 3.0 non-uniform workgroup.
- Cpu performance optimizations:
- Add LUT-based implementation of Hard Swish and Leaky ReLU activation function for aarch64 build.
- Optimize Add layer by considering the input tensors as 1D array.
- Add fixed-format BF16, FP16 and FP32 Neon™ GEMM kernels to support variable weights.
- Add new winograd convolution kernels implementation and update the ACL arm_compute::cpu::CpuWinogradConv2d CpuWinogradConv2d operator.
- Add experimental support for native builds for Windows® on Arm™.
- Build flag interpretation change: arch=armv8.6-a now translates to -march=armv8.6-a CXX flag instead of march=armv8.2-a + explicit selection of feature extensions.
- Build flag change: toolchain_prefix, compiler_prefix:
- Use empty string "" to suppress any prefixes.
- Use "auto" to use default (auto) prefixes chosen by the build script. This is the default behavior when unspecified.
- Any other string will be used as custom prefixes to the compiler and the rest of toolchain tools.
- The default behaviour when prefix is unspecified does not change, but its signifier has been changed from empty string "" to "auto".
- armv7a with Android build will no longer be tested or maintained.
v22.05 Public major release
- Various bug fixes.
- Various optimizations.
- Add support for NDK r23b.
- Inclusive language adjustment. Please refer to @ref S5_0_inc_lang for details.
- New Arm® Neon™ kernels / functions :
- opencl::kernels::ClPool3dKernel ClPool3dKernel
- New OpenCL kernels / functions :
- cpu::kernels::CpuPool3dKernel CpuPool3dKernel
- Improve the start-up times for the following OpenCL kernels:
- opencl::kernels::ClWinogradInputTransformKernel ClWinogradInputTransformKernel
- opencl::kernels::ClWinogradOutputTransformKernel ClWinogradOutputTransformKernel
- opencl::kernels::ClWinogradFilterTransformKernel ClWinogradFilterTransformKernel
- opencl::kernels::ClHeightConcatenateKernel ClHeightConcatenateKernel
- Decouple the implementation of the following Cpu kernels into various data types (fp32, fp16, int):
- cpu::kernels::CpuDirectConv2dKernel CpuDirectConv2dKernel
- cpu::kernels::CpuDepthwiseConv2dNativeKernel CpuDepthwiseConv2dNativeKernel
- cpu::kernels::CpuGemmMatrixAdditionKernel CpuGemmMatrixAdditionKernel
- cpu::kernels::CpuGemmMatrixMultiplyKernel CpuGemmMatrixMultiplyKernel
- NEFuseBatchNormalizationKernel
- NEL2NormalizeLayerKernel
v22.02 Public major release
- Various bug fixes.
- Various optimizations.
- Update A510 arm_gemm cpu Kernels.
- Inclusive language adjustment. Please refer to @ref S5_0_inc_lang for details.
- Improve the start-up time for the following OpenCL kernels:
- @ref CLScale
- @ref CLGEMM
- @ref CLDepthwiseConvolutionLayer
- opencl::kernels::ClIm2ColKernel ClIm2ColKernel
- opencl::kernels::ClDirectConv2dKernel ClDirectConv2dKernel
- Remove functions:
- CLRemap
- NERemap
- Remove padding from OpenCL kernels:
- opencl::kernels::ClDirectConv2dKernel ClDirectConv2dKernel
- Remove padding from Cpu kernels:
- cpu::kernels::CpuDirectConv2dKernel CpuDirectConv2dKernel
- Decouple the implementation of the following Cpu kernels into various data types (fp32, fp16, int):
- cpu::kernels::CpuActivationKernel CpuActivationKernel
- cpu::kernels::CpuAddKernel CpuAddKernel
- cpu::kernels::CpuElementwiseKernel CpuElementwiseKernel
- cpu::CpuSoftmaxGeneric CpuSoftmaxKernel
- NEBoundingBoxTransformKernel
- NECropKernel
- NEComputeAllAnchorsKernel
- NEInstanceNormalizationLayerKernel
- NEMaxUnpoolingLayerKernel
- NEMeanStdDevNormalizationKernel
- NERangeKernel
- NEROIAlignLayerKernel
- NESelectKernel
v21.11 Public major release
- Various bug fixes.
- Various optimizations:
- Improve performance of bilinear and nearest neighbor Scale on both CPU and GPU for FP32, FP16, Int8, Uint8 data types
- Improve performance of Softmax on GPU for Uint8/Int8
- New OpenCL kernels / functions:
- @ref CLConv3D
- New Arm® Neon™ kernels / functions:
- @ref NEConv3D
- Support configurable build by a selected subset of operator list
- Support MobileBert on Neon™ backend
- Improve operator/function logging
- Remove padding from OpenCL kernels:
- ClPool2dKernel
- ClScaleKernel
- ClGemmMatrixMultiplyReshapedKernel
- Remove padding from Cpu kernels:
- CpuPool2dKernel
- Remove Y padding from OpenCL kernels:
- ClGemmMatrixMultiplyKernel
- ClGemmReshapedRHSMatrixKernel
- Remove legacy GeMM kernels in gemm_v1.cl
v21.08 Public major release
- Various bug fixes.
- Various optimizations:
- Improve LWS (Local-Workgroup-Size) heuristic in OpenCL for GeMM, Direct Convolution and Winograd Transformations when OpenCL tuner is not used
- Improve QASYMM8/QSYMM8 performance on OpenCL for various Arm® Mali™ GPU architectures
- Add dynamic weights support in Fully connected layer (CPU/GPU)
- Various performance optimizations for floating-point data types (CPU/GPU)
- Add a reduced core library build arm_compute_core_v2
- Expose Operator API
- Support fat binary build for arm8.2-a via fat_binary build flag
- Add CPU discovery capabilities
- Add data type f16 support for:
- CLRemapKernel
- Port the following functions to stateless API:
- @ref CLConvolutionLayer
- @ref CLFlattenLayer
- @ref CLFullyConnectedLayer
- @ref CLGEMM
- @ref CLGEMMConvolutionLayer
- @ref CLGEMMLowpMatrixMultiplyCore
- @ref CLWinogradConvolutionLayer
- @ref NEConvolutionLayer
- @ref NEFlattenLayer
- @ref NEFullyConnectedLayer
- @ref NEGEMM
- @ref NEGEMMConv2d
- @ref NEGEMMConvolutionLayer
- @ref NEGEMMLowpMatrixMultiplyCore
- @ref NEWinogradConvolutionLayer
- Remove the following functions:
- CLWinogradInputTransform
- Remove CLCoreRuntimeContext
- Remove ICPPSimpleKernel
- Rename file arm_compute/runtime/CL/functions/CLElementWiseUnaryLayer.h to arm_compute/runtime/CL/functions/CLElementwiseUnaryLayer.h
v21.05 Public major release
- Various bug fixes.
- Various optimisations.
- Various documentation updates:
- Add supported operators and corresponding Android NNAPI operators.
- Documentation reorg into user guide and contributor guide.
- Add support for a global allocator for OpenCL tensors
- Add experimental support for [CLVK](https://github.com/kpet/clvk).
- Add data type S32 support for:
- opencl::kernels::ClArithmeticKernel
- Add data type QASYMM8 support for:
- @ref CLROIPoolingLayer
- CLROIPoolingLayerKernel
- @ref NEROIPoolingLayer
- NEROIPoolingLayerKernel
- Add per-channel quantization support for:
- @ref CLDeconvolutionLayer
- @ref CLDirectDeconvolutionLayer
- @ref NEConvolutionLayer
- @ref NEDeconvolutionLayer
- Remove padding from OpenCL kernels:
- CLL2NormalizeLayerKernel
- CLDepthwiseConvolutionLayer3x3NHWCKernel
- CLNormalizationLayerKernel
- CLNormalizePlanarYUVLayerKernel
- opencl::kernels::ClMulKernel
- CLReductionOperationKernel
- CLROIPoolingLayerKernel
- Remove computer vision support from Arm® Neon™ backend
- Remove the following functions:
- NEAbsoluteDifference
- NEAccumulate
- NEBox3x3
- NECannyEdge
- NEChannelCombine
- NEChannelExtract
- NEColorConvert
- NEConvolution
- NEDerivative
- NEDilate
- NEEqualizeHistogram
- NEErode
- NEFastCorners
- NEGaussian3x3
- NEGaussian5x5
- NEGaussianPyramid
- NEHOGDescriptor
- NEHOGDetector
- NEHOGGradient
- NEHOGMultiDetection
- NEHarrisCorners
- NEHistogram
- NEIntegralImage
- NELaplacianPyramid
- NELaplacianReconstruct
- NEMagnitude
- NEMeanStdDev
- NEMedian3x3
- NEMinMaxLocation
- NENonLinearFilter
- NEOpticalFlow
- NEPhase
- NEScharr3x3
- NESobel3x3
- NESobel5x5
- NESobel7x7
- NETableLookup
- NEThreshold
- NEWarpAffine
- NEWarpPerspectiveKernel
- Remove all GLES kernels / functions / tests / examples
- Remove computer vision support from CL backend
- Remove the following functions:
- CLAbsoluteDifference
- CLAccumulate
- CLBox3x3
- CLCannyEdge
- CLChannelCombine
- CLChannelExtract
- CLColorConvert
- CLConvolution
- CLDerivative
- CLDilate
- CLEqualizeHistogram
- CLErode
- CLFastCorners
- CLGaussian3x3
- CLGaussian5x5
- CLGaussianPyramid
- CLHOGDescriptor
- CLHOGDetector
- CLHOGGradient
- CLHOGMultiDetection
- CLHarrisCorners
- CLHistogram
- CLIntegralImage
- CLLaplacianPyramid
- CLLaplacianReconstruct
- CLMagnitude
- CLMeanStdDev
- CLMedian3x3
- CLMinMaxLocation
- CLNonLinearFilter
- CLOpticalFlow
- CLPhase
- CLScharr3x3
- CLSobel3x3
- CLSobel5x5
- CLSobel7x7
- CLTableLookup
- CLThreshold
- CLWarpAffine
- CLWarpPerspective
v21.02 Public major release
- Various bug fixes.
- Various optimisations.
- Upgrade C++ standard to C++14
- Add macOS support
- Add Armv8-R AArch64 architecture support
- Add SVE/SVE2 support for:
- NEScaleKernel
- @ref NEActivationLayer
- @ref NEArithmeticAddition
- NEBatchNormalizationLayerKernel
- cpu::kernels::CpuLogits1DSoftmaxKernel
- cpu::kernels::CpuLogits1DMaxKernel
- cpu::kernels::CpuElementwiseUnaryKernel
- Remove padding from OpenCL kernels:
- CLDirectConvolutionLayerKernel
- CLArgMinMaxLayerKernel
- CLPadLayerKernel
- CLROIAlignLayerKernel
- CLRangeKernel
- CLScaleKernel
- CLSelectKernel
- CLBitwiseKernel
- opencl::kernels::ClFloorKernel
- CLTransposeKernel
- Deprecate functions in CLTuner:
- add_lws_to_table
- import_lws_table
- lws_table
- Remove functions:
- NELocallyConnectedLayer / CLLocallyConnectedLayer
- NEIm2Col
- NECol2Im
- NEGEMMInterleave4x4
- NEGEMMTranspose1xW
- NEComputeAllAnchors / CLComputeAllAnchors
- NEGEMMAssemblyDispatch
- NEUpsampleLayer / CLUpsampleLayer
- Remove kernels:
- NEGEMMMatrixVectorMultiplyKernel
- NELocallyConnectedMatrixMultiplyKernel / CLLocallyConnectedMatrixMultiplyKernel
- NEUpsampleLayerKernel / CLUpsampleLayerKernel
- Extend OpenCL tuner with workgroup batch size support
- Experimental extension for the OpenCL tuner to tune the batches of work groups distribute to compute units
- Add functionality to load the OpenCL GEMM heuristics at runtime
- The GEMM heuristic file (MLGO) can be used to update the default GEMM heuristics available for OpenCL
- Note: there might be performance regressions against v20.08 in Inception v3 using int8 data types on Arm Mali-G77 GPUs. Currently under investigation
- Note: data-type decoupling is in progress and experimental. Warning of unused symbols might be raised
v20.11 Public major release
- Various bug fixes.
- Various optimisations.
- Performance regressions can be noted when executing Depthwise Convolution on Arm® Neon™ with a depth multiplier > 1 for quantized data type.
This is planned to be resolved in 21.02 release.
- Added new data type QASYMM8_SIGNED support for @ref NEROIAlignLayer.
- Added new data type S32 support for:
- NEArithmeticSubtraction
- NEArithmeticSubtractionKernel
- @ref NEPixelWiseMultiplication
- NEPixelWiseMultiplicationKernel
- NEElementwiseDivision
- NEDivisionOperationKernel
- Interface change
- Properly support softmax axis to have the same meaning as other major frameworks. That is, axis now defines the dimension
on which Softmax/Logsoftmax is performed. E.g. for input of shape 4x5x6 and axis=1, softmax will be applied to 4x6=24 vectors of size 5.
The supported value range of axis is [-rank, rank).
This change applies to the following functions:
- @ref NESoftmaxLayer
- @ref NELogSoftmaxLayer
- @ref CLSoftmaxLayer
- @ref CLLogSoftmaxLayer
- GCSoftmaxLayer
- New OpenCL kernels / functions:
- CLGEMMLowpQuantizeDownInt32ScaleByFixedPointKernel
- @ref CLLogicalNot
- @ref CLLogicalAnd
- @ref CLLogicalOr
- New Arm® Neon™ kernels / functions:
- @ref NELogicalNot
- @ref NELogicalAnd
- @ref NELogicalOr
- Removed padding from Arm® Neon™ kernels:
- NEComplexPixelWiseMultiplicationKernel
- NENonMaximaSuppression3x3Kernel
- NERemapKernel
- NEGEMMInterleave4x4Kernel
- NEDirectConvolutionLayerKernel
- NEScaleKernel
- NELocallyConnectedMatrixMultiplyKernel
- NEGEMMLowpOffsetContributionKernel
- NEGEMMTranspose1xWKernel
- NEPoolingLayerKernel
- NEConvolutionKernel
- NEDepthwiseConvolutionLayerNativeKernel
- NEGEMMLowpMatrixMultiplyKernel
- NEGEMMMatrixMultiplyKernel
- NEDirectConvolutionLayerOutputStageKernel
- NEReductionOperationKernel
- NEGEMMLowpMatrixAReductionKernel
- NEGEMMLowpMatrixBReductionKernel
- Removed padding from OpenCL kernels:
- CLBatchConcatenateLayerKernel
- CLElementwiseOperationKernel
- CLBatchNormalizationLayerKernel
- CLPoolingLayerKernel
- CLWinogradInputTransformKernel
- CLGEMMLowpMatrixMultiplyNativeKernel
- CLGEMMLowpMatrixAReductionKernel
- CLGEMMLowpMatrixBReductionKernel
- CLGEMMLowpOffsetContributionOutputStageKernel
- CLGEMMLowpOffsetContributionKernel
- CLWinogradOutputTransformKernel
- CLGEMMLowpMatrixMultiplyReshapedKernel
- CLFuseBatchNormalizationKernel
- CLDepthwiseConvolutionLayerNativeKernel
- CLDepthConvertLayerKernel
- CLCopyKernel
- CLDepthwiseConvolutionLayer3x3NHWCKernel
- CLActivationLayerKernel
- CLWinogradFilterTransformKernel
- CLWidthConcatenateLayerKernel
- CLWidthConcatenate4TensorsKernel
- CLWidthConcatenate2TensorsKernel
- CLLogits1DMaxShiftExpSumKernel
- CLLogits1DNormKernel
- CLHeightConcatenateLayerKernel
- CLGEMMMatrixMultiplyKernel
- CLGEMMLowpQuantizeDownInt32ScaleKernel
- CLGEMMLowpQuantizeDownInt32ScaleByFloatKernel
- CLGEMMLowpMatrixMultiplyReshapedOnlyRHSKernel
- CLDepthConcatenateLayerKernel
- CLGEMMLowpQuantizeDownInt32ScaleByFixedPointKernel
- Removed OpenCL kernels / functions:
- CLGEMMLowpQuantizeDownInt32ToInt16ScaleByFixedPointKernel
- CLGEMMLowpQuantizeDownInt32ToInt8ScaleByFixedPointKernel
- CLGEMMLowpQuantizeDownInt32ToUint8ScaleByFixedPointKernel
- Deprecated OpenCL kernels / functions (If a kernel is used only by the function that is being deprecated, the kernel is deprecated together):
- CLLocallyConnectedLayer
- CLLocallyConnectedMatrixMultiplyKernel
- CLAbsoluteDifference
- CLAbsoluteDifferenceKernel
- CLAccumulate
- CLAccumulateKernel
- CLAccumulateSquared
- CLAccumulateSquaredKernel
- CLAccumulateWeighted
- CLAccumulateWeightedKernel
- CLAccumulateWeightedFP16Kernel
- CLBox3x3
- CLBox3x3Kernel
- CLBox3x3FP16Kernel
- CLCannyEdge
- CLChannelCombine
- CLChannelCombineKernel
- CLChannelExtract
- CLChannelExtractKernel
- CLColorConvert
- CLColorConvertKernel
- CLConvolution3x3
- CLConvolutionRectangle
- CLConvolutionRectangleKernel
- CLConvolutionSquare
- CLConvolutionKernel
- CLDerivative
- CLDerivativeKernel
- CLDilate
- CLDilateKernel
- CLEqualizeHistogram
- CLErode
- CLErodeKernel
- CLFastCorners
- CLFastCornersKernel
- CLGaussian3x3
- CLGaussian3x3Kernel
- CLGaussian5x5
- CLGaussian5x5HorKernel
- CLGaussian5x5VertKernel
- CLGaussianPyramid
- CLGaussianPyramidHalf
- CLGaussianPyramidOrb
- CLHarrisCorners
- CLHarrisScoreKernel
- CLHarrisScoreFP16Kernel
- CLHistogram
- CLHistogramKernel
- CLHOGOrientationBinningKernel
- CLHOGBlockNormalizationKernel
- CLHOGDetectorKernel
- CLHOGNonMaximaSuppressionKernel
- CLHOGDescriptor
- CLHOGDetector
- CLHOGGradient
- CLHOGMultiDetection
- CLHOGOrientationBinningKernel
- CLHOGBlockNormalizationKernel
- CLHOGDetectorKernel
- CLIntegralImage
- CLIntegralImageKernel
- CLLaplacianReconstruct
- CLLaplacianPyramid
- CLMagnitude
- CLMagnitudePhaseKernel
- CLMedian3x3
- CLMedian3x3Kernel
- CLMinMaxLocation
- CLMinMaxLocationKernel
- CLNonLinearFilter
- CLNonLinearFilterKernel
- CLNonMaximaSuppression3x3
- CLNonMaximaSuppression3x3FP16Kernel
- CLNonMaximaSuppression3x3Kernel
- CLOpticalFlow
- CLPhase
- CLRemap
- CLRemapKernel
- CLScharr3x3
- CLScharr3x3Kernel
- CLSobel3x3
- CLSobel3x3Kernel
- CLSobel5x5
- CLSobel5x5HorKernel
- CLSobel5x5VertKernel
- CLSobel7x7
- CLSobel7x7HorKernel
- CLSobel7x7VertKernel
- CLThreshold
- CLThresholdKernel
- CLWarpAffine
- CLWarpAffineKernel
- CLWarpPerspective
- CLWarpPerspectiveKernel
- Deprecated Arm® Neon™ kernels / functions (If a kernel is used only by the function that is being deprecated, the kernel is deprecated together):
- NELocallyConnectedLayer
- NELocallyConnectedMatrixMultiplyKernel
- NEAbsoluteDifference
- NEAbsoluteDifferenceKernel
- NEAccumulate
- NEAccumulateKernel
- NEAccumulateSquared
- NEAccumulateSquaredKernel
- NEAccumulateWeighted
- NEAccumulateWeightedKernel
- NEAccumulateWeightedFP16Kernel
- NEBox3x3
- NEBox3x3Kernel
- NEBox3x3FP16Kernel
- NECannyEdge
- NEChannelCombine
- NEChannelCombineKernel
- NEChannelExtract
- NEChannelExtractKernel
- NEColorConvert
- NEColorConvertKernel
- NEConvolution3x3
- NEConvolutionRectangle
- NEConvolutionRectangleKernel
- NEConvolutionSquare
- NEConvolutionKernel
- NEDerivative
- NEDerivativeKernel
- NEDilate
- NEDilateKernel
- NEEqualizeHistogram
- NEErode
- NEErodeKernel
- NEFastCorners
- NEFastCornersKernel
- NEGaussian3x3
- NEGaussian3x3Kernel
- NEGaussian5x5
- NEGaussian5x5HorKernel
- NEGaussian5x5VertKernel
- NEGaussianPyramid
- NEGaussianPyramidHalf
- NEGaussianPyramidOrb
- NEHarrisCorners
- NEHarrisScoreKernel
- NEHarrisScoreFP16Kernel
- NEHistogram
- NEHistogramKernel
- NEHOGOrientationBinningKernel
- NEHOGBlockNormalizationKernel
- NEHOGDetectorKernel
- NEHOGNonMaximaSuppressionKernel
- NEHOGDescriptor
- NEHOGDetector
- NEHOGGradient
- NEHOGMultiDetection
- NEHOGOrientationBinningKernel
- NEHOGBlockNormalizationKernel
- NEHOGDetectorKernel
- NEIntegralImage
- NEIntegralImageKernel
- NELaplacianReconstruct
- NELaplacianPyramid
- NEMagnitude
- NEMagnitudePhaseKernel
- NEMedian3x3
- NEMedian3x3Kernel
- NEMinMaxLocation
- NEMinMaxLocationKernel
- NENonLinearFilter
- NENonLinearFilterKernel
- NENonMaximaSuppression3x3
- NENonMaximaSuppression3x3FP16Kernel
- NENonMaximaSuppression3x3Kernel
- NEOpticalFlow
- NEPhase
- NERemap
- NERemapKernel
- NEScharr3x3
- NEScharr3x3Kernel
- NESobel3x3
- NESobel3x3Kernel
- NESobel5x5
- NESobel5x5HorKernel
- NESobel5x5VertKernel
- NESobel7x7
- NESobel7x7HorKernel
- NESobel7x7VertKernel
- NEThreshold
- NEThresholdKernel
- NEWarpAffine
- NEWarpAffineKernel
- NEWarpPerspective
- NEWarpPerspectiveKernel
- Deprecated GLES kernels / functions (If a kernel is used only by the function that is being deprecated, the kernel is deprecated together):
- GCAbsoluteDifference
- GCActivationLayer
- GCArithmeticAddition
- GCBatchNormalizationLayer
- GCConcatenateLayer
- GCConvolutionLayer
- GCDepthwiseConvolutionLayer
- GCDirectConvolutionLayer
- GCDropoutLayer
- GCFillBorder
- GCFullyConnectedLayer
- GCGEMM
- GCGEMMInterleave4x4
- GCGEMMTranspose1xW
- GCNormalizationLayer
- GCNormalizePlanarYUVLayer
- GCPixelWiseMultiplication
- GCPoolingLayer
- GCScale
- GCSoftmaxLayer
- GCTensorShift
- GCTranspose
v20.08 Public major release
- Various bug fixes.
- Various optimisations.
- Added new data type QASYMM8_SIGNED support for:
- @ref CLArgMinMaxLayer
- CLArgMinMaxLayerKernel
- Added new data type U8 support for:
- NECropKernel
- CLCropKernel
- Added align_corner support for nearest neighbor interpolation in:
- NEScaleKernel
- CLScaleKernel
- New OpenCL kernels / functions:
- CLMaxUnpoolingLayerKernel
- New Arm® Neon™ kernels / functions:
- NEMaxUnpoolingLayerKernel
- New graph example:
- graph_yolov3_output_detector
- GEMMTuner improvements:
- Added fp16 support
- Output json files for easier integration
- Enabled tuning for export_to_cl_image_rhs option for RHS tensors
- More robust script for running benchmarks
- Removed padding from:
- NEPixelWiseMultiplicationKernel
- NEHeightConcatenateLayerKernel
- NEThresholdKernel
- NEBatchConcatenateLayerKernel
- NETransposeKernel
- NEBatchNormalizationLayerKernel
- NEArithmeticSubtractionKernel
- NEBoundingBoxTransformKernel
- NELogits1DMaxKernel
- NELogits1DSoftmaxKernel
- NEROIPoolingLayerKernel
- NEROIAlignLayerKernel
- NEYOLOLayerKernel
- NEUpsampleLayerKernel
- NEFloorKernel
- NEWidthConcatenateLayerKernel
- NEDepthConcatenateLayerKernel
- NENormalizationLayerKernel
- NEL2NormalizeLayerKernel
- NEFillArrayKernel
- NEDepthConvertLayerKernel
- NERangeKernel
- @ref NEPriorBoxLayer
- Removed OpenCL kernels / functions:
- CLGEMMLowpQuantizeDownInt32ToUint8Scale
- CLGEMMLowpQuantizeDownInt32ToUint8ScaleByFloat
- Removed Arm® Neon™ kernels / functions:
- NEGEMMLowpQuantizeDownInt32ToUint8Scale
- NEGEMMMatrixAccumulateBiasesKernel
- Deprecated functions / interfaces:
- Non-descriptor based interfaces for NEThreshold, CLThreshold
- Non-descriptor based interfaces for @ref NEScale, @ref CLScale and GCScale
- In @ref NESoftmaxLayer, @ref NELogSoftmaxLayer, @ref CLSoftmaxLayer, @ref CLLogSoftmaxLayer and GCSoftmaxLayer :
The default "axis" value for @ref CLSoftmaxLayer, @ref CLLogSoftmaxLayer and GCSoftmaxLayer is changed from 1 to 0.
Only axis 0 is supported.
The default "axis" value for @ref NESoftmaxLayer, @ref NELogSoftmaxLayer is changed from 1 to 0.
Only axis 0 is supported.
- The support for quantized data types has been removed from @ref CLLogSoftmaxLayer due to implementation complexity.
- Removed padding requirement for the input (e.g. LHS of GEMM) and output in CLGEMMMatrixMultiplyNativeKernel, CLGEMMMatrixMultiplyReshapedKernel, CLGEMMMatrixMultiplyReshapedOnlyRHSKernel and CLIm2ColKernel (NHWC only)
- This change allows to use @ref CLGEMMConvolutionLayer without extra padding for the input and output.
- Only the weights/bias of @ref CLGEMMConvolutionLayer could require padding for the computation.
- Only on Arm® Mali™ Midgard GPUs, @ref CLGEMMConvolutionLayer could require padding since CLGEMMMatrixMultiplyKernel is called and currently requires padding.
- Added support for exporting the OpenCL buffer object to the OpenCL image object in CLGEMMMatrixMultiplyReshapedKernel and CLGEMMMatrixMultiplyReshapedOnlyRHSKernel.
- This support allows to export the OpenCL buffer used for the reshaped RHS matrix to the OpenCL image object.
- The padding requirement for the OpenCL image object is considered into the CLGEMMReshapeRHSMatrixKernel.
- The reshaped RHS matrix stores the weights when GEMM is used to accelerate CLGEMMConvolutionLayer.
v20.05 Public major release
- Various bug fixes.
- Various optimisations.
- Updated recommended NDK version to r18b.
- Updated recommended gcc version to Linaro 6.3.1.
- Added Bfloat16 type support
- Added Bfloat16 support in:
- NEWeightsReshapeKernel
- NEConvolutionLayerReshapeWeights
- NEIm2ColKernel
- NEIm2Col
- NEDepthConvertLayerKernel
- @ref NEDepthConvertLayer
- @ref NEGEMMConvolutionLayer
- NEGEMMAssemblyDispatch
- Added new data type QASYMM8_SIGNED support for:
- @ref CLDirectConvolutionLayer
- @ref CLDeconvolutionLayer
- @ref CLDirectDeconvolutionLayer
- @ref CLGEMMDeconvolutionLayer
- CLGEMMLowpMatrixMultiplyReshapedKernel
- CLGEMMLowpQuantizeDownInt32ScaleKernel
- CLGEMMLowpQuantizeDownInt32ScaleByFloatKernel
- @ref CLReductionOperation
- @ref CLReduceMean
- @ref NEScale
- NEScaleKernel
- NEUpsampleLayer
- @ref NECast
- @ref NEReductionOperation
- @ref NEReduceMean
- @ref NEArgMinMaxLayer
- @ref NEDeconvolutionLayer
- NEGEMMLowpQuantizeDownInt32ScaleKernel
- @ref CPPBoxWithNonMaximaSuppressionLimit
- @ref CPPDetectionPostProcessLayer
- @ref CPPPermuteKernel
- @ref CPPPermute
- @ref CPPTopKVKernel
- @ref CPPTopKV
- @ref CPPUpsample
- @ref CPPUpsampleKernel
- New OpenCL kernels / functions:
- @ref CLQLSTMLayer
- CLQLSTMLayerNormalizationKernel
- New Arm® Neon™ kernels / functions:
- @ref NEQLSTMLayer
- NEQLSTMLayerNormalizationKernel
- Added HARD_SWISH support in:
- CLActivationLayerKernel
- NEActivationLayerKernel
- Deprecated OpenCL kernels / functions:
- CLGEMMLowpQuantizeDownInt32ToUint8Scale
- CLGEMMLowpQuantizeDownInt32ToUint8ScaleByFloat
- Deprecated Arm® Neon™ kernels / functions:
- NEGEMMLowpQuantizeDownInt32ToUint8Scale
- Removed CPP kernels / functions:
- CPPFlipWeightsKernel
- Removed PoolingLayerInfo constructors without Data Layout.
- Removed CLDepthwiseConvolutionLayer3x3
- Removed NEDepthwiseConvolutionLayerOptimized
- Added support for Winograd 3x3,4x4 on Arm® Neon™ FP16:
- @ref NEWinogradConvolutionLayer
- CpuWinogradConv2dTransformInputKernel
- CpuWinogradConv2dTransformOutputKernel
- CpuWinogradConv2dTransformWeightsKernel
- Added CLCompileContext
- Added Arm® Neon™ GEMM kernel with 2D window support
v20.02.1 Maintenance release
- Added Android-NN build script.
v20.02 Public major release
- Various bug fixes.
- Various optimisations.
- Added new data type QASYMM8_SIGNED support for:
- @ref CLDepthwiseConvolutionLayer
- CLDepthwiseConvolutionLayer3x3
- @ref CLGEMMConvolutionLayer
- CLGEMMLowpMatrixMultiplyCore
- CLGEMMLowpMatrixMultiplyReshapedOnlyRHSKernel
- CLGEMMLowpMatrixMultiplyNativeKernel
- @ref NEActivationLayer
- NEComparisonOperationKernel
- @ref NEConvolutionLayer
- @ref NEDepthwiseConvolutionLayer
- NEDepthwiseConvolutionLayer3x3Kernel
- NEDirectConvolutionLayerOutputStageKernel
- @ref NEElementwiseComparison
- @ref NEElementwiseMax
- @ref NEElementwiseMin
- @ref NEElementwiseSquaredDiff
- @ref NEFullyConnectedLayer
- NEGEMMMatrixVectorMultiplyKernel
- @ref NEPixelWiseMultiplication
- @ref NEPoolingLayer
- @ref NEPReluLayer
- Added support for QSYMM8_PER_CHANNEL in:
- NEDepthwiseConvolutionLayer3x3Kernel
- Added support for split sizes in:
- @ref CLSplit
- @ref NESplit
- New OpenCL kernels / functions:
- @ref CLFill
- CLGEMMLowpQuantizeDownInt32ToInt8ScaleByFixedPointKernel / CLGEMMLowpQuantizeDownInt32ToInt8ScaleByFixedPoint
- New Arm® Neon™ kernels / functions:
- @ref NEFill
- NEGEMMLowpQuantizeDownInt32ToInt8ScaleByFixedPointKernel / NEGEMMLowpQuantizeDownInt32ToInt8ScaleByFixedPoint
- Deprecated Arm® Neon™ functions / interfaces:
- CLDepthwiseConvolutionLayer3x3
- NEDepthwiseConvolutionLayerOptimized
- PoolingLayerInfo constructors without Data Layout.
- Added support for quantization with multiplier greater than 1 on Arm® Neon™ and CL.
- Added support for quantized inputs of type QASYMM8_SIGNED and QASYMM8 to @ref CLQuantizationLayer.
- Added the ability to build bootcode for bare metal.
- Added support for generating synthetic QASYMM8 graphs.
- Added support for F16 datatype in VGG16.
- Removed pre-built binaries for GLES.
v19.11.1 Public maintenance release
- Fix offset calculation in NEReductionOperationKernel.
- Fix data layout in NEScaleKernel for nhwc.
- Retain configuration step data layout to avoid side-effects.
- Perform sqrt in double domain for L2 pooling.
- Fix output shape calculation for Reduce Mean
- Restrict cases where optimized NEPadLayer runs.
v19.11 Public major release
- Various bug fixes.
- Various optimisations.
- Updated recommended NDK version to r17c.
- Deprecated OpenCL kernels / functions:
- CLDepthwiseConvolutionLayerReshapeWeightsGenericKernel
- CLDepthwiseIm2ColKernel
- CLDepthwiseSeparableConvolutionLayer
- CLDepthwiseVectorToTensorKernel
- CLDirectConvolutionLayerOutputStageKernel
- Deprecated Arm® Neon™ kernels / functions:
- NEDepthwiseWeightsReshapeKernel
- NEDepthwiseIm2ColKernel
- NEDepthwiseSeparableConvolutionLayer
- NEDepthwiseVectorToTensorKernel
- NEDepthwiseConvolutionLayer3x3
- New OpenCL kernels / functions:
- CLInstanceNormalizationLayerKernel / @ref CLInstanceNormalizationLayer
- CLDepthwiseConvolutionLayerNativeKernel to replace the old generic depthwise convolution (see Deprecated
OpenCL kernels / functions)
- @ref CLLogSoftmaxLayer
- New Arm® Neon™ kernels / functions:
- NEBoundingBoxTransformKernel / @ref NEBoundingBoxTransform
- NEComputeAllAnchorsKernel / NEComputeAllAnchors
- @ref NEDetectionPostProcessLayer
- @ref NEGenerateProposalsLayer
- NEInstanceNormalizationLayerKernel / @ref NEInstanceNormalizationLayer
- @ref NELogSoftmaxLayer
- NEROIAlignLayerKernel / @ref NEROIAlignLayer
- Added QASYMM8 support for:
- @ref CLGenerateProposalsLayer
- @ref CLROIAlignLayer
- @ref CPPBoxWithNonMaximaSuppressionLimit
- Added QASYMM16 support for:
- @ref CLBoundingBoxTransform
- Added FP16 support for:
- CLGEMMMatrixMultiplyReshapedKernel
- Added new data type QASYMM8_PER_CHANNEL support for:
- CLDequantizationLayer
- @ref NEDequantizationLayer
- Added new data type QSYMM8_PER_CHANNEL support for:
- @ref CLConvolutionLayer
- @ref NEConvolutionLayer
- @ref CLDepthwiseConvolutionLayer
- @ref NEDepthwiseConvolutionLayer
- Added FP16 mixed-precision support for:
- CLGEMMMatrixMultiplyReshapedKernel
- CLPoolingLayerKernel
- Added FP32 and FP16 ELU activation for:
- @ref CLActivationLayer
- @ref NEActivationLayer
- Added asymmetric padding support for:
- @ref CLDirectDeconvolutionLayer
- @ref CLGEMMDeconvolutionLayer
- @ref NEDeconvolutionLayer
- Added SYMMETRIC and REFLECT modes for CLPadLayerKernel / @ref CLPadLayer.
- Replaced the calls to NECopyKernel and NEMemsetKernel with @ref NEPadLayer in @ref NEGenerateProposalsLayer.
- Replaced the calls to CLCopyKernel and CLMemsetKernel with @ref CLPadLayer in @ref CLGenerateProposalsLayer.
- Improved performance for CL Inception V3 - FP16.
- Improved accuracy for CL Inception V3 - FP16 by enabling FP32 accumulator (mixed-precision).
- Improved Arm® Neon™ performance by enabling fusing batch normalization with convolution and depth-wise convolution layer.
- Improved Arm® Neon™ performance for MobileNet-SSD by improving the output detection performance.
- Optimized @ref CLPadLayer.
- Optimized CL generic depthwise convolution layer by introducing CLDepthwiseConvolutionLayerNativeKernel.
- Reduced memory consumption by implementing weights sharing.
v19.08.1 Public maintenance release
- Fix offset calculation in NEReductionOperationKernel.
- Fix data layout in NEScaleKernel for nhwc.
- Retain configuration step data layout to avoid side-effects.
- Perform sqrt in double domain for L2 pooling.
- Fix output shape calculation for Reduce Mean
- Fix broadcast CLPixelwiseMultiplication with 5D tensors
v19.08 Public major release
- Various bug fixes.
- Various optimisations.
- Deprecated Arm® Neon™ functions
- NEDepthConcatenateLayer
- NEWidthConcatenateLayer
- Deprecated OpenCL kernels / functions
- CLDepthConcatenateLayer
- CLGEMMInterleave4x4Kernel / CLGEMMInterleave4x4
- CLGEMMTranspose1xWKernel / CLGEMMTranspose1xW
- CLWidthConcatenateLayer
- New Arm® Neon™ kernels / functions:
- @ref NEAbsLayer
- @ref NECast
- @ref NEElementwisePower
- @ref NELogLayer
- @ref NELSTMLayerQuantized
- @ref NENegLayer
- @ref NEPReluLayer
- @ref NESinLayer
- NEBatchConcatenateLayerKernel
- NEDepthToSpaceLayerKernel / @ref NEDepthToSpaceLayer
- NEDepthwiseConvolutionLayerNativeKernel
- NEGEMMLowpQuantizeDownInt32ToInt16ScaleByFixedPointKernel
- NEMeanStdDevNormalizationKernel / @ref NEMeanStdDevNormalizationLayer
- NESpaceToDepthLayerKernel / @ref NESpaceToDepthLayer
- New OpenCL kernels / functions:
- @ref CLAbsLayer
- @ref CLElementwisePower
- @ref CLLogLayer
- @ref CLLSTMLayerQuantized
- @ref CLNegLayer
- @ref CLPReluLayer
- @ref CLSinLayer
- CLBatchConcatenateLayerKernel
- CLDepthToSpaceLayerKernel / @ref CLDepthToSpaceLayer
- CLGEMMLowpMatrixMultiplyNativeKernel
- CLGEMMLowpQuantizeDownInt32ToInt16ScaleByFixedPointKernel
- CLGEMMMatrixMultiplyNativeKernel
- CLMeanStdDevNormalizationKernel /CLMeanStdDevNormalizationLayer
- CLSpaceToDepthLayerKernel / @ref CLSpaceToDepthLayer
- New examples:
- neon_opticalflow
- cl_cache
- neon_permute
- Added support for FP16 in @ref NEDeconvolutionLayer
- Added support for FP16 in @ref CLDeconvolutionLayer
- Added support for REDUCE_MIN and REDUCE_MAX in @ref ReductionOperation
- Enable the fusion of batch normalization with convolution and depthwise convolution layer for FP32 in the graph API (OpenCL only)
- Added support for fusing activation function and broadcast addition with the matrix multiplication for FP32 (OpenCL only)
- Re-factored the depthwise convolution layer kernel on Arm® Neon™ for generic cases
- Added an optimized depthwise convolution layer kernel for 5x5 filters (Neon™ only)
- Added support to enable OpenCL kernel cache. Added example showing how to load the prebuilt OpenCL kernels from a binary cache file
- Altered @ref QuantizationInfo interface to support per-channel quantization.
- The CLDepthwiseConvolutionLayer3x3 will be included by @ref CLDepthwiseConvolutionLayer to accommodate for future optimizations.
- The NEDepthwiseConvolutionLayerOptimized will be included by @ref NEDepthwiseConvolutionLayer to accommodate for future optimizations.
- Removed inner_border_right and inner_border_top parameters from @ref CLDeconvolutionLayer interface
- Removed inner_border_right and inner_border_top parameters from @ref NEDeconvolutionLayer interface
- Optimized the Arm® Neon™ assembly kernel for GEMMLowp. The new implementation fuses the output stage and quantization with the matrix multiplication kernel
v19.05 Public major release
- Various bug fixes.
- Various optimisations.
- New Arm® Neon™ kernels / functions:
- NEBatchToSpaceLayerKernel / @ref NEBatchToSpaceLayer
- NEComplexPixelWiseMultiplicationKernel / @ref NEComplexPixelWiseMultiplication
- NECropKernel / @ref NECropResize
- NEDepthwiseConvolutionAssemblyDispatch
- NEFFTDigitReverseKernel
- NEFFTRadixStageKernel
- NEFFTScaleKernel
- NEGEMMLowpOffsetContributionOutputStageKernel
- NEHeightConcatenateLayerKernel
- NESpaceToBatchLayerKernel / @ref NESpaceToBatchLayer
- @ref NEFFT1D
- @ref NEFFT2D
- @ref NEFFTConvolutionLayer
- New OpenCL kernels / functions:
- CLComplexPixelWiseMultiplicationKernel / @ref CLComplexPixelWiseMultiplication
- CLCropKernel / @ref CLCropResize
- CLDeconvolutionReshapeOutputKernel
- CLFFTDigitReverseKernel
- CLFFTRadixStageKernel
- CLFFTScaleKernel
- CLGEMMLowpMatrixMultiplyReshapedOnlyRHSKernel
- CLGEMMMatrixMultiplyReshapedOnlyRHSKernel
- CLHeightConcatenateLayerKernel
- @ref CLDirectDeconvolutionLayer
- @ref CLFFT1D
- @ref CLFFT2D
- @ref CLFFTConvolutionLayer
- @ref CLGEMMDeconvolutionLayer
- New OpenGLES kernels / functions:
- GCConcatenateLayer
- Deprecated functions/interfaces
- GCDepthConcatenateLayer
- NEWidthConcatenateLayer
- NEDepthConcatenateLayer
- CLWidthConcatenateLayer
- CLDepthConcatenateLayer
- CLGEMMInterleave4x4
- CLGEMMTranspose1xW
- Support different quantization info in CLConcatLayer.
- Add checks on different input/output quantization info were not supported.
- Tensors have different quantization information.
- Add FP16 support checks.
- Fix output quantization CLDeptwiseConv3x3 when activation is fused.
- New graph examples:
- graph_convolution
- graph_fully_connected
- graph_depthwise_convolution
- Deepspeech v0.4.1
- Add support for QASYMM8 in NEArithmeticSubtractionKernel.
- Add support for QASYMM8 in NEPixelWiseMultiplicationKernel.
- Add support for QASYMM8 NEDeconvolution.
- Add support for DequantizationLayer for Neon/CL.
- Add support for dilation in CLDepthwiseConvolution.
- Fuse offset contribution with the output stage when we use NEGEMMLowpMatrixMultiplyCore.
- Optimize CLDeconvolution.
- Add StackLayer to the graph API.
- Add support for "reflect" padding mode in NEPad.
- Winograd 7x7 NHWC on OpenCL.
- Rework CL ML layers to run exclusively on CL.
- Support different quantization info in PoolingLayer.
- Implement and test import memory interfaces.
- Added new tests and removed old ones.
- Various clang-tidy fixes.
v19.02 Public major release
- Various bug fixes.
- Various optimisations.
- New Arm® Neon™ kernels / functions:
- NETileKernel / @ref NETile
- NEFuseBatchNormalizationKernel / @ref NEFuseBatchNormalization
- NEElementwiseOperationKernel
- @ref NEElementwiseMax
- @ref NEElementwiseMin
- @ref NEElementwiseSquaredDiff
- NESelectKernel / @ref NESelect
- @ref NESplit
- @ref NESlice
- @ref NEUnstack
- NEStridedSliceKernel / @ref NEStridedSlice
- NEElementwiseUnaryKernel
- @ref NERsqrtLayer
- @ref NEExpLayer
- NEReverseKernel / @ref NEReverse
- @ref NEArgMinMaxLayer
- NEStackLayerKernel / @ref NEStackLayer
- NERangeKernel / @ref NERange
- @ref NEPadLayer
- NEMemsetKernel
- NEGatherKernel / @ref NEGather
- @ref NEElementwiseComparison
- @ref NEElementwiseComparisonStatic
- NEComparisonOperationKernel
- @ref NEElementwiseDivision
- New OpenCL kernels / functions:
- CLSelectKernel / @ref CLSelect
- CLTileKernel / @ref CLTile
- CLComparisonKernel / @ref CLComparison
- @ref CLArgMinMaxLayer
- @ref CLElementwiseMax
- @ref CLElementwiseMin
- @ref CLElementwiseSquaredDiff
- CLStackLayerKernel / @ref CLStackLayer
- @ref CLReverse / CLReverseKernel
- @ref CLRsqrtLayer
- @ref CLExpLayer
- CLElementWiseUnaryLayerKernel
- CLGEMMReshapeLHSMatrixKernel
- CLGEMMReshapeRHSMatrixKernel
- CLGEMMMatrixMultiplyReshapedKernel
- CLRangeKernel / @ref CLRange
- @ref CLUnstack
- CLGatherKernel / @ref CLGather
- CLGEMMLowpMatrixMultiplyReshapedKernel
- New CPP kernels / functions:
- @ref CPPDetectionOutputLayer
- @ref CPPTopKV / @ref CPPTopKVKernel
- Added new examples:
- graph_ssd_mobilenet.cpp
- graph_mobilenet_v2.cpp
- graph_resnet12.cpp
- graph_srcnn955.cpp
- graph_vgg_vdsr.cpp
- graph_inception_resnet_v1.cpp
- Add 4D tensors support to
- @ref NESoftmaxLayer
- Fused activation in @ref CLWinogradConvolutionLayer
- Extended @ref NEPermute to support more cases
- Added Neon™/SVE GEMM Hybrid kernels
- Added u8 and s8 hybrid assembly kernels
- Introduced GEMM strategy name in NEGEMMAssemblyWrapper
- Improved @ref CLTuner
- Fused the bias addition within @ref CLGEMM
- Added support for QASYMM8 LOGISTIC activation in @ref NEActivationLayer
- Added NHWC data layout support to:
- @ref NEScale for F16
- @ref CLNormalizationLayer IN_MAP_2D for FP32/FP16
- @ref NEL2NormalizeLayer for FP32/FP16
- @ref NENormalizationLayer IN_MAP_2D for FP32/FP16
- @ref CLROIAlignLayer
- @ref CLGenerateProposalsLayer
- Added QASYMM8 support to the following kernels:
- NEArithmeticAdditionKernel
- @ref NEScale
- Added new tests and improved validation and benchmarking suites.
- Deprecated functions/interfaces
- Usage of inner_border_right and inner_border_top has been deprecated in @ref CLDeconvolutionLayer and @ref NEDeconvolutionLayer
v18.11 Public major release
- Various bug fixes.
- Various optimisations.
- New Arm® Neon™ kernels / functions:
- @ref NEChannelShuffleLayer / NEChannelShuffleLayerKernel
- @ref NEReduceMean
- @ref NEReorgLayer / NEReorgLayerKernel
- @ref NEPriorBoxLayer / NEPriorBoxLayerKernel
- NEUpsampleLayer / NEUpsampleLayerKernel
- NEYOLOLayer / NEYOLOLayerKernel
- New OpenCL kernels / functions:
- @ref CLBatchToSpaceLayer / CLBatchToSpaceLayerKernel
- @ref CLBoundingBoxTransform / CLBoundingBoxTransformKernel
- CLComputeAllAnchorsKernel
- @ref CLGenerateProposalsLayer
- @ref CLNormalizePlanarYUVLayer / CLNormalizePlanarYUVLayerKernel
- @ref CLReorgLayer / CLReorgLayerKernel
- @ref CLSpaceToBatchLayer / CLSpaceToBatchLayerKernel
- @ref CLPadLayer
- @ref CLReduceMean
- @ref CLPriorBoxLayer / CLPriorBoxLayerKernel
- @ref CLROIAlignLayer / CLROIAlignLayerKernel
- @ref CLSlice
- @ref CLSplit
- @ref CLStridedSlice / CLStridedSliceKernel
- CLUpsampleLayer / CLUpsampleLayerKernel
- CLYOLOLayer / CLYOLOLayerKernel
- New CPP kernels / functions:
- @ref CPPBoxWithNonMaximaSuppressionLimit / @ref CPPBoxWithNonMaximaSuppressionLimitKernel
- Added the validate method in:
- @ref NEDepthConvertLayer
- @ref NEFloor / @ref CLFloor
- NEGEMMMatrixAdditionKernel
- @ref NEReshapeLayer / @ref CLReshapeLayer
- @ref CLScale
- Added new examples:
- graph_shufflenet.cpp
- graph_yolov3.cpp
- Added documentation for add a new function or kernel.
- Improved doxygen documentation adding a list of the existing functions.
- Add 4D tensors support to
- CLWidthConcatenateLayer
- CLFlattenLayer
- @ref CLSoftmaxLayer
- Add dot product support for CLDepthwiseConvolutionLayer3x3NHWCKernel non-unit stride
- Add SVE support
- Fused batch normalization into convolution layer weights in @ref CLFuseBatchNormalization
- Fuses activation in CLDepthwiseConvolutionLayer3x3NCHWKernel, CLDepthwiseConvolutionLayer3x3NHWCKernel and @ref NEGEMMConvolutionLayer
- Added NHWC data layout support to:
- @ref CLChannelShuffleLayer
- @ref CLDeconvolutionLayer
- @ref CLL2NormalizeLayer
- Added QASYMM8 support to the following kernels:
- CLScaleKernel
- NEDepthwiseConvolutionLayer3x3Kernel
- CLPixelWiseMultiplicationKernel
- Added FP16 support to the following kernels:
- CLDepthwiseConvolutionLayer3x3NHWCKernel
- NEDepthwiseConvolutionLayer3x3Kernel
- CLNormalizePlanarYUVLayerKernel
- @ref CLWinogradConvolutionLayer (5x5 kernel)
- More tests added to both validation and benchmarking suites.
v18.08 Public major release
- Various bug fixes.
- Various optimisations.
- Updated recommended NDK version to r17b.
- Removed support for QS8/QS16 data types.
- Added support for grouped convolution in @ref CLConvolutionLayer.
- Added NHWC data layout support to:
- NEDepthConcatenateLayer / CLDepthConcatenateLayer
- @ref NEWinogradConvolutionLayer / @ref CLWinogradConvolutionLayer
- @ref CLDepthwiseConvolutionLayer
- @ref CLDirectConvolutionLayer
- @ref CLConvolutionLayer
- @ref CLScale
- CLIm2ColKernel
- New Arm® Neon™ kernels / functions:
- @ref NERNNLayer
- New OpenCL kernels / functions:
- @ref CLArithmeticDivision
- Introduced prepare() stage support in the graph API for GLES.
- Added support for memory reusage when trying to allocate smaller CLTensors.
- Enabled NHWC execution on graph examples.
- Added JPEG accessor for validation purposes.
- Added validate methods to some kernels / functions.
v18.05 Public major release
- Various bug fixes.
- Various optimisations.
- Major redesign in the interface for the Neon™ kernels implemented in assembly.
- Removed arm_compute::NEGEMMLowpAArch64A53Kernel / arm_compute::NEGEMMLowpAArch64Kernel / arm_compute::NEGEMMLowpAArch64V8P4Kernel / arm_compute::NEGEMMInterleavedBlockedKernel / arm_compute::NEGEMMLowpAssemblyMatrixMultiplyCore / arm_compute::NEHGEMMAArch64FP16Kernel
- Added NEGEMMAssemblyWrapper and AssemblyKernelGlue which are used to execute assembly kernels in Neon™ functions.
- Minor changes to the CPUInfo type to make it compatible with the new assembly gemm interface.
- Moved Neon™ assembly kernels to the folder src/core/Neon/kernels/arm_gemm.
- Improved doxygen documentation.
- Improved memory management for layer's transitions.
- Added support for NHWC data layout in tensors.
- Added NHWC data layout support to:
- @ref NEGEMMConvolutionLayer
- @ref NEDirectConvolutionLayer
- @ref NEPoolingLayer / @ref CLPoolingLayer
- @ref NEBatchNormalizationLayer / @ref CLBatchNormalizationLayer
- @ref NEDepthwiseConvolutionLayer
- @ref NEScale
- NEIm2Col
- Added support for dilated convolutions in @ref NEConvolutionLayer and @ref CLConvolutionLayer.
- New OpenCL kernels / functions:
- @ref CLChannelShuffleLayer / CLChannelShuffleLayerKernel
- CLConvertFullyConnectedWeightsKernel / @ref CLConvertFullyConnectedWeights
- @ref CLCopy / CLCopyKernel
- @ref CLLSTMLayer
- @ref CLRNNLayer
- CLWidthConcatenateLayer / CLWidthConcatenateLayerKernel
- CLWinogradFilterTransformKernel / @ref CLWinogradConvolutionLayer
- CLWinogradInputTransformKernel / CLWinogradInputTransform
- New Arm® Neon™ kernels / functions:
- NEConvertFullyConnectedWeightsKernel / @ref NEConvertFullyConnectedWeights.
- Created the validate method in @ref CLDepthwiseConvolutionLayer.
- Beta and gamma are no longer mandatory arguments in @ref NEBatchNormalizationLayer and @ref CLBatchNormalizationLayer.
- Added depth multiplier support in @ref NEDepthwiseConvolutionLayer and @ref CLDepthwiseConvolutionLayer.
- Added broadcast multiply support in @ref NEPixelWiseMultiplication / NEPixelWiseMultiplicationKernel.
- Port mobilenet example to NHWC data layout.
- Enabled Winograd method in @ref CLConvolutionLayer.
- Renamed NEWinogradLayer to @ref NEWinogradConvolutionLayer.
- Updated @ref NEWinogradConvolutionLayer to use highly optimised assembly kernels in src/core/Neon/kernels/arm_gemm.
- Added memory manager support in GLES functions.
- Major refactoring of the graph API.
- Added GLES backend in the graph API.
- Added support for the memory manager in the graph API.
- Enabled Winograd Convolution method in the graph API.
- Added support for grouped convolutions in the graph API.
- Replaced NEDeconvolutionLayerUpsampleKernel with NEScaleKernel in @ref NEDeconvolutionLayer.
- Added fast maths flag in @ref CLConvolutionLayer.
- Added new tests and benchmarks in validation and benchmark frameworks
- Merge Activation layer with Convolution Layer (Neon™, CL, GLES)
- Added support to OpenCL 2.0 SVM
- Added support to import memory in OpenCL tensors.
- Added the prepare() method to perform any one off pre-processing before running the function.
- Added new examples:
- graph_inception_v4.cpp
- graph_resnext50.cpp
- Added memory measurement instrument for CL.
v18.03 Public maintenance release
- Various bug fixes.
- Fixed bug in @ref NEActivationLayer
- Fix in @ref CLTuner when using batches.
- Updated recommended NDK version to r16b (And fixed warnings).
- Fixed bug in validation code.
- Added Inception v4 graph example.
- Renamed NEWinogradLayer.cpp to @ref NEWinogradConvolutionLayer
v18.02 Public major release
- Various Arm® Neon™ / OpenCL / GLES optimisations.
- Various bug fixes.
- Changed default number of threads on big LITTLE systems.
- Refactored examples and added:
- graph_mobilenet_qassym8
- graph_resnet
- graph_squeezenet_v1_1
- Renamed @ref CLConvolutionLayer into @ref CLGEMMConvolutionLayer and created a new @ref CLConvolutionLayer to select the fastest convolution method.
- Renamed @ref NEConvolutionLayer into @ref NEGEMMConvolutionLayer and created a new @ref NEConvolutionLayer to select the fastest convolution method.
- Added in place support to:
- @ref CLActivationLayer
- @ref CLBatchNormalizationLayer
- Added QASYMM8 support to:
- @ref CLActivationLayer
- @ref CLDepthwiseConvolutionLayer
- @ref NEDepthwiseConvolutionLayer
- @ref NESoftmaxLayer
- Added FP16 support to:
- CLDepthwiseConvolutionLayer3x3
- @ref CLDepthwiseConvolutionLayer
- Added broadcasting support to NEArithmeticAddition / @ref CLArithmeticAddition / @ref CLPixelWiseMultiplication
- Added fused batched normalization and activation to @ref CLBatchNormalizationLayer and @ref NEBatchNormalizationLayer
- Added support for non-square pooling to @ref NEPoolingLayer and @ref CLPoolingLayer
- New OpenCL kernels / functions:
- CLDirectConvolutionLayerOutputStageKernel
- New Arm® Neon™ kernels / functions
- Added name() method to all kernels.
- Added support for Winograd 5x5.
- NEPermuteKernel / @ref NEPermute
- CpuWinogradConv2dTransformInputKernel / NEWinogradLayer
- CpuWinogradConv2dTransformOutputKernel / NEWinogradLayer
- CpuWinogradConv2dTransformWeightsKernel / NEWinogradLayer
- Renamed NEWinogradLayerKernel into NEWinogradLayerBatchedGEMMKernel
- New GLES kernels / functions:
- GCTensorShiftKernel / GCTensorShift
v18.01 Public maintenance release
- Various bug fixes
- Added some of the missing validate() methods
- Added CLDeconvolutionLayerUpsampleKernel / @ref CLDeconvolutionLayer @ref CLDeconvolutionLayerUpsample
- Added CLPermuteKernel / @ref CLPermute
- Added method to clean the programs cache in the CL Kernel library.
- Added GCArithmeticAdditionKernel / GCArithmeticAddition
- Added GCDepthwiseConvolutionLayer3x3Kernel / GCDepthwiseConvolutionLayer3x3
- Added GCNormalizePlanarYUVLayerKernel / GCNormalizePlanarYUVLayer
- Added GCScaleKernel / GCScale
- Added GCWeightsReshapeKernel / GCConvolutionLayer
- Added FP16 support to the following GLES compute kernels:
- GCCol2ImKernel
- GCGEMMInterleave4x4Kernel
- GCGEMMTranspose1xWKernel
- GCIm2ColKernel
- Refactored Arm® Neon™ Winograd (NEWinogradLayerKernel)
- Added NEDirectConvolutionLayerOutputStageKernel
- Added QASYMM8 support to the following Arm® Neon™ kernels:
- NEDepthwiseConvolutionLayer3x3Kernel
- NEFillBorderKernel
- NEPoolingLayerKernel
- Added new examples:
- graph_cl_mobilenet_qasymm8.cpp
- graph_inception_v3.cpp
- gc_dc.cpp
- More tests added to both validation and benchmarking suites.
v17.12 Public major release
- Most machine learning functions on OpenCL support the new data type QASYMM8
- Introduced logging interface
- Introduced opencl timer
- Reworked GEMMLowp interface
- Added new Arm® Neon™ assembly kernels for GEMMLowp, SGEMM and HGEMM
- Added validation method for most Machine Learning kernels / functions
- Added new graph examples such as googlenet, mobilenet, squeezenet, vgg16 and vgg19
- Added sgemm example for OpenCL
- Added absolute difference example for GLES compute
- Added new tests and benchmarks in validation and benchmark frameworks
- Added new kernels / functions for GLES compute
- New OpenGL ES kernels / functions
- GCAbsoluteDifferenceKernel / GCAbsoluteDifference
- GCActivationLayerKernel / GCActivationLayer
- GCBatchNormalizationLayerKernel / GCBatchNormalizationLayer
- GCCol2ImKernel
- GCDepthConcatenateLayerKernel / GCDepthConcatenateLayer
- GCDirectConvolutionLayerKernel / GCDirectConvolutionLayer
- GCDropoutLayerKernel / GCDropoutLayer
- GCFillBorderKernel / GCFillBorder
- GCGEMMInterleave4x4Kernel / GCGEMMInterleave4x4
- GCGEMMMatrixAccumulateBiasesKernel / GCGEMMMatrixAdditionKernel / GCGEMMMatrixMultiplyKernel / GCGEMM
- GCGEMMTranspose1xWKernel / GCGEMMTranspose1xW
- GCIm2ColKernel
- GCNormalizationLayerKernel / GCNormalizationLayer
- GCPixelWiseMultiplicationKernel / GCPixelWiseMultiplication
- GCPoolingLayerKernel / GCPoolingLayer
- GCLogits1DMaxKernel / GCLogits1DShiftExpSumKernel / GCLogits1DNormKernel / GCSoftmaxLayer
- GCTransposeKernel / GCTranspose
- New Arm® Neon™ kernels / functions
- arm_compute::NEGEMMLowpAArch64A53Kernel / arm_compute::NEGEMMLowpAArch64Kernel / arm_compute::NEGEMMLowpAArch64V8P4Kernel / arm_compute::NEGEMMInterleavedBlockedKernel / arm_compute::NEGEMMLowpAssemblyMatrixMultiplyCore
- arm_compute::NEHGEMMAArch64FP16Kernel
- NEDepthwiseConvolutionLayer3x3Kernel / NEDepthwiseIm2ColKernel / NEGEMMMatrixVectorMultiplyKernel / NEDepthwiseVectorToTensorKernel / @ref NEDepthwiseConvolutionLayer
- NEGEMMLowpOffsetContributionKernel / NEGEMMLowpMatrixAReductionKernel / NEGEMMLowpMatrixBReductionKernel / NEGEMMLowpMatrixMultiplyCore
- NEGEMMLowpQuantizeDownInt32ToUint8ScaleByFixedPointKernel / NEGEMMLowpQuantizeDownInt32ToUint8ScaleByFixedPoint
- NEWinogradLayer / NEWinogradLayerKernel
- New OpenCL kernels / functions
- CLGEMMLowpOffsetContributionKernel / CLGEMMLowpMatrixAReductionKernel / CLGEMMLowpMatrixBReductionKernel / CLGEMMLowpMatrixMultiplyCore
- CLGEMMLowpQuantizeDownInt32ToUint8ScaleByFixedPointKernel / CLGEMMLowpQuantizeDownInt32ToUint8ScaleByFixedPoint
- New graph nodes for Arm® Neon™ and OpenCL
- graph::BranchLayer
- graph::DepthConvertLayer
- graph::DepthwiseConvolutionLayer
- graph::DequantizationLayer
- graph::FlattenLayer
- graph::QuantizationLayer
- graph::ReshapeLayer
v17.10 Public maintenance release
- Bug fixes:
- Check the maximum local workgroup size supported by OpenCL devices
- Minor documentation updates (Fixed instructions to build the examples)
- Introduced a graph::GraphContext
- Added a few new Graph nodes, support for branches and grouping.
- Automatically enable cl_printf in debug builds
- Fixed bare metal builds for armv7a
- Added AlexNet and cartoon effect examples
- Fixed library builds: libraries are no longer built as supersets of each other.(It means application using the Runtime part of the library now need to link against both libarm_compute_core and libarm_compute)
v17.09 Public major release
- Experimental Graph support: initial implementation of a simple stream API to easily chain machine learning layers.
- Memory Manager (@ref BlobLifetimeManager, @ref BlobMemoryPool, @ref ILifetimeManager, @ref IMemoryGroup, @ref IMemoryManager, @ref IMemoryPool, @ref IPoolManager, @ref MemoryManagerOnDemand, @ref PoolManager)
- New validation and benchmark frameworks (Boost and Google frameworks replaced by homemade framework).
- Most machine learning functions support both fixed point 8 and 16 bit (QS8, QS16) for both Arm® Neon™ and OpenCL.
- New Arm® Neon™ kernels / functions:
- arm_compute::NEGEMMAssemblyBaseKernel arm_compute::NEGEMMAArch64Kernel
- NEDequantizationLayerKernel / @ref NEDequantizationLayer
- NEFloorKernel / @ref NEFloor
- NEL2NormalizeLayerKernel / @ref NEL2NormalizeLayer
- NEQuantizationLayerKernel NEMinMaxLayerKernel / @ref NEQuantizationLayer
- NEROIPoolingLayerKernel / @ref NEROIPoolingLayer
- NEReductionOperationKernel / @ref NEReductionOperation
- NEReshapeLayerKernel / @ref NEReshapeLayer
- New OpenCL kernels / functions:
- CLDepthwiseConvolutionLayer3x3NCHWKernel CLDepthwiseConvolutionLayer3x3NHWCKernel CLDepthwiseIm2ColKernel CLDepthwiseVectorToTensorKernel CLDepthwiseWeightsReshapeKernel / CLDepthwiseConvolutionLayer3x3 @ref CLDepthwiseConvolutionLayer CLDepthwiseSeparableConvolutionLayer
- CLDequantizationLayerKernel / CLDequantizationLayer
- CLDirectConvolutionLayerKernel / @ref CLDirectConvolutionLayer
- CLFlattenLayer
- CLFloorKernel / @ref CLFloor
- CLGEMMTranspose1xW
- CLGEMMMatrixVectorMultiplyKernel
- CLL2NormalizeLayerKernel / @ref CLL2NormalizeLayer
- CLQuantizationLayerKernel CLMinMaxLayerKernel / @ref CLQuantizationLayer
- CLROIPoolingLayerKernel / @ref CLROIPoolingLayer
- CLReductionOperationKernel / @ref CLReductionOperation
- CLReshapeLayerKernel / @ref CLReshapeLayer
v17.06 Public major release
- Various bug fixes
- Added support for fixed point 8 bit (QS8) to the various Arm® Neon™ machine learning kernels.
- Added unit tests and benchmarks (AlexNet, LeNet)
- Added support for sub tensors.
- Added infrastructure to provide GPU specific optimisation for some OpenCL kernels.
- Added @ref OMPScheduler (OpenMP) scheduler for Neon
- Added @ref SingleThreadScheduler scheduler for Arm® Neon™ (For bare metal)
- User can specify their own scheduler by implementing the @ref IScheduler interface.
- New OpenCL kernels / functions:
- CLBatchNormalizationLayerKernel / @ref CLBatchNormalizationLayer
- CLDepthConcatenateLayerKernel / CLDepthConcatenateLayer
- CLHOGOrientationBinningKernel CLHOGBlockNormalizationKernel, CLHOGDetectorKernel / CLHOGDescriptor CLHOGDetector CLHOGGradient CLHOGMultiDetection
- CLLocallyConnectedMatrixMultiplyKernel / CLLocallyConnectedLayer
- CLWeightsReshapeKernel / CLConvolutionLayerReshapeWeights
- New C++ kernels:
- CPPDetectionWindowNonMaximaSuppressionKernel
- New Arm® Neon™ kernels / functions:
- NEBatchNormalizationLayerKernel / @ref NEBatchNormalizationLayer
- NEDepthConcatenateLayerKernel / NEDepthConcatenateLayer
- NEDirectConvolutionLayerKernel / @ref NEDirectConvolutionLayer
- NELocallyConnectedMatrixMultiplyKernel / NELocallyConnectedLayer
- NEWeightsReshapeKernel / NEConvolutionLayerReshapeWeights
v17.05 Public bug fixes release
- Various bug fixes
- Remaining of the functions ported to use accurate padding.
- Library does not link against OpenCL anymore (It uses dlopen / dlsym at runtime instead to determine whether or not OpenCL is available).
- Added "free" method to allocator.
- Minimum version of g++ required for armv7 Linux changed from 4.8 to 4.9
v17.04 Public bug fixes release
The following functions have been ported to use the new accurate padding:
- CLColorConvertKernel
- CLEdgeNonMaxSuppressionKernel
- CLEdgeTraceKernel
- CLGaussianPyramidHorKernel
- CLGaussianPyramidVertKernel
- CLGradientKernel
- NEChannelCombineKernel
- NEFillArrayKernel
- NEGaussianPyramidHorKernel
- NEGaussianPyramidVertKernel
- NEHarrisScoreFP16Kernel
- NEHarrisScoreKernel
- NEHOGDetectorKernel
- NELogits1DMaxKernel
- NELogits1DShiftExpSumKernel
- NELogits1DNormKernel
- NENonMaximaSuppression3x3FP16Kernel
- NENonMaximaSuppression3x3Kernel
v17.03.1 First Major public release of the sources
- Renamed the library to arm_compute
- New CPP target introduced for C++ kernels shared between Arm® Neon™ and CL functions.
- New padding calculation interface introduced and ported most kernels / functions to use it.
- New OpenCL kernels / functions:
- CLGEMMLowpMatrixMultiplyKernel / CLGEMMLowp
- New Arm® Neon™ kernels / functions:
- NENormalizationLayerKernel / @ref NENormalizationLayer
- NETransposeKernel / @ref NETranspose
- NELogits1DMaxKernel, NELogits1DShiftExpSumKernel, NELogits1DNormKernel / @ref NESoftmaxLayer
- NEIm2ColKernel, NECol2ImKernel, NEConvolutionLayerWeightsReshapeKernel / @ref NEConvolutionLayer
- NEGEMMMatrixAccumulateBiasesKernel / @ref NEFullyConnectedLayer
- NEGEMMLowpMatrixMultiplyKernel / NEGEMMLowp
v17.03 Sources preview
- New OpenCL kernels / functions:
- CLGradientKernel, CLEdgeNonMaxSuppressionKernel, CLEdgeTraceKernel / CLCannyEdge
- GEMM refactoring + FP16 support: CLGEMMInterleave4x4Kernel, CLGEMMTranspose1xWKernel, CLGEMMMatrixMultiplyKernel, CLGEMMMatrixAdditionKernel / @ref CLGEMM
- CLGEMMMatrixAccumulateBiasesKernel / @ref CLFullyConnectedLayer
- CLTransposeKernel / @ref CLTranspose
- CLLKTrackerInitKernel, CLLKTrackerStage0Kernel, CLLKTrackerStage1Kernel, CLLKTrackerFinalizeKernel / CLOpticalFlow
- CLNormalizationLayerKernel / @ref CLNormalizationLayer
- CLLaplacianPyramid, CLLaplacianReconstruct
- New Arm® Neon™ kernels / functions:
- NEActivationLayerKernel / @ref NEActivationLayer
- GEMM refactoring + FP16 support (Requires armv8.2 CPU): NEGEMMInterleave4x4Kernel, NEGEMMTranspose1xWKernel, NEGEMMMatrixMultiplyKernel, NEGEMMMatrixAdditionKernel / @ref NEGEMM
- NEPoolingLayerKernel / @ref NEPoolingLayer
v17.02.1 Sources preview
- New OpenCL kernels / functions:
- CLLogits1DMaxKernel, CLLogits1DShiftExpSumKernel, CLLogits1DNormKernel / @ref CLSoftmaxLayer
- CLPoolingLayerKernel / @ref CLPoolingLayer
- CLIm2ColKernel, CLCol2ImKernel, CLConvolutionLayerWeightsReshapeKernel / CLConvolutionLayer
- CLRemapKernel / CLRemap
- CLGaussianPyramidHorKernel, CLGaussianPyramidVertKernel / CLGaussianPyramid, CLGaussianPyramidHalf, CLGaussianPyramidOrb
- CLMinMaxKernel, CLMinMaxLocationKernel / CLMinMaxLocation
- CLNonLinearFilterKernel / CLNonLinearFilter
- New Arm® Neon™ FP16 kernels (Requires armv8.2 CPU)
- NEAccumulateWeightedFP16Kernel
- NEBox3x3FP16Kernel
- NENonMaximaSuppression3x3FP16Kernel
v17.02 Sources preview
- New OpenCL kernels / functions:
- CLActivationLayerKernel / @ref CLActivationLayer
- CLChannelCombineKernel / CLChannelCombine
- CLDerivativeKernel / CLChannelExtract
- CLFastCornersKernel / CLFastCorners
- CLMeanStdDevKernel / CLMeanStdDev
- New Arm® Neon™ kernels / functions:
- HOG / SVM: NEHOGOrientationBinningKernel, NEHOGBlockNormalizationKernel, NEHOGDetectorKernel, NEHOGNonMaximaSuppressionKernel / NEHOGDescriptor, NEHOGDetector, NEHOGGradient, NEHOGMultiDetection
- NENonLinearFilterKernel / NENonLinearFilter
- Introduced a CLScheduler to manage the default context and command queue used by the runtime library and create synchronisation events.
- Switched all the kernels / functions to use tensors instead of images.
- Updated documentation to include instructions to build the library from sources.
v16.12 Binary preview release
- Original release
*/
} // namespace arm_compute
|