intel / QAT_Engine

Intel QuickAssist Technology( QAT) OpenSSL Engine (an OpenSSL Plug-In Engine) which provides cryptographic acceleration for both hardware and optimized software using Intel QuickAssist Technology enabled Intel platforms. https://developer.intel.com/quickassist
BSD 3-Clause "New" or "Revised" License
401 stars 127 forks source link

Golden Pentium 8505 QAT #275

Open gitthangbaby opened 1 year ago

gitthangbaby commented 1 year ago

Is QAT possible with Pentium Gold 8505?

https://www.intel.com/content/www/us/en/products/sku/226262/intel-pentium-gold-processor-8505-8m-cache-up-to-4-40-ghz/specifications.html?wapkw=8505

Intel® QuickAssist Software Acceleration Yes

So far I see zero mentions on the internet. Vendor told me no QAT. A sample AMI BIOS says no QAT. Does anyone has QAT with this nice CPU?

jdschuet commented 1 year ago

The Intel(R) QuickAssist Software Acceleration here likely refers to the qat_sw path of the QAT_Engine. This allows OpenSSL based applications to take advantage of additional instructions that were added to Intel processors starting with 3rd Generation Intel® Xeon® Scalable processors. For list of which algorithms can be accelerated, please refer to: https://github.com/intel/QAT_Engine/blob/master/docs/features.md#qat_sw-features

For instructions on setting up QAT_Engine with support for qat_sw, please refer to: https://intel.github.io/quickassist/qatlib/qatengine.html#installing-from-sources

When configuring QAT_Engine, use the option: ./configure --enable-qat_sw

And finally, you can run the following command to check for QAT HW support: lspci -nn | egrep -e '8086:37c8|8086:19e2|8086:0435|8086:6f54|8086:4940|8086:4942'

This looks for any QAT endpoint. If nothing is returned here, that indicates just the qat_sw path is supported.

gitthangbaby commented 1 year ago

Thank you. I'm surprised this is not working out of box everywhere as it's 10 year old technology. I'm on OpenSuse and there are packages qatlib, qatengine, intel-ipsec-mb-devel, libIPSec_MB1. IPP-crypto is missing, that one is only on Fedora. Openssl engine is not installed that way:

$ openssl speed -provider qatprovider -elapsed -async_jobs 8 rsa2048 speed: unable to load provider qatprovider Hint: use -provider-path option or OPENSSL_MODULES environment variable. 4047C3F99E7F0000:error:12800067:DSO support routines:dlfcn_load:could not load the shared library:crypto/dso/dso_dlfcn.c:118:filename(/usr/lib64/ossl-modules/qatprovider.so): /usr/lib64/ossl-modules/qatprovider.so: cannot open shared object file: No such file or directory 4047C3F99E7F0000:error:12800067:DSO support routines:DSO_load:could not load the shared library:crypto/dso/dso_lib.c:152: 4047C3F99E7F0000:error:07880025:common libcrypto routines:provider_init:reason(524325):crypto/provider_core.c:904:name=qatprovider

$ openssl engine -v qatengine Qat Intree device not available 40872DABC67F0000:error:1300006D:engine routines:dynamic_load:init failed:crypto/engine/eng_dyn.c:514: 40872DABC67F0000:error:13000074:engine routines:ENGINE_by_id:no such engine:crypto/engine/eng_list.c:430:id=qatengine

I'm not sure if I should make any efforts (the compiling stuff). Based on lspci the QAT_HW is not supported. Based on documentation QAT_SW is also not supported on 8505 (i7):

The qat_sw features are only supported in the platforms starting with 3rd Generation Intel® Xeon® Scalable Processors family and later.

Also mentioned here.

Possibly AVX512 is needed too:

To make use of the software acceleration features in the Intel QAT Engine for OpenSSL, you’ll need a system that supports Intel® AVX-512 with the following instruction set extensions:

AVX512F
AVX512_IFMA
jdschuet commented 1 year ago

You are correct. This command can be used to determine if the required instructions are available:

cpuid -1 | egrep 'VAES|VPCLM|GFNI|AVX512F|AVX512IFMA'

Expected output: AVX512F: AVX-512 foundation instructions = true AVX512IFMA: fused multiply add = true VAES instructions = true VPCLMULQDQ instruction = true