linux-rdma / perftest

Infiniband Verbs Performance Tests
Other
536 stars 273 forks source link

Compile error: ‘IBV_ODP_SUPPORT_SRQ_RECV’ undeclared #209

Closed smichnowicz closed 1 year ago

smichnowicz commented 1 year ago

Dear Developers, I went to compile perftest but got the following compile errors


/usr/include/infiniband/verbs.h:78: note: this is the location of the previous definition
   78 | #define container_of(ptr, type, member) \
      | 
src/perftest_resources.c: In function ‘check_odp_transport_caps’:
src/perftest_resources.c:1398:40: error: ‘IBV_ODP_SUPPORT_SRQ_RECV’ undeclared (first use in this function); did you mean ‘IBV_EXP_ODP_SUPPORT_SRQ_RECV’?
 1398 |   if (!(caps & (IBV_ODP_SUPPORT_RECV | IBV_ODP_SUPPORT_SRQ_RECV))) {
      |                                        ^~~~~~~~~~~~~~~~~~~~~~~~
      |                                        IBV_EXP_ODP_SUPPORT_SRQ_RECV
src/perftest_resources.c:1398:40: note: each undeclared identifier is reported only once for each function it appears in
src/perftest_resources.c: In function ‘check_odp_support’:
src/perftest_resources.c:1456:52: error: ‘struct ibv_device_attr_ex’ has no member named ‘xrc_odp_caps’; did you mean ‘odp_caps’?
 1456 |   if ( !check_odp_transport_caps(user_param, dattr.xrc_odp_caps) )
      |                                                    ^~~~~~~~~~~~
      |                                                    odp_caps

The file /usr/include/infiniband/verbs.h exists. Does the program depend upon the version of this file?

It is a Centos 7.9 system and I have the following packages installed:

yum list installed | grep verb
libibverbs.x86_64                 41mlnx1-OFED.4.9.3.0.0.49510         installed
libibverbs-devel.x86_64           41mlnx1-OFED.4.9.3.0.0.49510         installed
libibverbs-devel-static.x86_64    41mlnx1-OFED.4.9.3.0.0.49510         installed
libibverbs-utils.x86_64           41mlnx1-OFED.4.9.3.0.0.49510         installe

thanks Simon

HassanKhadour commented 1 year ago

Hi,

It seems that your ofed uses legacy verbs, you need to use the legacy branch of perftest https://github.com/linux-rdma/perftest/tree/legacy_verbs_support

HassanKhadour commented 1 year ago

Please reopen if the issue continues

LiuMicheal commented 5 months ago

Hi, I have used the legacy branch of perftest but I also encountered the same error:

src/perftest_resources.c: In function ‘check_odp_transport_caps’: src/perftest_resources.c:1428:40: error: ‘IBV_ODP_SUPPORT_SRQ_RECV’ undeclared (first use in this function); did you mean ‘IBV_EXP_ODP_SUPPORT_SRQ_RECV’? if (!(caps & (IBV_ODP_SUPPORT_RECV | IBV_ODP_SUPPORT_SRQ_RECV))) { ^~~~~~~~ IBV_EXP_ODP_SUPPORT_SRQ_RECV src/perftest_resources.c:1428:40: note: each undeclared identifier is reported only once for each function it appears in src/perftest_resources.c: In function ‘check_odp_support’: src/perftest_resources.c:1486:52: error: ‘struct ibv_device_attr_ex’ has no member named ‘xrc_odp_caps’; did you mean ‘odp_caps’? if ( !check_odp_transport_caps(user_param, dattr.xrc_odp_caps) ) ^~~~ odp_caps

Here is my environment: Ubuntu18.04 Linux 4.15.0-46-generic MLNX_OFED_LINUX-4.9-3.1.5.0 Ethernet controller: Mellanox Technologies MT27700 Family [ConnectX-4]

LiuMicheal commented 5 months ago

As for MLNX_OFED_LINUX-4.9-3.1.5.0, I checked the relevant documentation: https://docs.nvidia.com/networking/display/ofedv490170/release+notes

The corresponding perftest version found is perftest | 4.4-0.23.g89e176a.49017

I downloaded the version perftest-4.4-0.23 in releases and compiled it correctly.