On 10-May-12 3:42 PM, Yevgeny Kliteynik wrote:
> 
> Here are the ActiveSpeed values:
> 
>   1: SDR   - 2.5 Gb/s * (8/10 coding)
>   2: DDR   - 5   Gb/s * (8/10 coding)
>   4: QDR   - 10  Gb/s * (8/10 coding)
>   8: FDR10 - 10  Gb/s * (64/66 coding)
> 16: FDR   - 14  Gbps * (64/66 coding)
> 32: EDR   - 25  Gbs  * (64/66 coding)
> 
> EDR is not out yet, so we can ignore it for the sake of this patch.
> It is also true that *most* of IB cables are 4x.
> There are 12x clusters out there (like TACC's Ranger), and sometimes
> there are 1x links (mostly because the cable is not perfect or too long).
> 
> So cases of 4 and 8 are not the same for us, because MPI needs actual
> *data* rate instead of *bit* rate, which is different in these cases.
> 
> I'll send a patch for review in a minute...
> 

How about this patch? If it looks OK, I'll commit to trunk and open CMR.

ndex: btl_openib_component.c
===================================================================
--- btl_openib_component.c      (revision 26420)
+++ btl_openib_component.c      (working copy)
@@ -810,8 +810,10 @@
                    we have to look up the values corresponding to
                    port->active_speed and port->active_width.  These
                    are enums corresponding to the IB spec.  Overall
-                   forumula is 80% of the reported speed (to get the
-                   true link speed) times the number of links. */
+                   forumula to get the true link speed is 8/10 or
+                   64/66 of the reported speed (depends on the coding
+                   that is being used for the particular speed) times
+                   the number of links. */
                 switch (ib_port_attr->active_speed) {
                 case 1:
                     /* 2.5Gbps * 0.8, in megabits */
@@ -826,9 +828,13 @@
                     openib_btl->super.btl_bandwidth = 8000;
                     break;
                 case 8:
-                    /* 40.0Gbps * 0.8, in megabits */
-                    openib_btl->super.btl_bandwidth = 32000;
+                    /* FDR10: 10.0Gbps * 64/66, in megabits */
+                    openib_btl->super.btl_bandwidth = 9700;
                     break;
+                case 16:
+                    /* FDR: 14.0Gbps * 64/66, in megabits */
+                    openib_btl->super.btl_bandwidth = 13600;
+                    break;
                 default:
                     /* Who knows?  Declare this port unreachable (do
                        *not* return ERR_VALUE_OF_OUT_OF_BOUNDS; that

Reply via email to