coin-or/cbc多problem并行求解线程阻塞问题

背景

Cbc是Coin-OR研发的开源MILP求解器,默认编译选项实际使用时,若在外部构建多个模型并行求解,可能会出现求解阻塞的问题。

其主要原因是默认未开启:

CBC_THREAD_SAFE

使用CMake编译(Windows)

【从零开始】coin-or/CoinUtils Osi Clp Cgl Cbc源码构建debug(CLion/CMake)_ymzhu385的博客-CSDN博客

在CMakeList.txt中已经有类似的定义:

add_definitions("-DCBC_THREAD_SAFE")

若需要自己使用CMake编译的同学可以加上该命令

Linux 下编译

以Cbc 2.10.3 为例,默认便以流程为下:

# 解压所有*tar.gz文件
ls *.tar.gz | xargs -n1 tar xzvf
unzip Cbc-releases-2.10.3.zip
cp -rf Clp-releases-1.17.6/Clp ./Cbc-releases-2.10.3
cp -rf Cgl-releases-0.60.3/Cgl ./Cbc-releases-2.10.3
cp -rf CoinUtils-releases-2.11.4/CoinUtils ./Cbc-releases-2.10.3
cp -rf Osi-releases-0.108.6/Osi ./Cbc-releases-2.10.3
目前尝试在gcc/g++ 4.4.7的版本下可以编译成功

cd Cbc-releases-2.10.3
# 由于存在依赖,直接使用make&make install可能会出现问题
# arm 架构: ./configure -C --build=arm-linux
./configure -C 
make
make install

在生成makefile时使用如下语句即可

 ./configure -C CXXFLAGS="-DCBC_THREAD_SAFE"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值