ಇಂಟೆಲ್ ISPC 1.26 (ಇಂಪ್ಲಿಸಿಟ್ SPMD ಪ್ರೋಗ್ರಾಂ ಕಂಪೈಲರ್) ಅನ್ನು ಪ್ರಕಟಿಸಿದೆ, SPMD (ಸಿಂಗಲ್ ಪ್ರೋಗ್ರಾಂ, ಮಲ್ಟಿಪಲ್ ಡೇಟಾ) ಸಮಾನಾಂತರ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ವಿಸ್ತರಣೆಗಳೊಂದಿಗೆ C ಕೋಡ್ ಅನ್ನು ಜೋಡಿಸಲು ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ, ಇದು ಒಂದೇ ಪ್ರೋಗ್ರಾಂನ ಹಲವಾರು ನಿದರ್ಶನಗಳನ್ನು ವಿಭಿನ್ನ ಸೆಟ್ ಇನ್ಪುಟ್ ಡೇಟಾದೊಂದಿಗೆ ಸಮಾನಾಂತರವಾಗಿ ಕಾರ್ಯಗತಗೊಳಿಸಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ. ಪ್ರಾಜೆಕ್ಟ್ ಕೋಡ್ ಅನ್ನು C++ ನಲ್ಲಿ ಬರೆಯಲಾಗಿದೆ ಮತ್ತು BSD ಪರವಾನಗಿ ಅಡಿಯಲ್ಲಿ ವಿತರಿಸಲಾಗಿದೆ. ಲಿನಕ್ಸ್, ವಿಂಡೋಸ್, ಮ್ಯಾಕೋಸ್ ಮತ್ತು ಫ್ರೀಬಿಎಸ್ಡಿಯಲ್ಲಿ ಕೆಲಸವನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ.
SPMD ವಿಸ್ತರಣೆಗಳೊಂದಿಗೆ C ಪ್ರೋಗ್ರಾಂಗಳನ್ನು CPU ಮತ್ತು GPU ಒದಗಿಸಿದ SIMD ಕಂಪ್ಯೂಟೇಶನಲ್ ಘಟಕಗಳಲ್ಲಿ ಕಾರ್ಯಗತಗೊಳಿಸಲು ಸಂಕಲಿಸಲಾಗಿದೆ, ಇದು ಕೋಡ್ನಲ್ಲಿ ಕಡಿಮೆ-ಮಟ್ಟದ ಆಪ್ಟಿಮೈಸೇಶನ್ಗಳಿಲ್ಲದೆ ಮತ್ತು SIMD ಸೂಚನೆಗಳ ಸ್ಪಷ್ಟ ಬಳಕೆಯಿಲ್ಲದೆ SIMD ವೆಕ್ಟರೈಸೇಶನ್ ಕಾರ್ಯವಿಧಾನಗಳನ್ನು ಬಳಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಸಮಾನಾಂತರ ಕಾರ್ಯಗಳನ್ನು ಬರೆಯಲು, ಸಿ ಭಾಷೆಯ ಪರಿಚಿತ ಸಿಂಟ್ಯಾಕ್ಸ್ ಮತ್ತು ಭಾಷಾವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಬಳಸಲಾಗುತ್ತದೆ - SPMD ಕಾರ್ಯಗಳು ನೇರವಾಗಿ C/C++ ನಲ್ಲಿ ಬರೆಯಲಾದ ಕಾರ್ಯಗಳು ಮತ್ತು ರಚನೆಗಳೊಂದಿಗೆ ಸಂವಹನ ನಡೆಸುತ್ತವೆ. ಪ್ರೋಗ್ರಾಂಗಳನ್ನು ಡೀಬಗ್ ಮಾಡಲು ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಡೀಬಗರ್ಗಳನ್ನು ಬಳಸಬಹುದು.
ISPC LLVM ಮೂಲಸೌಕರ್ಯವನ್ನು ಕೋಡ್ ಉತ್ಪಾದನೆ ಮತ್ತು ಆಪ್ಟಿಮೈಸೇಶನ್ಗೆ ಬ್ಯಾಕೆಂಡ್ ಆಗಿ ಬಳಸುತ್ತದೆ. x86 (SSE2, SSE4, AVX, AVX2, AVX512) ಮತ್ತು ARM (NEON) ವೆಕ್ಟರ್ ಸೂಚನೆಗಳನ್ನು ಬೆಂಬಲಿಸಲಾಗುತ್ತದೆ, ಜೊತೆಗೆ GPU ಬದಿಗೆ (Intel Gen9 ಮತ್ತು Xe) ಲೆಕ್ಕಾಚಾರಗಳನ್ನು ಆಫ್ಲೋಡ್ ಮಾಡಲಾಗುತ್ತದೆ. ಎಸ್ಎಸ್ಇ ವೆಕ್ಟರ್ ಬ್ಲಾಕ್ಗಳನ್ನು ಹೊಂದಿರುವ ಆರ್ಕಿಟೆಕ್ಚರ್ಗಳಲ್ಲಿ ಏಕಕಾಲದಲ್ಲಿ 4 ಅಂಶಗಳನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುವುದರಿಂದ, ಐಎಸ್ಪಿಸಿಯ ಬಳಕೆಯು ಪ್ರೋಗ್ರಾಂ ಎಕ್ಸಿಕ್ಯೂಶನ್ ವೇಗವರ್ಧನೆಯನ್ನು 3 ಅಥವಾ ಅದಕ್ಕಿಂತ ಹೆಚ್ಚು ಬಾರಿ ಸಾಧಿಸಲು ಸಾಧ್ಯವಾಗಿಸುತ್ತದೆ ಮತ್ತು ಎವಿಎಕ್ಸ್ ವೆಕ್ಟರ್ ಬ್ಲಾಕ್ಗಳನ್ನು ಹೊಂದಿರುವ ಆರ್ಕಿಟೆಕ್ಚರ್ಗಳಲ್ಲಿ 8 ಅಂಶಗಳನ್ನು ಏಕಕಾಲದಲ್ಲಿ ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲಾಗುತ್ತದೆ, ವೇಗವರ್ಧನೆಯು 5- ತಲುಪಬಹುದು. 6 ಬಾರಿ. ಇದಲ್ಲದೆ, ವೆಕ್ಟರ್ ಬ್ಲಾಕ್ನ ಗಾತ್ರದ ಜೊತೆಗೆ, ವಿವಿಧ ಪ್ರೊಸೆಸರ್ ಕೋರ್ಗಳಲ್ಲಿ ಮರಣದಂಡನೆಯಿಂದ ಸ್ಕೇಲಿಂಗ್ ಅನ್ನು ಸಹ ಖಾತ್ರಿಪಡಿಸಲಾಗುತ್ತದೆ.
ISPC ಆವೃತ್ತಿ 1.26 ರಲ್ಲಿ ಸೇರಿಸಲಾದ ಪ್ರಮುಖ ಆವಿಷ್ಕಾರಗಳು:
- ARM ಆರ್ಕಿಟೆಕ್ಚರ್ಗೆ ಸುಧಾರಿತ ಬೆಂಬಲ:
- "--arch=arm" ಫ್ಲ್ಯಾಗ್ನ ನಡವಳಿಕೆಯನ್ನು ಬದಲಾಯಿಸಲಾಗಿದೆ, ಇದು ಈಗ ARMv8 ಅಲ್ಲ, ARMv32 (7-bit) ಆರ್ಕಿಟೆಕ್ಚರ್ನೊಂದಿಗೆ ಸಂಯೋಜಿತವಾಗಿದೆ (8-bit ಮೋಡ್ನಲ್ಲಿ ARMv64 ಗಾಗಿ, "--arch=aarch64" ಫ್ಲ್ಯಾಗ್ ಅನ್ನು ಇನ್ನೂ ಬಳಸಬೇಕು).
- ARMv7 ಕಾರ್ಟೆಕ್ಸ್-a9 ಮತ್ತು ಕಾರ್ಟೆಕ್ಸ್-a15 ಪ್ರೊಸೆಸರ್ಗಳಿಗೆ ಬೆಂಬಲವನ್ನು ನಿಲ್ಲಿಸಲಾಗಿದೆ.
- ಕಾರ್ಟೆಕ್ಸ್-a55, ಕಾರ್ಟೆಕ್ಸ್-a78, ಕಾರ್ಟೆಕ್ಸ್-a510, ಕಾರ್ಟೆಕ್ಸ್-a520 ಪ್ರೊಸೆಸರ್ಗಳು ಹಾಗೂ ಹೊಸ ಆಪಲ್ ARM ಪ್ರೊಸೆಸರ್ಗಳಿಗೆ ಬೆಂಬಲವನ್ನು ಸೇರಿಸಲಾಗಿದೆ.
- ಹೊಸ ನಿರ್ಮಾಣ ಗುರಿಗಳನ್ನು ಸೇರಿಸಲಾಗಿದೆ: ನಿಯಾನ್-i16x16 ಮತ್ತು ನಿಯಾನ್-i8x32.
- ARM SDOT ಮತ್ತು UDOT ವೆಕ್ಟರ್ ಸೂಚನೆಗಳನ್ನು ಆಧರಿಸಿದ ಕಾರ್ಯಾಚರಣೆಗಳಿಗೆ ಬೆಂಬಲವನ್ನು ಸೇರಿಸಲಾಗಿದೆ.
- ಆಪ್ಟಿಮೈಸೇಶನ್ ಮಾಡಲಾಗಿದೆ, ARMv8 ನ ಕಾರ್ಯಕ್ಷಮತೆ ಸರಾಸರಿ 13% ಹೆಚ್ಚಾಗಿದೆ.
- ಹೊಸ ರೀತಿಯ ನಿರ್ಮಾಣ ಗುರಿಗಳನ್ನು ಸೇರಿಸಲಾಗಿದೆ - "ಜೆನೆರಿಕ್", ಇದು ಕಂಪೈಲರ್ನ ಆಂತರಿಕ ವಾಸ್ತುಶಿಲ್ಪವನ್ನು ಅತ್ಯುತ್ತಮವಾಗಿಸಲು ಮತ್ತು ಹೊಸ ನಿರ್ಮಾಣ ಗುರಿಗಳ ಸೇರ್ಪಡೆಯನ್ನು ಸರಳಗೊಳಿಸಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ. ನಿರ್ದಿಷ್ಟ ಹಾರ್ಡ್ವೇರ್ ಸಾಮರ್ಥ್ಯಗಳಿಗೆ ಮೂಲ ಗುರಿಗಳನ್ನು ಬೆಂಬಲಿಸುವುದು ಇದರ ಉದ್ದೇಶವಾಗಿದೆ, ಅದರ ಮೇಲೆ ನಿರ್ದಿಷ್ಟ ಆಪ್ಟಿಮೈಸೇಶನ್ಗಳೊಂದಿಗೆ ಗುರಿಗಳನ್ನು ಸುಲಭವಾಗಿ ನಿರ್ಮಿಸಬಹುದು. ARM ಆರ್ಕಿಟೆಕ್ಚರ್ಗೆ ಬೆಂಬಲವನ್ನು ಸಾರ್ವತ್ರಿಕ ಗುರಿಗಳನ್ನು ಬಳಸುವುದಕ್ಕೆ ಬದಲಾಯಿಸಲಾಗಿದೆ.
- "-O1" ಆಪ್ಟಿಮೈಸೇಶನ್ ಮೋಡ್ನಲ್ಲಿ ಫಲಿತಾಂಶದ ಕೋಡ್ನ ಗಾತ್ರವನ್ನು ಕಡಿಮೆ ಮಾಡಲು ಕೋಡ್ ಜನರೇಟರ್ನ ಲೂಪ್ ಮತ್ತು ಫಂಕ್ಷನ್ ಅನ್ರೋಲಿಂಗ್ ಅನ್ನು ಸರಿಹೊಂದಿಸಲಾಗಿದೆ. ಅಂತರ್ನಿರ್ಮಿತ ಕಾರ್ಯಗಳಾದ count_leading_zeros ಮತ್ತು count_trailing_zeros ಗಾಗಿ ಸುಧಾರಿತ ಕೋಡ್ ಉತ್ಪಾದನೆ, ಹಾಗೆಯೇ ಕಾರ್ಯಗಳಿಂದ ರಚನೆಗಳನ್ನು ಹಿಂತಿರುಗಿಸುವಾಗ ಮತ್ತು int8/int16 ಪ್ರಕಾರಗಳೊಂದಿಗೆ ಡೇಟಾವನ್ನು ಉಳಿಸುವಾಗ ಅಥವಾ ಲೋಡ್ ಮಾಡುವಾಗ.
- "--enable-llvm-intrinsics" ಫ್ಲ್ಯಾಗ್ ಅನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುವ ಮೂಲಕ ಸಕ್ರಿಯಗೊಳಿಸಲಾದ LLVM ಆಂತರಿಕಗಳಿಗೆ ವಿಸ್ತೃತ ಬೆಂಬಲ.
- LLVM ಟೂಲ್ಚೈನ್ ಅನ್ನು ಪ್ಯಾಚ್ಗಳೊಂದಿಗೆ ಆವೃತ್ತಿ 18.1.8 ಗೆ ನವೀಕರಿಸಲಾಗಿದೆ. ISPC ಯಲ್ಲಿ ಬಳಸಲಾದ LLVM ಆವೃತ್ತಿಯನ್ನು ಪತ್ತೆಹಚ್ಚಲು ಮ್ಯಾಕ್ರೋವನ್ನು ಸೇರಿಸಲಾಗಿದೆ.
- ಕಾರ್ಯವನ್ನು ಕರೆಯುವಾಗ ಎಚ್ಚರಿಕೆಯನ್ನು ಮುದ್ರಿಸಲು "__attribute__((ಅಸಮ್ಮತಿಸಲಾಗಿದೆ))" ಗುಣಲಕ್ಷಣವನ್ನು ಕಾರ್ಯಗಳಿಗೆ ಅನ್ವಯಿಸಲು ಅನುಮತಿಸಲಾಗಿದೆ.
- ಬಿಲ್ಡ್ ಟಾರ್ಗೆಟ್ avx512knl-x16 (KNL) ಅನ್ನು ತೆಗೆದುಹಾಕಲಾಗಿದೆ.
- MacOS ಮತ್ತು iOS ಗಾಗಿ ಗುರಿ ವೇದಿಕೆಯ ಕನಿಷ್ಠ ಬೆಂಬಲಿತ ಆವೃತ್ತಿಯನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಲು "--darwin-version-min" ಆಯ್ಕೆಯನ್ನು ಸೇರಿಸಲಾಗಿದೆ.
ಮೂಲ: opennet.ru
