Ubuntu 16.0.4下源码编译faiss库

记录一下编译faiss库的过程
首先到 https://github.com/facebookresearch/faiss 下载一下最新的发布包 faiss-1.7.2.tar.gz

tar -xzvf faiss-1.7.2.tar.gz
cd faiss-1.7.2
mkdir build
cd build
#只编译C++库,使用CPU,不需要PYTHON和GPU
sudo cmake .. -DBUILD_SHARED_LIBS=OFF -DFAISS_ENABLE_GPU=OFF  -DFAISS_ENABLE_PYTHON=OFF -DBLA_VENDOR=Intel10_64_dyn -DMKL_LIBRARIES=/opt/intel/oneapi/mkl/latest/lib/intel64/
sudo make faiss -j

过程中碰到的问题以及解决方法
1. ubuntu 16.0.4自带的cmake版本不够,
处理方法,到 https://cmake.org/files/v3.24/ 下载 cmake-3.24.2-linux-x86_64.tar.gz

wget https://cmake.org/files/v3.24/cmake-3.24.2-linux-x86_64.tar.gz
tar -xzvf cmake-3.24.2-linux-x86_64.tar.gz
cd cmake-3.24.2-linux-x86_64
#sudo cp -ap /usr/bin/cmake /usr/bin/cmake35
#sudo cp -ap bin/cmake /usr/bin/cmake324
sudo cp -ap bin/cmake /usr/bin/cmake
sudo cp -apr share/cmake-3.24/ /usr/share/cmake-3.24

2. 提示缺少MKL库
到Intel网站下载安装 https://www.intel.com/content/www/us/en/developer/tools/oneapi/onemkl-download.html
目前下载到的是 l_onemkl_p_2022.2.0.8748_offline.sh

sudo ./l_onemkl_p_2022.2.0.8748_offline.sh

按照提示一路确认下去

#导入mkl的环境
. /opt/intel/oneapi/mkl/latest/env/vars.sh
#可以去掉cmake命令中的参数
-DBLA_VENDOR=Intel10_64_dyn -DMKL_LIBRARIES=/opt/intel/oneapi/mkl/latest/lib/intel64/

3.提示找不到BLA库
设置 -DBLA_VENDOR=Intel10_64_dyn -DMKL_LIBRARIES=/opt/intel/oneapi/mkl/latest/lib/intel64/
库目录根据实际安装路径定,上面是默认路径

Popularity: 1% [?]

Random Posts

ESXI下Linux虚拟机丢失网卡的解决方法

一天ESXI意外断电重启,发现下面的几台Linux虚拟机丢失网卡,不能通过ssh连接,通过控制台连接上去
发现网卡没有起来,只有一个 lo 的 127.0.0.1 的本地地址
使用

ip addr
查看mac地址, 然后使用命令
vi /etc/udev/rules.d/70-persistent-net.rules 

在打开的文件中查找对应这个mac的网卡名称,再编辑修改

vi /etc/sysconfig/network-script/ifcfg-eth*

对应网卡名称的配置,修改eth名称和rules文件中和mac地址一致的网卡名称对应起来
重新使用命令

service network restart

正常启动网卡,配置的ip恢复使用,可以正常通过ssh连接

Popularity: 1% [?]

Random Posts

    Ubuntu禁用Compiz

    在ESXI上安装了一个Ubuntu16.04,空闲时CPU占用1.2G左右的资源,使用top查看进程,发现是 compiz 这个进程在占用cpu
    网上搜索了一下,发现Compiz是用OpenGL来增强界面显示效果的,虚拟机中不需要这个耗费CPU资源的特性,要将他禁用掉。

    需要先安装另外一个桌面管理器来替代

    sudo apt-get install gnome-session-flashback
    

    安装完后,注销账号重新登录,在登录输入用户名的右侧有一个圆按钮,点这个按钮选择 gnome flashback (Metacity), 输入密码登录系统,出来一个省CPU的简洁界面。
    再次查看空闲时ESXI对这个虚拟机监察到的资源占用情况,只有10MHZ不到的CPU资源消耗,解决问题

    Popularity: 1% [?]

    Random Posts

      gcc链接库碰到错误:std::__cxx11::basic_string, std::allocator > const&)’未定义的引用

      新装了一台ubuntu服务器,将原先centos下的编译环境配置了一份,编译时出现如下错误:

      std::__cxx11::basic_string, std::allocator > const&)’未定义的引用
      

      发现是由于CentOS的gcc版本和ubuntu的gcc版本不一致造成,安装的ubuntu带的gcc5.x版,stl的名称有变化造成

      原因
        gcc5以及以后的版本,将std::string和std::list重写,std::list变为std::__cxx11::list,std::string在c++03库是std::basic_string,而在c++11中变为了std::__cxx11::basic_string。而为了在编译的时候兼容旧版本(链接阶段),可在编译的时候启动_GLIBCXX_USE_CXX11_ABI 宏指定具体链接的库。

      解决方法
      使用_GLIBCXX_USE_CXX11_ABI编译宏
      -D_GLIBCXX_USE_CXX11_ABI=0 // 链接到旧版本,未启用c++11特性,std::string是std::basic_string,如将c++11下的string当作参数传入非c++11库,就会出现error: cannot convert ‘const std::__cxx11::basic_string‘ to ‘const char*’,或者未定义的方法引用(undefined reference)
      -D_GLIBCXX_USE_CXX11_ABI=1 // 链接到新版本

      Popularity: 1% [?]

      Random Posts

        NVIDIA-SMI has failed because it couldn‘t communicate with the NVIDIA driver

        安装了cuda驱动的Ubuntu机器重启后,执行nvdia-smi命令提示

        NVIDIA-SMI has failed because it couldn‘t communicate with the NVIDIA driver,
        Make sure that the latest NVIDIA driver is installed and running.
        

        网上搜索一阵,发现只要执行如下几句就可以恢复正常

        sudo apt-get install dkms
        sudo dkms install -m nvidia -v 410.79(410.79表示的是驱动版本号)
        

        利用命令 ll /usr/src/ 可查看下面有一个nvidia-410.79文件夹,版本号安装的nvidia驱动而异,比如 nvidia-470.82.00

        发生这样问题的本质是Linux核心被更新了,禁止更新核心就好。

        Popularity: 2% [?]

        Random Posts

          内网连接mysql速度慢的问题解决

          同前面ssh内网连接速度慢问题,是由于dns出问题造成的,

          修订resolve.conf换一个正常速度快的dns

          或者 关闭mysql服务器连接时的dns反向解析

          修改my.cnf文件,添加如下内容关闭dns反向解析

          [mysqld]
          skip-name-resolve

          修改好后重启mysql服务器问题消失

          Popularity: 2% [?]

          Random Posts

            内网ssh连接速度慢的问题解决

            内网ssh连接服务器速度突然变慢,需要很久才能连接上,执行命令打开-v调试开关,发现有下面提示:

            debug1: Next authentication method: gssapi-with-mic

            debug1: Unspecified GSS failure. Minor code may provide more information

            Cannot determine realm for numeric host address

            网上搜索发现是由于dns解析出问题造成的,解决方式,

            1. 修订resolve.conf 中dns服务器地址,换成正常速度快的

            2. 关闭ssh连接时的dns解析,这里修改/etc/ssh/ssh_config 文件,关闭GSSAPI方式认证

            GSSAPIAuthentication no

            Popularity: 2% [?]

            Random Posts

              VectorCAST 2022sp2 安装

              VectorCAST是一个单元测试的工具,支持中文语言,

              在 option->GUI 的Language选项中可以选择Chinese切换到中文界面显示

              VectorCAST 2022sp2 关于界面

              VectorCAST 2022sp2 关于界面

              Popularity: 3% [?]

              Random Posts

                LoadRunner Enterprise 2021安装问题记录

                弄了一份LoadRunner Enterprise 企业版的安装包,尝试安装碰到如下一些问题:

                1. 系统不支持Win7, Win10安装,需要在2012等服务器版本的Windows上安装

                2. 安装系统上需要关闭UAC,否则不能安装

                3. 系统上要事先安装好IIS,并且安装好 Url Rewirte Module(URL重写模块)

                在系统的 服务管理器 仪表版-> 管理-> 添加角色和功能 中将IIS选上,将使用的一些模块也选上

                URL Rewrite Module 需要单独下载安装,或在IIS管界面中先装 WEB平台安装程序,然后运行 WEB平台安装程序,选择 URL Rewrite Module 模块安装上。

                4. 安装需要MSSqlServer、Orcale或PostgresSQL其中一种数据库,不支持MySQL,使用免费的PostgresSQL,需要在12版本以上才行。

                PostgresSQL安装时需要注意,安装的数据路径要选一个非默认路径值,我是在根目录建了一个数据目录, 然后本地语言选择,不要默认值也不要选Chinese值,选第二个的 C ,再安装,否则安装后会提示postinstall出错,服务启不来。

                安装完成后,需要在数据目录下的 pg_ha.conf 中添加一个允许其他机器访问的规则,然后重新启动pgsql的服务。

                附上几张界面图:

                LoadRunner Enterprise 2021 安装首界面

                LoadRunner Enterprise 2021 安装首界面

                LoadRunner Enterprise 2021 登录界面

                LoadRunner Enterprise 2021 登录界面

                LoadRunner Enterprise 2021 管理许可证界面

                LoadRunner Enterprise 2021 管理许可证界面

                可以看到默认给了 一个并发许可证和50个vuser,再给它添加100并发后

                LoadRunner Enterprise 2021 加100并发后的许可证界面

                LoadRunner Enterprise 2021 加100并发后的许可证界面

                Popularity: 3% [?]

                Random Posts

                  ssh首次连接新建服务器忽略The authenticity of host ‘xxx (xxx)’ can’t be established.确认提示的方法

                  新创建的服务器初次使用ssh去连接时,会弹出 The authenticity of host ‘xxx (xx)’ can’t be established.的确认提示,需要手工输入yes/no 确认是否连接。
                  在自动化运维时,每次脚本去连接这个新增加机器时都会卡住,都要手工确认一下,达不到无人值守目的比较麻烦。
                  其实在ssh连接命令行中添加 -o StrictHostKeyChecking=no 一个参数,就可以忽略这个手工敲yes的步骤,编写的自动化脚本可以顺利达到无人值守运行的目标。

                  Popularity: 4% [?]

                  Random Posts

                    Next Page →