We are using pthread_self to get a thread id for use in the DTL tracing functionality to name individual output files per thread. This is not an appropriate use of pthread_self as its return type (pthread_t) is an opaque type that can vary between implementations. On linux we haven't had a problem, as pthread_t is an unsigned long int. However on freeBSD it is a pointer to an empty struct. The difference between this and the int type we used for its value within the BLIS code was causing a compile error. The best long term solution would be for pthread builds to maintain their own internal thread id. A mechanism to implement this has not yet been identifie. In the meantime, we make the following changes as a stopgap: - Explicitly cast from pthread_t return value to our BLIS internal data type AOCL_TID. - Make AOCL_TID a long int rather than pid_t (i.e. an int) in pthread builds to match the sizes expected on both Linux and FreeBSD. AMD-Internal: [CPUPL-4167] Change-Id: Ia07ee8f97273cc3bab46f6bca1eeb7954320415b
AOCL-BLAS library
AOCL-BLAS is AMD's optimized version of BLAS targeted for AMD EPYC and Ryzen CPUs. It is developed as a forked version of BLIS (https://github.com/flame/blis), which is developed by members of the Science of High-Performance Computing (SHPC) group in the Institute for Computational Engineering and Sciences at The University of Texas at Austin and other collaborators (including AMD). All known features and functionalities of BLIS are retained and supported in AOCL-BLAS library. AOCL-BLAS is regularly updated with the improvements from the upstream repository.
AOCL BLAS is optimized with SSE2, AVX2, AVX512 instruction sets which would be enabled based on the target Zen architecture using the dynamic dispatch feature. All prominent Level 3, Level 2 and Level 1 APIs are designed and optimized for specific paths targeting different size spectrums e.g., Small, Medium and Large sizes. These algorithms are designed and customized to exploit the architectural improvements of the target platform.
For detailed instructions on how to configure, build, install, and link against AOCL-BLAS on AMD CPUs, please refer to the AOCL User Guide located on AMD developer portal.
The upstream repository (https://github.com/flame/blis) contains further information on BLIS, including background information on BLIS design, usage examples, and a complete BLIS API reference.
AOCL-BLAS is developed and maintained by AMD. You can contact us on the email-id toolchainsupport@amd.com. You can also raise any issue/suggestion on the git-hub repository at https://github.com/amd/blis/issues.