[Cbc] Build problem with COIN_BIG_INDEX
John Forrest
john.forrest at fastercoin.com
Fri Sep 29 12:10:42 EDT 2017
Fixed.
When changing the code, I decided to let factorizations still use int.
This could obviously be changed, but I think the code would be a bit
slower. At present the only drawback is that on small integer problems,
Cbc sometimes uses a dense factorization and at present that is switched
off because I was too lazy to modify it.
In a few months, if no bugs are found, I may allow another compilation
option so that the user can build factorizations with CoinBigIndex 32
bit or 64 bit.
I do not have any problems with more than 2 billion elements and I would
not be able to solve them on any computer I own as in some places I
think you would need 50 gigabytes of memory.
John Forrest
On 29/09/17 15:43, ycollette.nospam at free.fr wrote:
> Hello again,
>
> I made a test activating the mumps part I meet an error with COIN_BIG_INDEX=2 in Clp:
>
> [ 46%] Building CXX object Clp/CMakeFiles/libClp.dir/src/ClpCholeskyMumps.cpp.o
> /home/artelys/repositories/coin/Cbc/Clp/src/ClpCholeskyMumps.cpp: Dans la fonction membre « virtual int ClpCholeskyMumps::order(ClpInterior*) »:
> /home/artelys/repositories/coin/Cbc/Clp/src/ClpCholeskyMumps.cpp:176:70: error: ne peut convertir « CoinBigIndex* {aka long long int*} » en « int* » dans l'affectation
> choleskyStart_ = new CoinBigIndex[numberRows_+1+sizeFactor_];
> ^
> make[2]: *** [Clp/CMakeFiles/libClp.dir/build.make:1287: Clp/CMakeFiles/libClp.dir/src/ClpCholeskyMumps.cpp.o] Error 1
> make[1]: *** [CMakeFiles/Makefile2:2186: Clp/CMakeFiles/libClp.dir/all] Error 2
>
> Best regards,
>
> YC
>
> ----- Mail original -----
> De: "ycollette nospam" <ycollette.nospam at free.fr>
> À: "John Forrest" <john.forrest at fastercoin.com>
> Cc: cbc at list.coin-or.org
> Envoyé: Vendredi 29 Septembre 2017 13:45:06
> Objet: Re: [Cbc] Build problem with COIN_BIG_INDEX
>
> You are certainly right.
> It's just because I use Clp compiled from the Cbc archive ... :)
>
> Thanks a lot for your work !
>
> ----- Mail original -----
> De: "John Forrest" <john.forrest at fastercoin.com>
> À: cbc at list.coin-or.org
> Envoyé: Vendredi 29 Septembre 2017 13:40:24
> Objet: Re: [Cbc] Build problem with COIN_BIG_INDEX
>
> I thought it was worthwhile to make Cbc work on problems with more than
> 2 billion variables. I do not expect any such integer problems in the
> near future, but it should be possible to have a version of Cbc which
> can solve Lp's of that size.
>
> I have made a large number of changes to about 40 files in trunk and now
> Cbc compiles with COIN_BIG_INDEX=2.
>
> It was tedious but straightforward. Everything seems correct. I have
> not tested it on problems with more than 2 billion elements and there
> could easily be bugs if an index does not fit in an int.
>
> Please inform me if you notice anything with and without COIN_BIG_INDEX=2.
>
> John Forrest
> On 27/09/17 08:30, ycollette.nospam at free.fr wrote:
>> Hello,
>>
>> I checked that clp compiled fine with COIN_BIG_INDEX=2.
>> But there is still a problem with Cbc.
>> With the current trunk of Cbc, I meet the following error message:
>>
>> [ 36%] Building CXX object Cgl/CMakeFiles/libCgl.dir/src/CglMixedIntegerRounding/CglMixedIntegerRounding.cpp.o
>> /home/artelys/repositories/coin/Cbc/Cgl/src/CglMixedIntegerRounding/CglMixedIntegerRounding.cpp: Dans la fonction membre « virtual void CglMixedIntegerRounding::generateCuts(const OsiSolverInterface&, OsiCuts&, CglTreeInfo) »:
>> /home/artelys/repositories/coin/Cbc/Cgl/src/CglMixedIntegerRounding/CglMixedIntegerRounding.cpp:71:58: error: ne peut convertir « const CoinBigIndex* {aka const long long int*} » en « const int* » dans l'initialisation
>> const int* rowStarts = matrixByRow.getVectorStarts();
>> ^
>> /home/artelys/repositories/coin/Cbc/Cgl/src/CglMixedIntegerRounding/CglMixedIntegerRounding.cpp:78:58: error: ne peut convertir « const CoinBigIndex* {aka const long long int*} » en « const int* » dans l'initialisation
>> const int* colStarts = matrixByCol.getVectorStarts();
>> ^
>> /home/artelys/repositories/coin/Cbc/Cgl/src/CglMixedIntegerRounding/CglMixedIntegerRounding.cpp: Dans la fonction membre « void CglMixedIntegerRounding::mixIntRoundPreprocess(const OsiSolverInterface&) »:
>> /home/artelys/repositories/coin/Cbc/Cgl/src/CglMixedIntegerRounding/CglMixedIntegerRounding.cpp:320:58: error: ne peut convertir « const CoinBigIndex* {aka const long long int*} » en « const int* » dans l'initialisation
>> const int* rowStarts = matrixByRow.getVectorStarts();
>> ^
>> make[2]: *** [Cgl/CMakeFiles/libCgl.dir/build.make:87: Cgl/CMakeFiles/libCgl.dir/src/CglMixedIntegerRounding/CglMixedIntegerRounding.cpp.o] Error 1
>> make[1]: *** [CMakeFiles/Makefile2:1462: Cgl/CMakeFiles/libCgl.dir/all] Error 2
>>
>> Best regards,
>>
>> YC
>>
>> _______________________________________________
>> Cbc mailing list
>> Cbc at list.coin-or.org
>> https://urldefense.proofpoint.com/v2/url?u=https-3A__list.coin-2Dor.org_mailman_listinfo_cbc&d=DwIGaQ&c=Ngd-ta5yRYsqeUsEDgxhcqsYYY1Xs5ogLxWPA_2Wlc4&r=js2M0T-3OIMIVDvokcKjokJbk0F8QOCd0mT4FsVFE88&m=P1t285H7ZPOCVwp07jKaHQ0IYxtJVZ-ASHfcrEzYIzs&s=EtdiBl1OifGkePx1dAUTfcWTDcImmmJpCr_zoReLLtU&e=
>>
>>
> _______________________________________________
> Cbc mailing list
> Cbc at list.coin-or.org
> https://urldefense.proofpoint.com/v2/url?u=https-3A__list.coin-2Dor.org_mailman_listinfo_cbc&d=DwIGaQ&c=Ngd-ta5yRYsqeUsEDgxhcqsYYY1Xs5ogLxWPA_2Wlc4&r=kY-tTJAFuHScYZHjojaaKVZZOEYVVkPpGiWUPr3h80U&m=3tb2hcNhO7_JsYB_Vq2Jda3gW-LFi8wE_T86ZL-y-YY&s=0eAY1cWf_rL_xQV3jo70faGTY1jliDJkLtv0KciTuhM&e=
>
> _______________________________________________
> Cbc mailing list
> Cbc at list.coin-or.org
> https://urldefense.proofpoint.com/v2/url?u=https-3A__list.coin-2Dor.org_mailman_listinfo_cbc&d=DwIGaQ&c=Ngd-ta5yRYsqeUsEDgxhcqsYYY1Xs5ogLxWPA_2Wlc4&r=kY-tTJAFuHScYZHjojaaKVZZOEYVVkPpGiWUPr3h80U&m=-XyJMpuyxwAZdyBYGldzKdbLGp6YLqNFF0vt0iiWO9o&s=3c51hj4WnWxx4odlqGrPrcYNwvJVvLFo-Tm_zST-nkU&e=
>
>
More information about the Cbc
mailing list