[C++] Comparación de rendimiento Hyper-Threading


Answers

El subprocesamiento Hyper aprovecha el hecho de que la CPU tiene muchos componentes y cuando se usa uno, cuando no hay subprocesamiento, los otros simplemente permanecen inactivos. Puede intentar escribir dos tipos de subprocesos, uno haciendo cálculos enteros (que con suerte usará la ALU) y otro haciendo aritmética de coma flotante (que con suerte usará la FPU).

No probé esto por mi cuenta, pero parece que en ese caso, el hyper threading debería mejorar el rendimiento.

Para mostrar lo contrario, puede usar solo un tipo de subprocesos (ya sea que los subprocesos solo realicen operaciones enteras o que los subprocesos solo realicen operaciones de coma flotante).

También puede ser que su prueba sea defectuosa, pero para saber si ese es el caso, necesitaremos más información sobre esa prueba.

Question

He escrito un proyecto que usa algunas funciones básicas en openssl como RAND_bytes y des_ecb_encrypt .

Mi computadora tiene i7-2600 (4 núcleos y 8 CPU lógica). Cuando ejecuto mi proyecto con 4 hilos, costará 10 segundos. Cuando lo ejecuto con 8 hilos, también cuesta 10 segundos.

Lo que quiero decir es que hyper-threading no me da ninguna mejora en el rendimiento. En Linux, el resultado del experimento es el mismo.

Encontré aquí que me dice que hyper-threading no me da una mejora en algunas situaciones. Además, encontré aquí darme algunos resultados intuitivos.

Sin embargo, he tratado de escribir algunas pruebas simples y encontré algunos ejemplos simples que mostrarán hyper-threading que no me dará una mejoría aparente. Lamentablemente, no lo encuentro.

Entonces, mi pregunta es que si hay algunas pruebas simple muestra que el hyper-threading no me dará ninguna mejora en el rendimiento.




Los siguientes son detalles y resultados de mis puntos de referencia de MP para Linux y Windows, que pueden comportarse de manera diferente. No mucho HT, pero las pruebas de Linux incluyen Atom (1 núcleo 2 hilos) y Windows tiene Core i7 resultados (4 + 4).

http://www.roylongbottom.org.uk/linux%20multithreading%20benchmarks.htm

http://www.roylongbottom.org.uk/quad%20core%208%20thread.htm

Haga su elección, dependiendo de lo que quiera probar si HT proporciona un mejor o peor rendimiento. Los siguientes son los resultados de RandMem en i7 (Linux parece mejor con esta prueba). Para i7, también debe considerar Turbo Boost que podría ser más bajo con varios subprocesos.

             CPUs          MBytes Per Second Using Threads        Gain At Threads
             /HTs         1       2       4       6       8     2     4     6     8
 Serial RD
 Core i7     4/8 L1   11458   22661   37039   43717   46374   2.0   3.2   3.8   4.0
 930             L2   10380   20832   32853   41711   42839   2.0   3.2   4.0   4.1
 #### MHz        L3    8828   17743   29610   38414   40330   2.0   3.4   4.4   4.6
 Win 764        RAM    4266    8712   17347   24946   25589   2.0   4.1   5.8   6.0

 Serial RW
 Core i7     4/8 L1   15282   13724   16240   16209   18379   0.9   1.1   1.1   1.2
 930             L2   12223   18216   25326   28104   27047   1.5   2.1   2.3   2.2
 #### MHz        L3   10234   19266   21931   24450   26351   1.9   2.1   2.4   2.6
 Win 764        RAM    4533    7656   13876   14543   13390   1.7   3.1   3.2   3.0

 Random RD
 Core i7     4/8 L1   11266   22548   38174   45592   47141   2.0   3.4   4.0   4.2
 930             L2    6233   12463   20059   24986   25667   2.0   3.2   4.0   4.1
 #### MHz        L3    3499    6915    9211   10002    9531   2.0   2.6   2.9   2.7
 Win 764        RAM     459     909    1241    1398    1364   2.0   2.7   3.0   3.0

 Random RW
 Core i7     4/8 L1   14375    3027    2780    2901    3297   0.2   0.2   0.2   0.2
 930             L2    5887    4555    6117    6693    7281   0.8   1.0   1.1   1.2
 #### MHz        L3    3104    4604    4721    5047    4933   1.5   1.5   1.6   1.6
 Win 764        RAM     428     860     899     948    1026   2.0   2.1   2.2   2.4

 #### 2.8 GHz running at up to 3.06 GHz via Turbo Boost, dual channel 1066 MHz DDR3 RAM 

Luego, el punto de referencia de MP Whetstone que muestra ganancias reales

                      MWIPS  MFLOP  MFLOP  MFLOP   COS    EXP   FIXPT   IF    EQUAL
CPU              MHz            1      2      3    MOPS   MOPS   MOPS   MOPS   MOPS

Core i7 1 Thrd  ####   3115   1065    886    738   79.3   39.7   2447   2936   1154

Core i7 Win7    ####  21690   8676   7621   5844    531    291  16643  12027   5034
Quad Core Thread 1            1091   1027    728   66.4   36.5   2050   1501    629
Plus HT   Thread 2            1089   1037    742   66.0   36.5   2090   1507    630
          Thread 3            1090    946    742   66.8   36.5   2069   1534    631
          Thread 4            1092   1037    727   66.6   36.6   2031   1501    630
          Thread 5            1042    959    736   66.4   36.5   1912   1483    630
          Thread 6            1091    874    723   66.6   36.1   2049   1507    629
          Thread 7            1090    867    725   65.6   36.3   2094   1516    631
          Thread 8            1091    874    722   66.3   36.3   2350   1476    624

Gain %                  696    815    860    792    670    733    680    410    436