You can subscribe to this list here.
| 2000 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(17) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2001 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(23) |
| 2002 |
Jan
(18) |
Feb
(20) |
Mar
(22) |
Apr
(41) |
May
(28) |
Jun
(25) |
Jul
(10) |
Aug
(7) |
Sep
(5) |
Oct
(20) |
Nov
(13) |
Dec
(11) |
| 2003 |
Jan
(28) |
Feb
(5) |
Mar
(6) |
Apr
(5) |
May
(17) |
Jun
(6) |
Jul
(45) |
Aug
(35) |
Sep
(24) |
Oct
(50) |
Nov
(53) |
Dec
(6) |
| 2004 |
Jan
(4) |
Feb
(10) |
Mar
(52) |
Apr
(46) |
May
(8) |
Jun
(25) |
Jul
(12) |
Aug
(6) |
Sep
(8) |
Oct
(8) |
Nov
(9) |
Dec
(7) |
| 2005 |
Jan
(18) |
Feb
(60) |
Mar
(19) |
Apr
(26) |
May
(14) |
Jun
(27) |
Jul
(8) |
Aug
(15) |
Sep
(19) |
Oct
(53) |
Nov
(20) |
Dec
(23) |
| 2006 |
Jan
(16) |
Feb
(27) |
Mar
(33) |
Apr
(51) |
May
(36) |
Jun
(25) |
Jul
(54) |
Aug
(30) |
Sep
(25) |
Oct
(67) |
Nov
(43) |
Dec
(13) |
| 2007 |
Jan
(23) |
Feb
(27) |
Mar
(55) |
Apr
(79) |
May
(60) |
Jun
(66) |
Jul
(46) |
Aug
(30) |
Sep
(90) |
Oct
(49) |
Nov
(85) |
Dec
(74) |
| 2008 |
Jan
(68) |
Feb
(59) |
Mar
(64) |
Apr
(28) |
May
(66) |
Jun
(35) |
Jul
(73) |
Aug
(76) |
Sep
(65) |
Oct
(46) |
Nov
(41) |
Dec
(19) |
| 2009 |
Jan
(46) |
Feb
(90) |
Mar
(51) |
Apr
(104) |
May
(13) |
Jun
(24) |
Jul
(20) |
Aug
(39) |
Sep
(109) |
Oct
(101) |
Nov
(117) |
Dec
(57) |
| 2010 |
Jan
(55) |
Feb
(42) |
Mar
(39) |
Apr
(22) |
May
(33) |
Jun
(41) |
Jul
(25) |
Aug
(52) |
Sep
(75) |
Oct
(60) |
Nov
(62) |
Dec
(52) |
| 2011 |
Jan
(70) |
Feb
(31) |
Mar
(26) |
Apr
(28) |
May
(17) |
Jun
(38) |
Jul
(51) |
Aug
(35) |
Sep
(27) |
Oct
(35) |
Nov
(10) |
Dec
(20) |
| 2012 |
Jan
(21) |
Feb
(29) |
Mar
(13) |
Apr
(37) |
May
(33) |
Jun
(12) |
Jul
(34) |
Aug
(27) |
Sep
(29) |
Oct
(35) |
Nov
(58) |
Dec
(27) |
| 2013 |
Jan
(27) |
Feb
(16) |
Mar
(40) |
Apr
(16) |
May
(34) |
Jun
(37) |
Jul
(6) |
Aug
(3) |
Sep
(4) |
Oct
(49) |
Nov
(13) |
Dec
(12) |
| 2014 |
Jan
(15) |
Feb
(21) |
Mar
(11) |
Apr
(13) |
May
(27) |
Jun
(60) |
Jul
(19) |
Aug
(29) |
Sep
(20) |
Oct
(28) |
Nov
(41) |
Dec
(15) |
| 2015 |
Jan
(33) |
Feb
(29) |
Mar
(26) |
Apr
(17) |
May
(2) |
Jun
(13) |
Jul
(21) |
Aug
(30) |
Sep
(22) |
Oct
(15) |
Nov
(46) |
Dec
(20) |
| 2016 |
Jan
(6) |
Feb
(5) |
Mar
(9) |
Apr
(15) |
May
(9) |
Jun
(4) |
Jul
(3) |
Aug
(4) |
Sep
(39) |
Oct
(8) |
Nov
(5) |
Dec
(8) |
| 2017 |
Jan
(4) |
Feb
(14) |
Mar
(4) |
Apr
(16) |
May
(5) |
Jun
(10) |
Jul
(25) |
Aug
(2) |
Sep
(5) |
Oct
(11) |
Nov
(8) |
Dec
(11) |
| 2018 |
Jan
(7) |
Feb
(4) |
Mar
|
Apr
(1) |
May
(4) |
Jun
(21) |
Jul
(8) |
Aug
(3) |
Sep
(2) |
Oct
(2) |
Nov
(1) |
Dec
|
| 2019 |
Jan
(1) |
Feb
(5) |
Mar
(18) |
Apr
(9) |
May
(5) |
Jun
(21) |
Jul
(25) |
Aug
(25) |
Sep
(4) |
Oct
(2) |
Nov
(2) |
Dec
(5) |
| 2020 |
Jan
|
Feb
|
Mar
(3) |
Apr
|
May
(2) |
Jun
(2) |
Jul
(1) |
Aug
|
Sep
(1) |
Oct
(2) |
Nov
(6) |
Dec
|
| 2021 |
Jan
(1) |
Feb
|
Mar
(2) |
Apr
(1) |
May
(4) |
Jun
|
Jul
(1) |
Aug
|
Sep
(2) |
Oct
(9) |
Nov
(1) |
Dec
(5) |
| 2022 |
Jan
(7) |
Feb
(3) |
Mar
|
Apr
(2) |
May
(5) |
Jun
(3) |
Jul
(3) |
Aug
(3) |
Sep
(3) |
Oct
(14) |
Nov
|
Dec
(1) |
| 2023 |
Jan
(10) |
Feb
|
Mar
|
Apr
(2) |
May
|
Jun
(2) |
Jul
(2) |
Aug
(1) |
Sep
|
Oct
(5) |
Nov
|
Dec
|
| 2024 |
Jan
(8) |
Feb
|
Mar
(2) |
Apr
(1) |
May
|
Jun
|
Jul
(4) |
Aug
(5) |
Sep
|
Oct
(4) |
Nov
(1) |
Dec
(1) |
| 2025 |
Jan
(3) |
Feb
(2) |
Mar
(2) |
Apr
(1) |
May
(2) |
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
|
| 2026 |
Jan
(1) |
Feb
(12) |
Mar
|
Apr
(2) |
May
(8) |
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: Luigi B. <lui...@gm...> - 2017-10-02 08:44:11
|
Hello everybody,
QuantLib 1.11 has been released and is available for download at
http://quantlib.org/download.shtml.
The list of changes for this release is at
http://quantlib.org/reference/history.html.
Please report any problems you have with this release to the QuantLib
mailing list (qua...@li...), or open a GitHub issue
at https://github.com/lballabio/quantlib/issues.
-- The QuantLib group
|
|
From: redlamp <red...@ya...> - 2017-09-30 11:45:23
|
I compiled ObjectHandler_vc12.sln and successfully generated "ExampleXllStatic-vc120-mt-1_9_0.xll" in order to make the example spreadsheet, exampleStatic.xls, run with this new addin; but, with new addin added in the spreadsheet, after I run Alt-Xtrl-F9, I kept getting "#VALUE!" for those cells interested. Who has any idea what I can do to make the spreadsheet run ? Thanks. -- Sent from: http://quantlib.10058.n7.nabble.com/quantlib-dev-f8818.html |
|
From: Eric E. <eri...@re...> - 2017-09-21 17:46:10
|
Yes that would be much appreciated. I still need to package a 1.10 release, I will include your changes. On 2017-09-21 18:50, Francois Botha wrote: > Thanks. I just remembered I have an outstanding PR at > https://github.com/eehlers/quantlib-old/pulls . Should I migrate that > to https://github.com/eehlers/QuantLibAddin-Old > <https://github.com/eehlers/QuantLibAddin-Old> too? > > Francois Botha > > On 21 September 2017 at 15:45, Eric Ehlers <eri...@re... > <mailto:eri...@re...>> wrote: > > Hi Francois, > > You can commit it to mine. > > https://github.com/eehlers/QuantLibAddin-Old > <https://github.com/eehlers/QuantLibAddin-Old> > > I'm behind on the release management, but struggling desperately > to catch up! > > Regards, > Eric > > > On 2017-09-21 15:08, Francois Botha wrote: > > Hi, > > If I want to submit PRs for enhancements to QuantLibXL, to > which repo should I make it? > > thanks > Francois Botha > > > |
|
From: Francois B. <ig...@gm...> - 2017-09-21 16:50:48
|
Thanks. I just remembered I have an outstanding PR at https://github.com/eehlers/quantlib-old/pulls . Should I migrate that to https://github.com/eehlers/QuantLibAddin-Old too? Francois Botha On 21 September 2017 at 15:45, Eric Ehlers <eri...@re...> wrote: > Hi Francois, > > You can commit it to mine. > > https://github.com/eehlers/QuantLibAddin-Old > > I'm behind on the release management, but struggling desperately to catch > up! > > Regards, > Eric > > > On 2017-09-21 15:08, Francois Botha wrote: > >> Hi, >> >> If I want to submit PRs for enhancements to QuantLibXL, to which repo >> should I make it? >> >> thanks >> Francois Botha >> > > |
|
From: Eric E. <eri...@re...> - 2017-09-21 13:46:04
|
Hi Francois, You can commit it to mine. https://github.com/eehlers/QuantLibAddin-Old I'm behind on the release management, but struggling desperately to catch up! Regards, Eric On 2017-09-21 15:08, Francois Botha wrote: > Hi, > > If I want to submit PRs for enhancements to QuantLibXL, to which repo > should I make it? > > thanks > Francois Botha |
|
From: Francois B. <ig...@gm...> - 2017-09-21 13:09:00
|
Hi, If I want to submit PRs for enhancements to QuantLibXL, to which repo should I make it? thanks Francois Botha |
|
From: Ioannis R. <qua...@de...> - 2017-08-31 20:24:17
|
Hi, Deriscope 2.1.1 has been released so that it stays at sync with the recently released QuantLib version 1.10.1 You may download it from https://www.deriscope.com/freedownload.php Version history available at https://www.deriscope.com/versionhistory.html With regard to any issue you may contact Deriscope at https://www.deriscope.com/support.html Regards, Ioannis --- This email has been checked for viruses by Avast antivirus software. https://www.avast.com/antivirus |
|
From: Luigi B. <lui...@gm...> - 2017-08-31 08:31:39
|
Hello,
QuantLib 1.10.1 has been released and is available for download at
http://quantlib.org/download.shtml. It is a bug-fix release for version
1.10; the (short) list of changes is available at
http://quantlib.org/reference/history.html.
Please post any problems you have with this release to the QuantLib mailing
list (<qua...@li...>), or open a GitHub issue at
https://github.com/lballabio/quantlib/issues.
|
|
From: Luigi B. <lui...@gm...> - 2017-07-25 13:51:45
|
No problems on my side. Luigi On Tue, Jul 25, 2017 at 3:09 PM Fabrice Lecuyer <fab...@gm...> wrote: > Hi all, > > > > I’m looking into building a C# wrapper around the QuantExt project of the > fine people at Quaternion. The best approach would be to transfer the > functionalities I need (mostly rate helpers and indexes absent from > QuantLib) to QuantLib and build interface files within the QuantLib-SWIG > project. > > The people at Quaternion seem fine with that approach: > http://www.opensourcerisk.org/forums/topic/swig-port/#post-6183 > > In order to avoid any friction, I’d like to know if there is any concern > here with that approach so I can get started? > > > > Regards, > > Fabrice > > ------------------------------------------------------------------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, Slashdot.org! http://sdm.link/slashdot > _______________________________________________ > QuantLib-dev mailing list > Qua...@li... > https://lists.sourceforge.net/lists/listinfo/quantlib-dev > |
|
From: Fabrice L. <fab...@gm...> - 2017-07-25 13:06:32
|
Hi all, I'm looking into building a C# wrapper around the QuantExt project of the fine people at Quaternion. The best approach would be to transfer the functionalities I need (mostly rate helpers and indexes absent from QuantLib) to QuantLib and build interface files within the QuantLib-SWIG project. The people at Quaternion seem fine with that approach: http://www.opensourcerisk.org/forums/topic/swig-port/#post-6183 In order to avoid any friction, I'd like to know if there is any concern here with that approach so I can get started? Regards, Fabrice |
|
From: Francois B. <ig...@gm...> - 2017-07-19 14:02:41
|
Sorry, ignore this. I'll just calculate my own adjusted ex-coupon period when required and pass that through. regards Francois Botha On 19 July 2017 at 11:55, Francois Botha <ig...@gm...> wrote: > Hi all, > > In South Africa, bond settlement is T+3 trading days and the ex-coupon > period is 10 calendar days from the UNadjusted coupon payment date. > > So for a trade date of 2017-06-30 the settlement date is 2017-07-05 (over > a weekend). > > One specific bond, the R207, has a coupon payable on 2017-07-15 (a > Saturday), which is adjusted to Monday (BDC = Following). > > The correct ex-coupon date should be 2017-07-15 - 10 calendar days = > 2017-07-05, which means on the trade date of 2017-06-30 that coupon was > already ex. > > However, I see in fixedratecoupon.cpp, line 154+ that the ex-coupon date > is calculated based on the adjusted coupon payment date (line 166). > > Unless there is a better alternative, I'd like to add a parameter to the > ex-coupon details to enable the calculation of the ex-coupon date based on > the UNadjusted coupon payment date. If you are happy with this, I'll submit > a PR, but I just wanted to confirm with you first. > > thanks > Francois Botha > |
|
From: NickG <ng...@bg...> - 2017-07-19 13:18:48
|
Hi Francois, When I added the ex-coupon code, it was primarily with European government bonds in mind. These either have adjusted coupons (eg Italian BTP) or ex-dividend dates (eg UK Gilts) but not both. I wonder if there are any other situations outside of SA, where both coincide. An extra parameter certainly wont hurt. Nick -- View this message in context: http://quantlib.10058.n7.nabble.com/Ex-coupon-adjustment-based-on-unadjusted-coupon-dates-tp18430p18431.html Sent from the quantlib-dev mailing list archive at Nabble.com. |
|
From: Francois B. <ig...@gm...> - 2017-07-19 09:55:31
|
Hi all, In South Africa, bond settlement is T+3 trading days and the ex-coupon period is 10 calendar days from the UNadjusted coupon payment date. So for a trade date of 2017-06-30 the settlement date is 2017-07-05 (over a weekend). One specific bond, the R207, has a coupon payable on 2017-07-15 (a Saturday), which is adjusted to Monday (BDC = Following). The correct ex-coupon date should be 2017-07-15 - 10 calendar days = 2017-07-05, which means on the trade date of 2017-06-30 that coupon was already ex. However, I see in fixedratecoupon.cpp, line 154+ that the ex-coupon date is calculated based on the adjusted coupon payment date (line 166). Unless there is a better alternative, I'd like to add a parameter to the ex-coupon details to enable the calculation of the ex-coupon date based on the UNadjusted coupon payment date. If you are happy with this, I'll submit a PR, but I just wanted to confirm with you first. thanks Francois Botha |
|
From: Hao Z. <ha...@ha...> - 2017-07-13 20:18:47
|
Hi Johannes, Thank you very much. Actually I am working on that right now... There are more than 3000 lines that need to be changed (including the test suites). Regular expression replacement can help, but there is still quite a lot of labor. I think I've replaced about 3/4 of the operator new already, and I should be able to finish replacing all of them by this weekend. Best Regards, Hao On Thursday, July 13, 2017 2:04:22 PM MDT you wrote: > Hi Hao, > > at last I got my new laptop up and running and tried the compile with VisualStudio 2017 - nothing to report, just ran out of the box. Very nice! If you like, I would work on using std::make_shared instead of std::shared_ptr<..>(new …) > > Kind regards, > Johannes > > > On 7. Jul 2017, at 22:50, Hao Zhang via QuantLib-dev <qua...@li...> wrote: > > > > Hi Peter, > > > > I just removed some GCC-specific code, and made it compile and run under Visual Studio 2017. Unfortunately I do not have access to a Mac, thus I cannot do any testing on macOS. If you have time, can you please try compiling the code again on Mac and send me the error message? I suppose Clang is more similar to GCC than to MSVC, thus if MSVC accept the code, making it run with Clang shouldn't be that hard... > > > > P.S. std::cyl_bessel_il is not too difficult to overcome. We already have modifiedBesselFunction_i and modifiedBesselFunction_k implemented in QuantLib. These functions just need to be modified for cases when the arguments become very large. > > > > Thanks and Best Regards, > > > > Hao > > On Friday, July 7, 2017 2:23:00 PM EDT Peter Caspers wrote: > >> Hi Hao, with the standard compiler on OS X El Capitan (Apple clang 8.0.0) there doesnât seem to be much hope to get it built. I also tried the LLVM clang 4.0.1 which is the latest release. That works much better, but there are still issues with C++17 support, some of which are easy to fix (missing template parameters) others not so easy (e.g. there is no support yet for std::cyl_bessel_il). gcc 7 seems to be the better alternative currently. > >> Best Regards > >> Peter > >> > >>> On 05 Jul 2017, at 23:03, Hao Zhang <ha...@ha...> wrote: > >>> > >>> Hi Peter, > >>> > >>> As I mentioned in the GitHub README, I have only tested the project with GCC7 on Linux as of now. I plan to make the project compatible with at least Windows and macOS in the near future, but the code will certainly not able to compile on these other platforms before some major changes are made. > >>> > >>> For your specific error, I think the reason is that with GCC the <limits> header is pulled in by <cmath> included by <ql/mathconstants.hpp>. On other platforms <cmath> may not include <limits>. I will include <limits> explicitly in the code, but I'm sure there are many other error messages remaining to be fixed with a non-GCC compiler. > > > >>> > >>> Hao > >>> On Wednesday, July 5, 2017 2:57:07 PM EDT Peter Caspers wrote: > >>>> Hi Hao, I am trying to build your project (on OSX with clang), I get the following weird error message though. Any idea where this could come from? > >>>> > >>>> make[1]: Entering directory `/Users/peter/QuantLib-noBoost/build' > >>>> make[2]: Entering directory `/Users/peter/QuantLib-noBoost/build' > >>>> make[2]: Leaving directory `/Users/peter/QuantLib-noBoost/build' > >>>> make[2]: Entering directory `/Users/peter/QuantLib-noBoost/build' > >>>> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflow.cpp.o > >>>> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/averagebmacoupon.cpp.o > >>>> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/capflooredcoupon.cpp.o > >>>> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/capflooredinflationcoupon.cpp.o > >>>> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/cashflows.cpp.o > >>>> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/cashflowvectors.cpp.o > >>>> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/cmscoupon.cpp.o > >>>> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/conundrumpricer.cpp.o > >>>> In file included from /Users/peter/QuantLib-noBoost/ql/cashflow.cpp:21: > >>>> In file included from /Users/peter/QuantLib-noBoost/ql/cashflow.hpp:28: > >>>> In file included from /Users/peter/QuantLib-noBoost/ql/event.hpp:28: > >>>> In file included from /Users/peter/QuantLib-noBoost/ql/time/date.hpp:35: > >>>> /Users/peter/QuantLib-noBoost/ql/utilities/null.hpp:58:24: error: no member named 'numeric_limits' in namespace 'std' > >>>> return QL_NULL_REAL; > >>>> ^~~~~~~~~~~~ > >>>> /Users/peter/QuantLib-noBoost/ql/qldefines.hpp:126:39: note: expanded from macro 'QL_NULL_REAL' > >>>> #define QL_NULL_REAL ((std::numeric_limits<float>::max)()) > >>>> ~~~~~^ > >>>> > >>>> > >>>>> On 04 Jul 2017, at 21:28, Hao Zhang <ha...@ha...> wrote: > >>>>> > >>>>> Hi Peter and Luigi, > >>>>> > >>>>> Thank you very much for your support! No, the performance gain is not from > >>>>> MKL, as MKL is not used in the default setting. I am sorry that I cannot > >>>>> pinpoint the exact source of performance gain yet. My hunch is that many > >>>>> Boost modules are quite general, and provide features that's not used by > >>>>> QuantLib. There are also safety checks in Boost that's not relevant to > >>>>> QuantLib. By targeting only QuantLib, I do not need to write many > >>>>> redundant features and safety checks, and avoid some extra instructions. > >>>>> Also the move semantics in modern C++ may also help with speed. I > >>>>> apologize that I cannot answer your question in more detail at this point. > >>>>> > >>>>> Best Regards, > >>>>> > >>>>> Hao > >>>>> On Tuesday, July 4, 2017 11:38:00 AM EDT Peter Caspers wrote: > >>>>>> Hi Hao, that's very interesting. Do you know where the performance gain > >>>>>> is coming from, is it mostly MKL vs. UBLAS? Or are there other drivers > >>>>>> as well? I'd also be interested in the motivation to do this in the > >>>>>> first place, I never thought boost as such was a bad thing? The upgrade > >>>>>> to C++17 is surely nice and makes sense, no doubt. Best Regards > >>>>>> Peter > >>>>>> > >>>>>>> On 04 Jul 2017, at 09:42, Luigi Ballabio <lui...@gm...> > >>>>>>> wrote: > >>>>>>> > >>>>>>> Hello Hao, > >>>>>>> > >>>>>>> that's great news---I've been wondering myself if this was > >>>>>>> possible. I'll be sure to check out your project.> > >>>>>>> I suggest you also post to quantlib-users for greater exposure. > >>>>>>> > >>>>>>> Later, > >>>>>>> > >>>>>>> Luigi > >>>>>>> > >>>>>>> On Tue, Jul 4, 2017 at 5:24 AM Hao Zhang via QuantLib-dev > >>>>>>> <qua...@li... > >>>>>>> <mailto:qua...@li... <mailto:qua...@li...> <mailto:qua...@li... <mailto:qua...@li...>>>> wrote: Hello Everyone, > >>>>>>> > >>>>>>> I have removed all Boost dependency from QuantLib, and ported QuantLib > >>>>>>> to C++17. The code is hosted on GitHub > >>>>>>> (https://github.com/haozhangphd/ <https://github.com/haozhangphd/> <https://github.com/haozhangphd/ <https://github.com/haozhangphd/>> QuantLib-noBoost > >>>>>>> <https://github.com/haozhangphd/QuantLib-noBoost <https://github.com/haozhangphd/QuantLib-noBoost> <https://github.com/haozhangphd/QuantLib-noBoost <https://github.com/haozhangphd/QuantLib-noBoost>>>). > >>>>>>> > >>>>>>> The ported code passes all test cases, and there are significant > >>>>>>> performance improvements in SOME functionalities. Using the QuantLib > >>>>>>> Benchmark Suite, Quantlib-noBoost gives 3425 mflops (running time > >>>>>>> 13.15s), while unmodified QuantLib gives 1440 mflops (running time > >>>>>>> 44.8s) on my Dell Inspiron 13 i7348 laptop, both running under > >>>>>>> identical conditions with identical compiler flags. The total running > >>>>>>> time of the whole test suite is also shorter by ~10% after Boost is > >>>>>>> removed. > >>>>>>> > >>>>>>> I will continue maintaining this project, and regularly backporting > >>>>>>> latest commits from QuantLib. I will also make this project work on > >>>>>>> other compilers besides GCC in the near future. > >>>>>>> > >>>>>>> Best Regards, > >>>>>>> > >>>>>>> Hao > >>>>>>> > >>>>>>> ---------------------------------------------------------------------- > >>>>>>> -------- Check out the vibrant tech community on one of the world's > >>>>>>> most engaging tech sites, Slashdot.org <http://slashdot.org/> <http://slashdot.org/ <http://slashdot.org/>>! http://sdm.link/slashdot <http://sdm.link/slashdot><http://sdm.link/slashdot <http://sdm.link/slashdot>> > >>>>>>> <http://sdm.link/slashdot <http://sdm.link/slashdot> <http://sdm.link/slashdot <http://sdm.link/slashdot>>> > >>>>>>> _______________________________________________ > >>>>>>> QuantLib-dev mailing list > >>>>>>> Qua...@li... <mailto:Qua...@li...> <mailto:Qua...@li... <mailto:Qua...@li...>> > >>>>>>> <mailto:Qua...@li... <mailto:Qua...@li...> <mailto:Qua...@li... <mailto:Qua...@li...>>> > >>>>>>> https://lists.sourceforge.net/lists/listinfo/quantlib-dev <https://lists.sourceforge.net/lists/listinfo/quantlib-dev> <https://lists.sourceforge.net/lists/listinfo/quantlib-dev <https://lists.sourceforge.net/lists/listinfo/quantlib-dev>> > >>>>>>> <https://lists.sourceforge.net/lists/listinfo/quantlib-dev> > >>>>>>> --------------------------------------------------------------------- > >>>>>>> --------- Check out the vibrant tech community on one of the world's > >>>>>>> most engaging tech sites, Slashdot.org! > >>>>>>> http://sdm.link/slashdot_____________________________________________ > >>>>>>> __ QuantLib-dev mailing list > >>>>>>> Qua...@li... > >>>>>>> https://lists.sourceforge.net/lists/listinfo/quantlib-dev > >> > > > > > > > > ------------------------------------------------------------------------------ > > Check out the vibrant tech community on one of the world's most > > engaging tech sites, Slashdot.org! http://sdm.link/slashdot > > _______________________________________________ > > QuantLib-dev mailing list > > Qua...@li... > > https://lists.sourceforge.net/lists/listinfo/quantlib-dev > |
|
From: Peter C. <pca...@gm...> - 2017-07-09 18:28:36
|
Hi Hao, no problem at all, the benchmark results are by far not all that makes the project interesting, it’s great stuff. Best Regards, Peter > On 09 Jul 2017, at 20:11, Hao Zhang <ha...@ha...> wrote: > > Hi Peter, > > Thank you very much for helping. So the earlier benchmark results were clearly wrong. I really apologize for the overstated benchmark results. That was not intentional and I have removed the overstated values from README.md. > > Best Regards, > > Hao > On Sunday, July 9, 2017 8:50:01 AM EDT Peter Caspers wrote: >> Thanks a lot Hao, it also builds on OS X now. I looked a bit closer at the benchmark results and I think there is an issue in the port of the code to catch, causing the first case to be executed n times instead of each of the n original cases once. I’ll send a merge request with a fix. >> Best Regards, Peter >> >>> On 09 Jul 2017, at 01:51, Hao Zhang <ha...@ha...> wrote: >>> >>> Hi Peter, >>> >>> Thank you for your suggestion. The code now compiles and runs under Clang 4 and libc++ 4. >>> >>> Best Regards, >>> >>> Hao >>> On Saturday, July 8, 2017 2:33:17 AM MDT you wrote: >>>> Hi Hao, >>>> >>>> in my opinion cyl_bessel_il is a case where it would be natural to use its precursor in boost for compilers that do not yet support it in C++17 (i.e. have a check in the configure step for this). After a while you could just switch to the std:: version without much ado. But that’s again going back to my original question about avoiding boost for its own sake vs modernising the code to more recent C++ standards. >>>> >>>> For clang you can check out its source code and build the latest release (or even the current master) on Linux yourself. That works well for me on Ubuntu. I guess when your QuantLib-noBoost builds with clang on Linux there won’t be issues on OS X (with the LLVM clang) either. >>>> >>>> I would still be most interested in where the performance gain comes from exactly and if we can benefit from it in QuantLib classic as well, without C++17: It’s easy to say, let’s allow for 11, 14, 17, but there are still places where you have to work with MSVC 2010. In this situation you are happy that QL is still on 03 and you don’t have to backport it or use an older version. I’d be in favour of allowing 11 in QuantLib classic, but ideally maintaining a 03 branch which receives bug fixes, calendar updates etc. >>>> >>>> Best Regards >>>> Peter >>>> >>>>> On 07 Jul 2017, at 22:50, Hao Zhang <ha...@ha...> wrote: >>>>> >>>>> Hi Peter, >>>>> >>>>> I just removed some GCC-specific code, and made it compile and run under Visual Studio 2017. Unfortunately I do not have access to a Mac, thus I cannot do any testing on macOS. If you have time, can you please try compiling the code again on Mac and send me the error message? I suppose Clang is more similar to GCC than to MSVC, thus if MSVC accept the code, making it run with Clang shouldn't be that hard... >>>>> >>>>> P.S. std::cyl_bessel_il is not too difficult to overcome. We already have modifiedBesselFunction_i and modifiedBesselFunction_k implemented in QuantLib. These functions just need to be modified for cases when the arguments become very large. >>>>> >>>>> Thanks and Best Regards, >>>>> >>>>> Hao >>>>> On Friday, July 7, 2017 2:23:00 PM EDT Peter Caspers wrote: >>>>>> Hi Hao, with the standard compiler on OS X El Capitan (Apple clang 8.0.0) there doesnât seem to be much hope to get it built. I also tried the LLVM clang 4.0.1 which is the latest release. That works much better, but there are still issues with C++17 support, some of which are easy to fix (missing template parameters) others not so easy (e.g. there is no support yet for std::cyl_bessel_il). gcc 7 seems to be the better alternative currently. >>>>>> Best Regards >>>>>> Peter >>>>>> >>>>>>> On 05 Jul 2017, at 23:03, Hao Zhang <ha...@ha...> wrote: >>>>>>> >>>>>>> Hi Peter, >>>>>>> >>>>>>> As I mentioned in the GitHub README, I have only tested the project with GCC7 on Linux as of now. I plan to make the project compatible with at least Windows and macOS in the near future, but the code will certainly not able to compile on these other platforms before some major changes are made. >>>>>>> >>>>>>> For your specific error, I think the reason is that with GCC the <limits> header is pulled in by <cmath> included by <ql/mathconstants.hpp>. On other platforms <cmath> may not include <limits>. I will include <limits> explicitly in the code, but I'm sure there are many other error messages remaining to be fixed with a non-GCC compiler. >>>>> >>>>>>> >>>>>>> Hao >>>>>>> On Wednesday, July 5, 2017 2:57:07 PM EDT Peter Caspers wrote: >>>>>>>> Hi Hao, I am trying to build your project (on OSX with clang), I get the following weird error message though. Any idea where this could come from? >>>>>>>> >>>>>>>> make[1]: Entering directory `/Users/peter/QuantLib-noBoost/build' >>>>>>>> make[2]: Entering directory `/Users/peter/QuantLib-noBoost/build' >>>>>>>> make[2]: Leaving directory `/Users/peter/QuantLib-noBoost/build' >>>>>>>> make[2]: Entering directory `/Users/peter/QuantLib-noBoost/build' >>>>>>>> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflow.cpp.o >>>>>>>> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/averagebmacoupon.cpp.o >>>>>>>> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/capflooredcoupon.cpp.o >>>>>>>> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/capflooredinflationcoupon.cpp.o >>>>>>>> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/cashflows.cpp.o >>>>>>>> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/cashflowvectors.cpp.o >>>>>>>> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/cmscoupon.cpp.o >>>>>>>> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/conundrumpricer.cpp.o >>>>>>>> In file included from /Users/peter/QuantLib-noBoost/ql/cashflow.cpp:21: >>>>>>>> In file included from /Users/peter/QuantLib-noBoost/ql/cashflow.hpp:28: >>>>>>>> In file included from /Users/peter/QuantLib-noBoost/ql/event.hpp:28: >>>>>>>> In file included from /Users/peter/QuantLib-noBoost/ql/time/date.hpp:35: >>>>>>>> /Users/peter/QuantLib-noBoost/ql/utilities/null.hpp:58:24: error: no member named 'numeric_limits' in namespace 'std' >>>>>>>> return QL_NULL_REAL; >>>>>>>> ^~~~~~~~~~~~ >>>>>>>> /Users/peter/QuantLib-noBoost/ql/qldefines.hpp:126:39: note: expanded from macro 'QL_NULL_REAL' >>>>>>>> #define QL_NULL_REAL ((std::numeric_limits<float>::max)()) >>>>>>>> ~~~~~^ >>>>>>>> >>>>>>>> >>>>>>>>> On 04 Jul 2017, at 21:28, Hao Zhang <ha...@ha...> wrote: >>>>>>>>> >>>>>>>>> Hi Peter and Luigi, >>>>>>>>> >>>>>>>>> Thank you very much for your support! No, the performance gain is not from >>>>>>>>> MKL, as MKL is not used in the default setting. I am sorry that I cannot >>>>>>>>> pinpoint the exact source of performance gain yet. My hunch is that many >>>>>>>>> Boost modules are quite general, and provide features that's not used by >>>>>>>>> QuantLib. There are also safety checks in Boost that's not relevant to >>>>>>>>> QuantLib. By targeting only QuantLib, I do not need to write many >>>>>>>>> redundant features and safety checks, and avoid some extra instructions. >>>>>>>>> Also the move semantics in modern C++ may also help with speed. I >>>>>>>>> apologize that I cannot answer your question in more detail at this point. >>>>>>>>> >>>>>>>>> Best Regards, >>>>>>>>> >>>>>>>>> Hao >>>>>>>>> On Tuesday, July 4, 2017 11:38:00 AM EDT Peter Caspers wrote: >>>>>>>>>> Hi Hao, that's very interesting. Do you know where the performance gain >>>>>>>>>> is coming from, is it mostly MKL vs. UBLAS? Or are there other drivers >>>>>>>>>> as well? I'd also be interested in the motivation to do this in the >>>>>>>>>> first place, I never thought boost as such was a bad thing? The upgrade >>>>>>>>>> to C++17 is surely nice and makes sense, no doubt. Best Regards >>>>>>>>>> Peter >>>>>>>>>> >>>>>>>>>>> On 04 Jul 2017, at 09:42, Luigi Ballabio <lui...@gm...> >>>>>>>>>>> wrote: >>>>>>>>>>> >>>>>>>>>>> Hello Hao, >>>>>>>>>>> >>>>>>>>>>> that's great news---I've been wondering myself if this was >>>>>>>>>>> possible. I'll be sure to check out your project.> >>>>>>>>>>> I suggest you also post to quantlib-users for greater exposure. >>>>>>>>>>> >>>>>>>>>>> Later, >>>>>>>>>>> >>>>>>>>>>> Luigi >>>>>>>>>>> >>>>>>>>>>> On Tue, Jul 4, 2017 at 5:24 AM Hao Zhang via QuantLib-dev >>>>>>>>>>> <qua...@li... >>>>>>>>>>> <mailto:qua...@li... <mailto:qua...@li...> <mailto:qua...@li... <mailto:qua...@li...>>>> wrote: Hello Everyone, >>>>>>>>>>> >>>>>>>>>>> I have removed all Boost dependency from QuantLib, and ported QuantLib >>>>>>>>>>> to C++17. The code is hosted on GitHub >>>>>>>>>>> (https://github.com/haozhangphd/ <https://github.com/haozhangphd/> <https://github.com/haozhangphd/ <https://github.com/haozhangphd/>> QuantLib-noBoost >>>>>>>>>>> <https://github.com/haozhangphd/QuantLib-noBoost <https://github.com/haozhangphd/QuantLib-noBoost> <https://github.com/haozhangphd/QuantLib-noBoost <https://github.com/haozhangphd/QuantLib-noBoost>>>). >>>>>>>>>>> >>>>>>>>>>> The ported code passes all test cases, and there are significant >>>>>>>>>>> performance improvements in SOME functionalities. Using the QuantLib >>>>>>>>>>> Benchmark Suite, Quantlib-noBoost gives 3425 mflops (running time >>>>>>>>>>> 13.15s), while unmodified QuantLib gives 1440 mflops (running time >>>>>>>>>>> 44.8s) on my Dell Inspiron 13 i7348 laptop, both running under >>>>>>>>>>> identical conditions with identical compiler flags. The total running >>>>>>>>>>> time of the whole test suite is also shorter by ~10% after Boost is >>>>>>>>>>> removed. >>>>>>>>>>> >>>>>>>>>>> I will continue maintaining this project, and regularly backporting >>>>>>>>>>> latest commits from QuantLib. I will also make this project work on >>>>>>>>>>> other compilers besides GCC in the near future. >>>>>>>>>>> >>>>>>>>>>> Best Regards, >>>>>>>>>>> >>>>>>>>>>> Hao >>>>>>>>>>> >>>>>>>>>>> ---------------------------------------------------------------------- >>>>>>>>>>> -------- Check out the vibrant tech community on one of the world's >>>>>>>>>>> most engaging tech sites, Slashdot.org <http://slashdot.org/> <http://slashdot.org/ <http://slashdot.org/>>! http://sdm.link/slashdot <http://sdm.link/slashdot><http://sdm.link/slashdot <http://sdm.link/slashdot>> >>>>>>>>>>> <http://sdm.link/slashdot <http://sdm.link/slashdot> <http://sdm.link/slashdot <http://sdm.link/slashdot>>> >>>>>>>>>>> _______________________________________________ >>>>>>>>>>> QuantLib-dev mailing list >>>>>>>>>>> Qua...@li... <mailto:Qua...@li...> <mailto:Qua...@li... <mailto:Qua...@li...>> >>>>>>>>>>> <mailto:Qua...@li... <mailto:Qua...@li...> <mailto:Qua...@li... <mailto:Qua...@li...>>> >>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/quantlib-dev <https://lists.sourceforge.net/lists/listinfo/quantlib-dev> <https://lists.sourceforge.net/lists/listinfo/quantlib-dev <https://lists.sourceforge.net/lists/listinfo/quantlib-dev>> >>>>>>>>>>> <https://lists.sourceforge.net/lists/listinfo/quantlib-dev> >>>>>>>>>>> --------------------------------------------------------------------- >>>>>>>>>>> --------- Check out the vibrant tech community on one of the world's >>>>>>>>>>> most engaging tech sites, Slashdot.org! >>>>>>>>>>> http://sdm.link/slashdot_____________________________________________ >>>>>>>>>>> __ QuantLib-dev mailing list >>>>>>>>>>> Qua...@li... >>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/quantlib-dev >>>>>> >>>>> >>>>> >>>> >>> >>> >> > > |
|
From: Hao Z. <ha...@ha...> - 2017-07-09 18:12:06
|
Hi Peter, Thank you very much for helping. So the earlier benchmark results were clearly wrong. I really apologize for the overstated benchmark results. That was not intentional and I have removed the overstated values from README.md. Best Regards, Hao On Sunday, July 9, 2017 8:50:01 AM EDT Peter Caspers wrote: > Thanks a lot Hao, it also builds on OS X now. I looked a bit closer at the benchmark results and I think there is an issue in the port of the code to catch, causing the first case to be executed n times instead of each of the n original cases once. I’ll send a merge request with a fix. > Best Regards, Peter > > > On 09 Jul 2017, at 01:51, Hao Zhang <ha...@ha...> wrote: > > > > Hi Peter, > > > > Thank you for your suggestion. The code now compiles and runs under Clang 4 and libc++ 4. > > > > Best Regards, > > > > Hao > > On Saturday, July 8, 2017 2:33:17 AM MDT you wrote: > >> Hi Hao, > >> > >> in my opinion cyl_bessel_il is a case where it would be natural to use its precursor in boost for compilers that do not yet support it in C++17 (i.e. have a check in the configure step for this). After a while you could just switch to the std:: version without much ado. But that’s again going back to my original question about avoiding boost for its own sake vs modernising the code to more recent C++ standards. > >> > >> For clang you can check out its source code and build the latest release (or even the current master) on Linux yourself. That works well for me on Ubuntu. I guess when your QuantLib-noBoost builds with clang on Linux there won’t be issues on OS X (with the LLVM clang) either. > >> > >> I would still be most interested in where the performance gain comes from exactly and if we can benefit from it in QuantLib classic as well, without C++17: It’s easy to say, let’s allow for 11, 14, 17, but there are still places where you have to work with MSVC 2010. In this situation you are happy that QL is still on 03 and you don’t have to backport it or use an older version. I’d be in favour of allowing 11 in QuantLib classic, but ideally maintaining a 03 branch which receives bug fixes, calendar updates etc. > >> > >> Best Regards > >> Peter > >> > >>> On 07 Jul 2017, at 22:50, Hao Zhang <ha...@ha...> wrote: > >>> > >>> Hi Peter, > >>> > >>> I just removed some GCC-specific code, and made it compile and run under Visual Studio 2017. Unfortunately I do not have access to a Mac, thus I cannot do any testing on macOS. If you have time, can you please try compiling the code again on Mac and send me the error message? I suppose Clang is more similar to GCC than to MSVC, thus if MSVC accept the code, making it run with Clang shouldn't be that hard... > >>> > >>> P.S. std::cyl_bessel_il is not too difficult to overcome. We already have modifiedBesselFunction_i and modifiedBesselFunction_k implemented in QuantLib. These functions just need to be modified for cases when the arguments become very large. > >>> > >>> Thanks and Best Regards, > >>> > >>> Hao > >>> On Friday, July 7, 2017 2:23:00 PM EDT Peter Caspers wrote: > >>>> Hi Hao, with the standard compiler on OS X El Capitan (Apple clang 8.0.0) there doesnât seem to be much hope to get it built. I also tried the LLVM clang 4.0.1 which is the latest release. That works much better, but there are still issues with C++17 support, some of which are easy to fix (missing template parameters) others not so easy (e.g. there is no support yet for std::cyl_bessel_il). gcc 7 seems to be the better alternative currently. > >>>> Best Regards > >>>> Peter > >>>> > >>>>> On 05 Jul 2017, at 23:03, Hao Zhang <ha...@ha...> wrote: > >>>>> > >>>>> Hi Peter, > >>>>> > >>>>> As I mentioned in the GitHub README, I have only tested the project with GCC7 on Linux as of now. I plan to make the project compatible with at least Windows and macOS in the near future, but the code will certainly not able to compile on these other platforms before some major changes are made. > >>>>> > >>>>> For your specific error, I think the reason is that with GCC the <limits> header is pulled in by <cmath> included by <ql/mathconstants.hpp>. On other platforms <cmath> may not include <limits>. I will include <limits> explicitly in the code, but I'm sure there are many other error messages remaining to be fixed with a non-GCC compiler. > >>> > >>>>> > >>>>> Hao > >>>>> On Wednesday, July 5, 2017 2:57:07 PM EDT Peter Caspers wrote: > >>>>>> Hi Hao, I am trying to build your project (on OSX with clang), I get the following weird error message though. Any idea where this could come from? > >>>>>> > >>>>>> make[1]: Entering directory `/Users/peter/QuantLib-noBoost/build' > >>>>>> make[2]: Entering directory `/Users/peter/QuantLib-noBoost/build' > >>>>>> make[2]: Leaving directory `/Users/peter/QuantLib-noBoost/build' > >>>>>> make[2]: Entering directory `/Users/peter/QuantLib-noBoost/build' > >>>>>> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflow.cpp.o > >>>>>> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/averagebmacoupon.cpp.o > >>>>>> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/capflooredcoupon.cpp.o > >>>>>> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/capflooredinflationcoupon.cpp.o > >>>>>> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/cashflows.cpp.o > >>>>>> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/cashflowvectors.cpp.o > >>>>>> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/cmscoupon.cpp.o > >>>>>> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/conundrumpricer.cpp.o > >>>>>> In file included from /Users/peter/QuantLib-noBoost/ql/cashflow.cpp:21: > >>>>>> In file included from /Users/peter/QuantLib-noBoost/ql/cashflow.hpp:28: > >>>>>> In file included from /Users/peter/QuantLib-noBoost/ql/event.hpp:28: > >>>>>> In file included from /Users/peter/QuantLib-noBoost/ql/time/date.hpp:35: > >>>>>> /Users/peter/QuantLib-noBoost/ql/utilities/null.hpp:58:24: error: no member named 'numeric_limits' in namespace 'std' > >>>>>> return QL_NULL_REAL; > >>>>>> ^~~~~~~~~~~~ > >>>>>> /Users/peter/QuantLib-noBoost/ql/qldefines.hpp:126:39: note: expanded from macro 'QL_NULL_REAL' > >>>>>> #define QL_NULL_REAL ((std::numeric_limits<float>::max)()) > >>>>>> ~~~~~^ > >>>>>> > >>>>>> > >>>>>>> On 04 Jul 2017, at 21:28, Hao Zhang <ha...@ha...> wrote: > >>>>>>> > >>>>>>> Hi Peter and Luigi, > >>>>>>> > >>>>>>> Thank you very much for your support! No, the performance gain is not from > >>>>>>> MKL, as MKL is not used in the default setting. I am sorry that I cannot > >>>>>>> pinpoint the exact source of performance gain yet. My hunch is that many > >>>>>>> Boost modules are quite general, and provide features that's not used by > >>>>>>> QuantLib. There are also safety checks in Boost that's not relevant to > >>>>>>> QuantLib. By targeting only QuantLib, I do not need to write many > >>>>>>> redundant features and safety checks, and avoid some extra instructions. > >>>>>>> Also the move semantics in modern C++ may also help with speed. I > >>>>>>> apologize that I cannot answer your question in more detail at this point. > >>>>>>> > >>>>>>> Best Regards, > >>>>>>> > >>>>>>> Hao > >>>>>>> On Tuesday, July 4, 2017 11:38:00 AM EDT Peter Caspers wrote: > >>>>>>>> Hi Hao, that's very interesting. Do you know where the performance gain > >>>>>>>> is coming from, is it mostly MKL vs. UBLAS? Or are there other drivers > >>>>>>>> as well? I'd also be interested in the motivation to do this in the > >>>>>>>> first place, I never thought boost as such was a bad thing? The upgrade > >>>>>>>> to C++17 is surely nice and makes sense, no doubt. Best Regards > >>>>>>>> Peter > >>>>>>>> > >>>>>>>>> On 04 Jul 2017, at 09:42, Luigi Ballabio <lui...@gm...> > >>>>>>>>> wrote: > >>>>>>>>> > >>>>>>>>> Hello Hao, > >>>>>>>>> > >>>>>>>>> that's great news---I've been wondering myself if this was > >>>>>>>>> possible. I'll be sure to check out your project.> > >>>>>>>>> I suggest you also post to quantlib-users for greater exposure. > >>>>>>>>> > >>>>>>>>> Later, > >>>>>>>>> > >>>>>>>>> Luigi > >>>>>>>>> > >>>>>>>>> On Tue, Jul 4, 2017 at 5:24 AM Hao Zhang via QuantLib-dev > >>>>>>>>> <qua...@li... > >>>>>>>>> <mailto:qua...@li... <mailto:qua...@li...> <mailto:qua...@li... <mailto:qua...@li...>>>> wrote: Hello Everyone, > >>>>>>>>> > >>>>>>>>> I have removed all Boost dependency from QuantLib, and ported QuantLib > >>>>>>>>> to C++17. The code is hosted on GitHub > >>>>>>>>> (https://github.com/haozhangphd/ <https://github.com/haozhangphd/> <https://github.com/haozhangphd/ <https://github.com/haozhangphd/>> QuantLib-noBoost > >>>>>>>>> <https://github.com/haozhangphd/QuantLib-noBoost <https://github.com/haozhangphd/QuantLib-noBoost> <https://github.com/haozhangphd/QuantLib-noBoost <https://github.com/haozhangphd/QuantLib-noBoost>>>). > >>>>>>>>> > >>>>>>>>> The ported code passes all test cases, and there are significant > >>>>>>>>> performance improvements in SOME functionalities. Using the QuantLib > >>>>>>>>> Benchmark Suite, Quantlib-noBoost gives 3425 mflops (running time > >>>>>>>>> 13.15s), while unmodified QuantLib gives 1440 mflops (running time > >>>>>>>>> 44.8s) on my Dell Inspiron 13 i7348 laptop, both running under > >>>>>>>>> identical conditions with identical compiler flags. The total running > >>>>>>>>> time of the whole test suite is also shorter by ~10% after Boost is > >>>>>>>>> removed. > >>>>>>>>> > >>>>>>>>> I will continue maintaining this project, and regularly backporting > >>>>>>>>> latest commits from QuantLib. I will also make this project work on > >>>>>>>>> other compilers besides GCC in the near future. > >>>>>>>>> > >>>>>>>>> Best Regards, > >>>>>>>>> > >>>>>>>>> Hao > >>>>>>>>> > >>>>>>>>> ---------------------------------------------------------------------- > >>>>>>>>> -------- Check out the vibrant tech community on one of the world's > >>>>>>>>> most engaging tech sites, Slashdot.org <http://slashdot.org/> <http://slashdot.org/ <http://slashdot.org/>>! http://sdm.link/slashdot <http://sdm.link/slashdot><http://sdm.link/slashdot <http://sdm.link/slashdot>> > >>>>>>>>> <http://sdm.link/slashdot <http://sdm.link/slashdot> <http://sdm.link/slashdot <http://sdm.link/slashdot>>> > >>>>>>>>> _______________________________________________ > >>>>>>>>> QuantLib-dev mailing list > >>>>>>>>> Qua...@li... <mailto:Qua...@li...> <mailto:Qua...@li... <mailto:Qua...@li...>> > >>>>>>>>> <mailto:Qua...@li... <mailto:Qua...@li...> <mailto:Qua...@li... <mailto:Qua...@li...>>> > >>>>>>>>> https://lists.sourceforge.net/lists/listinfo/quantlib-dev <https://lists.sourceforge.net/lists/listinfo/quantlib-dev> <https://lists.sourceforge.net/lists/listinfo/quantlib-dev <https://lists.sourceforge.net/lists/listinfo/quantlib-dev>> > >>>>>>>>> <https://lists.sourceforge.net/lists/listinfo/quantlib-dev> > >>>>>>>>> --------------------------------------------------------------------- > >>>>>>>>> --------- Check out the vibrant tech community on one of the world's > >>>>>>>>> most engaging tech sites, Slashdot.org! > >>>>>>>>> http://sdm.link/slashdot_____________________________________________ > >>>>>>>>> __ QuantLib-dev mailing list > >>>>>>>>> Qua...@li... > >>>>>>>>> https://lists.sourceforge.net/lists/listinfo/quantlib-dev > >>>> > >>> > >>> > >> > > > > > |
|
From: Peter C. <pca...@gm...> - 2017-07-09 12:50:10
|
Thanks a lot Hao, it also builds on OS X now. I looked a bit closer at the benchmark results and I think there is an issue in the port of the code to catch, causing the first case to be executed n times instead of each of the n original cases once. I’ll send a merge request with a fix. Best Regards, Peter > On 09 Jul 2017, at 01:51, Hao Zhang <ha...@ha...> wrote: > > Hi Peter, > > Thank you for your suggestion. The code now compiles and runs under Clang 4 and libc++ 4. > > Best Regards, > > Hao > On Saturday, July 8, 2017 2:33:17 AM MDT you wrote: >> Hi Hao, >> >> in my opinion cyl_bessel_il is a case where it would be natural to use its precursor in boost for compilers that do not yet support it in C++17 (i.e. have a check in the configure step for this). After a while you could just switch to the std:: version without much ado. But that’s again going back to my original question about avoiding boost for its own sake vs modernising the code to more recent C++ standards. >> >> For clang you can check out its source code and build the latest release (or even the current master) on Linux yourself. That works well for me on Ubuntu. I guess when your QuantLib-noBoost builds with clang on Linux there won’t be issues on OS X (with the LLVM clang) either. >> >> I would still be most interested in where the performance gain comes from exactly and if we can benefit from it in QuantLib classic as well, without C++17: It’s easy to say, let’s allow for 11, 14, 17, but there are still places where you have to work with MSVC 2010. In this situation you are happy that QL is still on 03 and you don’t have to backport it or use an older version. I’d be in favour of allowing 11 in QuantLib classic, but ideally maintaining a 03 branch which receives bug fixes, calendar updates etc. >> >> Best Regards >> Peter >> >>> On 07 Jul 2017, at 22:50, Hao Zhang <ha...@ha...> wrote: >>> >>> Hi Peter, >>> >>> I just removed some GCC-specific code, and made it compile and run under Visual Studio 2017. Unfortunately I do not have access to a Mac, thus I cannot do any testing on macOS. If you have time, can you please try compiling the code again on Mac and send me the error message? I suppose Clang is more similar to GCC than to MSVC, thus if MSVC accept the code, making it run with Clang shouldn't be that hard... >>> >>> P.S. std::cyl_bessel_il is not too difficult to overcome. We already have modifiedBesselFunction_i and modifiedBesselFunction_k implemented in QuantLib. These functions just need to be modified for cases when the arguments become very large. >>> >>> Thanks and Best Regards, >>> >>> Hao >>> On Friday, July 7, 2017 2:23:00 PM EDT Peter Caspers wrote: >>>> Hi Hao, with the standard compiler on OS X El Capitan (Apple clang 8.0.0) there doesnât seem to be much hope to get it built. I also tried the LLVM clang 4.0.1 which is the latest release. That works much better, but there are still issues with C++17 support, some of which are easy to fix (missing template parameters) others not so easy (e.g. there is no support yet for std::cyl_bessel_il). gcc 7 seems to be the better alternative currently. >>>> Best Regards >>>> Peter >>>> >>>>> On 05 Jul 2017, at 23:03, Hao Zhang <ha...@ha...> wrote: >>>>> >>>>> Hi Peter, >>>>> >>>>> As I mentioned in the GitHub README, I have only tested the project with GCC7 on Linux as of now. I plan to make the project compatible with at least Windows and macOS in the near future, but the code will certainly not able to compile on these other platforms before some major changes are made. >>>>> >>>>> For your specific error, I think the reason is that with GCC the <limits> header is pulled in by <cmath> included by <ql/mathconstants.hpp>. On other platforms <cmath> may not include <limits>. I will include <limits> explicitly in the code, but I'm sure there are many other error messages remaining to be fixed with a non-GCC compiler. >>> >>>>> >>>>> Hao >>>>> On Wednesday, July 5, 2017 2:57:07 PM EDT Peter Caspers wrote: >>>>>> Hi Hao, I am trying to build your project (on OSX with clang), I get the following weird error message though. Any idea where this could come from? >>>>>> >>>>>> make[1]: Entering directory `/Users/peter/QuantLib-noBoost/build' >>>>>> make[2]: Entering directory `/Users/peter/QuantLib-noBoost/build' >>>>>> make[2]: Leaving directory `/Users/peter/QuantLib-noBoost/build' >>>>>> make[2]: Entering directory `/Users/peter/QuantLib-noBoost/build' >>>>>> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflow.cpp.o >>>>>> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/averagebmacoupon.cpp.o >>>>>> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/capflooredcoupon.cpp.o >>>>>> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/capflooredinflationcoupon.cpp.o >>>>>> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/cashflows.cpp.o >>>>>> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/cashflowvectors.cpp.o >>>>>> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/cmscoupon.cpp.o >>>>>> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/conundrumpricer.cpp.o >>>>>> In file included from /Users/peter/QuantLib-noBoost/ql/cashflow.cpp:21: >>>>>> In file included from /Users/peter/QuantLib-noBoost/ql/cashflow.hpp:28: >>>>>> In file included from /Users/peter/QuantLib-noBoost/ql/event.hpp:28: >>>>>> In file included from /Users/peter/QuantLib-noBoost/ql/time/date.hpp:35: >>>>>> /Users/peter/QuantLib-noBoost/ql/utilities/null.hpp:58:24: error: no member named 'numeric_limits' in namespace 'std' >>>>>> return QL_NULL_REAL; >>>>>> ^~~~~~~~~~~~ >>>>>> /Users/peter/QuantLib-noBoost/ql/qldefines.hpp:126:39: note: expanded from macro 'QL_NULL_REAL' >>>>>> #define QL_NULL_REAL ((std::numeric_limits<float>::max)()) >>>>>> ~~~~~^ >>>>>> >>>>>> >>>>>>> On 04 Jul 2017, at 21:28, Hao Zhang <ha...@ha...> wrote: >>>>>>> >>>>>>> Hi Peter and Luigi, >>>>>>> >>>>>>> Thank you very much for your support! No, the performance gain is not from >>>>>>> MKL, as MKL is not used in the default setting. I am sorry that I cannot >>>>>>> pinpoint the exact source of performance gain yet. My hunch is that many >>>>>>> Boost modules are quite general, and provide features that's not used by >>>>>>> QuantLib. There are also safety checks in Boost that's not relevant to >>>>>>> QuantLib. By targeting only QuantLib, I do not need to write many >>>>>>> redundant features and safety checks, and avoid some extra instructions. >>>>>>> Also the move semantics in modern C++ may also help with speed. I >>>>>>> apologize that I cannot answer your question in more detail at this point. >>>>>>> >>>>>>> Best Regards, >>>>>>> >>>>>>> Hao >>>>>>> On Tuesday, July 4, 2017 11:38:00 AM EDT Peter Caspers wrote: >>>>>>>> Hi Hao, that's very interesting. Do you know where the performance gain >>>>>>>> is coming from, is it mostly MKL vs. UBLAS? Or are there other drivers >>>>>>>> as well? I'd also be interested in the motivation to do this in the >>>>>>>> first place, I never thought boost as such was a bad thing? The upgrade >>>>>>>> to C++17 is surely nice and makes sense, no doubt. Best Regards >>>>>>>> Peter >>>>>>>> >>>>>>>>> On 04 Jul 2017, at 09:42, Luigi Ballabio <lui...@gm...> >>>>>>>>> wrote: >>>>>>>>> >>>>>>>>> Hello Hao, >>>>>>>>> >>>>>>>>> that's great news---I've been wondering myself if this was >>>>>>>>> possible. I'll be sure to check out your project.> >>>>>>>>> I suggest you also post to quantlib-users for greater exposure. >>>>>>>>> >>>>>>>>> Later, >>>>>>>>> >>>>>>>>> Luigi >>>>>>>>> >>>>>>>>> On Tue, Jul 4, 2017 at 5:24 AM Hao Zhang via QuantLib-dev >>>>>>>>> <qua...@li... >>>>>>>>> <mailto:qua...@li... <mailto:qua...@li...> <mailto:qua...@li... <mailto:qua...@li...>>>> wrote: Hello Everyone, >>>>>>>>> >>>>>>>>> I have removed all Boost dependency from QuantLib, and ported QuantLib >>>>>>>>> to C++17. The code is hosted on GitHub >>>>>>>>> (https://github.com/haozhangphd/ <https://github.com/haozhangphd/> <https://github.com/haozhangphd/ <https://github.com/haozhangphd/>> QuantLib-noBoost >>>>>>>>> <https://github.com/haozhangphd/QuantLib-noBoost <https://github.com/haozhangphd/QuantLib-noBoost> <https://github.com/haozhangphd/QuantLib-noBoost <https://github.com/haozhangphd/QuantLib-noBoost>>>). >>>>>>>>> >>>>>>>>> The ported code passes all test cases, and there are significant >>>>>>>>> performance improvements in SOME functionalities. Using the QuantLib >>>>>>>>> Benchmark Suite, Quantlib-noBoost gives 3425 mflops (running time >>>>>>>>> 13.15s), while unmodified QuantLib gives 1440 mflops (running time >>>>>>>>> 44.8s) on my Dell Inspiron 13 i7348 laptop, both running under >>>>>>>>> identical conditions with identical compiler flags. The total running >>>>>>>>> time of the whole test suite is also shorter by ~10% after Boost is >>>>>>>>> removed. >>>>>>>>> >>>>>>>>> I will continue maintaining this project, and regularly backporting >>>>>>>>> latest commits from QuantLib. I will also make this project work on >>>>>>>>> other compilers besides GCC in the near future. >>>>>>>>> >>>>>>>>> Best Regards, >>>>>>>>> >>>>>>>>> Hao >>>>>>>>> >>>>>>>>> ---------------------------------------------------------------------- >>>>>>>>> -------- Check out the vibrant tech community on one of the world's >>>>>>>>> most engaging tech sites, Slashdot.org <http://slashdot.org/> <http://slashdot.org/ <http://slashdot.org/>>! http://sdm.link/slashdot <http://sdm.link/slashdot><http://sdm.link/slashdot <http://sdm.link/slashdot>> >>>>>>>>> <http://sdm.link/slashdot <http://sdm.link/slashdot> <http://sdm.link/slashdot <http://sdm.link/slashdot>>> >>>>>>>>> _______________________________________________ >>>>>>>>> QuantLib-dev mailing list >>>>>>>>> Qua...@li... <mailto:Qua...@li...> <mailto:Qua...@li... <mailto:Qua...@li...>> >>>>>>>>> <mailto:Qua...@li... <mailto:Qua...@li...> <mailto:Qua...@li... <mailto:Qua...@li...>>> >>>>>>>>> https://lists.sourceforge.net/lists/listinfo/quantlib-dev <https://lists.sourceforge.net/lists/listinfo/quantlib-dev> <https://lists.sourceforge.net/lists/listinfo/quantlib-dev <https://lists.sourceforge.net/lists/listinfo/quantlib-dev>> >>>>>>>>> <https://lists.sourceforge.net/lists/listinfo/quantlib-dev> >>>>>>>>> --------------------------------------------------------------------- >>>>>>>>> --------- Check out the vibrant tech community on one of the world's >>>>>>>>> most engaging tech sites, Slashdot.org! >>>>>>>>> http://sdm.link/slashdot_____________________________________________ >>>>>>>>> __ QuantLib-dev mailing list >>>>>>>>> Qua...@li... >>>>>>>>> https://lists.sourceforge.net/lists/listinfo/quantlib-dev >>>> >>> >>> >> > > |
|
From: Hao Z. <ha...@ha...> - 2017-07-08 23:52:05
|
Hi Peter, Thank you for your suggestion. The code now compiles and runs under Clang 4 and libc++ 4. Best Regards, Hao On Saturday, July 8, 2017 2:33:17 AM MDT you wrote: > Hi Hao, > > in my opinion cyl_bessel_il is a case where it would be natural to use its precursor in boost for compilers that do not yet support it in C++17 (i.e. have a check in the configure step for this). After a while you could just switch to the std:: version without much ado. But that’s again going back to my original question about avoiding boost for its own sake vs modernising the code to more recent C++ standards. > > For clang you can check out its source code and build the latest release (or even the current master) on Linux yourself. That works well for me on Ubuntu. I guess when your QuantLib-noBoost builds with clang on Linux there won’t be issues on OS X (with the LLVM clang) either. > > I would still be most interested in where the performance gain comes from exactly and if we can benefit from it in QuantLib classic as well, without C++17: It’s easy to say, let’s allow for 11, 14, 17, but there are still places where you have to work with MSVC 2010. In this situation you are happy that QL is still on 03 and you don’t have to backport it or use an older version. I’d be in favour of allowing 11 in QuantLib classic, but ideally maintaining a 03 branch which receives bug fixes, calendar updates etc. > > Best Regards > Peter > > > On 07 Jul 2017, at 22:50, Hao Zhang <ha...@ha...> wrote: > > > > Hi Peter, > > > > I just removed some GCC-specific code, and made it compile and run under Visual Studio 2017. Unfortunately I do not have access to a Mac, thus I cannot do any testing on macOS. If you have time, can you please try compiling the code again on Mac and send me the error message? I suppose Clang is more similar to GCC than to MSVC, thus if MSVC accept the code, making it run with Clang shouldn't be that hard... > > > > P.S. std::cyl_bessel_il is not too difficult to overcome. We already have modifiedBesselFunction_i and modifiedBesselFunction_k implemented in QuantLib. These functions just need to be modified for cases when the arguments become very large. > > > > Thanks and Best Regards, > > > > Hao > > On Friday, July 7, 2017 2:23:00 PM EDT Peter Caspers wrote: > >> Hi Hao, with the standard compiler on OS X El Capitan (Apple clang 8.0.0) there doesnât seem to be much hope to get it built. I also tried the LLVM clang 4.0.1 which is the latest release. That works much better, but there are still issues with C++17 support, some of which are easy to fix (missing template parameters) others not so easy (e.g. there is no support yet for std::cyl_bessel_il). gcc 7 seems to be the better alternative currently. > >> Best Regards > >> Peter > >> > >>> On 05 Jul 2017, at 23:03, Hao Zhang <ha...@ha...> wrote: > >>> > >>> Hi Peter, > >>> > >>> As I mentioned in the GitHub README, I have only tested the project with GCC7 on Linux as of now. I plan to make the project compatible with at least Windows and macOS in the near future, but the code will certainly not able to compile on these other platforms before some major changes are made. > >>> > >>> For your specific error, I think the reason is that with GCC the <limits> header is pulled in by <cmath> included by <ql/mathconstants.hpp>. On other platforms <cmath> may not include <limits>. I will include <limits> explicitly in the code, but I'm sure there are many other error messages remaining to be fixed with a non-GCC compiler. > > > >>> > >>> Hao > >>> On Wednesday, July 5, 2017 2:57:07 PM EDT Peter Caspers wrote: > >>>> Hi Hao, I am trying to build your project (on OSX with clang), I get the following weird error message though. Any idea where this could come from? > >>>> > >>>> make[1]: Entering directory `/Users/peter/QuantLib-noBoost/build' > >>>> make[2]: Entering directory `/Users/peter/QuantLib-noBoost/build' > >>>> make[2]: Leaving directory `/Users/peter/QuantLib-noBoost/build' > >>>> make[2]: Entering directory `/Users/peter/QuantLib-noBoost/build' > >>>> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflow.cpp.o > >>>> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/averagebmacoupon.cpp.o > >>>> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/capflooredcoupon.cpp.o > >>>> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/capflooredinflationcoupon.cpp.o > >>>> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/cashflows.cpp.o > >>>> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/cashflowvectors.cpp.o > >>>> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/cmscoupon.cpp.o > >>>> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/conundrumpricer.cpp.o > >>>> In file included from /Users/peter/QuantLib-noBoost/ql/cashflow.cpp:21: > >>>> In file included from /Users/peter/QuantLib-noBoost/ql/cashflow.hpp:28: > >>>> In file included from /Users/peter/QuantLib-noBoost/ql/event.hpp:28: > >>>> In file included from /Users/peter/QuantLib-noBoost/ql/time/date.hpp:35: > >>>> /Users/peter/QuantLib-noBoost/ql/utilities/null.hpp:58:24: error: no member named 'numeric_limits' in namespace 'std' > >>>> return QL_NULL_REAL; > >>>> ^~~~~~~~~~~~ > >>>> /Users/peter/QuantLib-noBoost/ql/qldefines.hpp:126:39: note: expanded from macro 'QL_NULL_REAL' > >>>> #define QL_NULL_REAL ((std::numeric_limits<float>::max)()) > >>>> ~~~~~^ > >>>> > >>>> > >>>>> On 04 Jul 2017, at 21:28, Hao Zhang <ha...@ha...> wrote: > >>>>> > >>>>> Hi Peter and Luigi, > >>>>> > >>>>> Thank you very much for your support! No, the performance gain is not from > >>>>> MKL, as MKL is not used in the default setting. I am sorry that I cannot > >>>>> pinpoint the exact source of performance gain yet. My hunch is that many > >>>>> Boost modules are quite general, and provide features that's not used by > >>>>> QuantLib. There are also safety checks in Boost that's not relevant to > >>>>> QuantLib. By targeting only QuantLib, I do not need to write many > >>>>> redundant features and safety checks, and avoid some extra instructions. > >>>>> Also the move semantics in modern C++ may also help with speed. I > >>>>> apologize that I cannot answer your question in more detail at this point. > >>>>> > >>>>> Best Regards, > >>>>> > >>>>> Hao > >>>>> On Tuesday, July 4, 2017 11:38:00 AM EDT Peter Caspers wrote: > >>>>>> Hi Hao, that's very interesting. Do you know where the performance gain > >>>>>> is coming from, is it mostly MKL vs. UBLAS? Or are there other drivers > >>>>>> as well? I'd also be interested in the motivation to do this in the > >>>>>> first place, I never thought boost as such was a bad thing? The upgrade > >>>>>> to C++17 is surely nice and makes sense, no doubt. Best Regards > >>>>>> Peter > >>>>>> > >>>>>>> On 04 Jul 2017, at 09:42, Luigi Ballabio <lui...@gm...> > >>>>>>> wrote: > >>>>>>> > >>>>>>> Hello Hao, > >>>>>>> > >>>>>>> that's great news---I've been wondering myself if this was > >>>>>>> possible. I'll be sure to check out your project.> > >>>>>>> I suggest you also post to quantlib-users for greater exposure. > >>>>>>> > >>>>>>> Later, > >>>>>>> > >>>>>>> Luigi > >>>>>>> > >>>>>>> On Tue, Jul 4, 2017 at 5:24 AM Hao Zhang via QuantLib-dev > >>>>>>> <qua...@li... > >>>>>>> <mailto:qua...@li... <mailto:qua...@li...> <mailto:qua...@li... <mailto:qua...@li...>>>> wrote: Hello Everyone, > >>>>>>> > >>>>>>> I have removed all Boost dependency from QuantLib, and ported QuantLib > >>>>>>> to C++17. The code is hosted on GitHub > >>>>>>> (https://github.com/haozhangphd/ <https://github.com/haozhangphd/> <https://github.com/haozhangphd/ <https://github.com/haozhangphd/>> QuantLib-noBoost > >>>>>>> <https://github.com/haozhangphd/QuantLib-noBoost <https://github.com/haozhangphd/QuantLib-noBoost> <https://github.com/haozhangphd/QuantLib-noBoost <https://github.com/haozhangphd/QuantLib-noBoost>>>). > >>>>>>> > >>>>>>> The ported code passes all test cases, and there are significant > >>>>>>> performance improvements in SOME functionalities. Using the QuantLib > >>>>>>> Benchmark Suite, Quantlib-noBoost gives 3425 mflops (running time > >>>>>>> 13.15s), while unmodified QuantLib gives 1440 mflops (running time > >>>>>>> 44.8s) on my Dell Inspiron 13 i7348 laptop, both running under > >>>>>>> identical conditions with identical compiler flags. The total running > >>>>>>> time of the whole test suite is also shorter by ~10% after Boost is > >>>>>>> removed. > >>>>>>> > >>>>>>> I will continue maintaining this project, and regularly backporting > >>>>>>> latest commits from QuantLib. I will also make this project work on > >>>>>>> other compilers besides GCC in the near future. > >>>>>>> > >>>>>>> Best Regards, > >>>>>>> > >>>>>>> Hao > >>>>>>> > >>>>>>> ---------------------------------------------------------------------- > >>>>>>> -------- Check out the vibrant tech community on one of the world's > >>>>>>> most engaging tech sites, Slashdot.org <http://slashdot.org/> <http://slashdot.org/ <http://slashdot.org/>>! http://sdm.link/slashdot <http://sdm.link/slashdot><http://sdm.link/slashdot <http://sdm.link/slashdot>> > >>>>>>> <http://sdm.link/slashdot <http://sdm.link/slashdot> <http://sdm.link/slashdot <http://sdm.link/slashdot>>> > >>>>>>> _______________________________________________ > >>>>>>> QuantLib-dev mailing list > >>>>>>> Qua...@li... <mailto:Qua...@li...> <mailto:Qua...@li... <mailto:Qua...@li...>> > >>>>>>> <mailto:Qua...@li... <mailto:Qua...@li...> <mailto:Qua...@li... <mailto:Qua...@li...>>> > >>>>>>> https://lists.sourceforge.net/lists/listinfo/quantlib-dev <https://lists.sourceforge.net/lists/listinfo/quantlib-dev> <https://lists.sourceforge.net/lists/listinfo/quantlib-dev <https://lists.sourceforge.net/lists/listinfo/quantlib-dev>> > >>>>>>> <https://lists.sourceforge.net/lists/listinfo/quantlib-dev> > >>>>>>> --------------------------------------------------------------------- > >>>>>>> --------- Check out the vibrant tech community on one of the world's > >>>>>>> most engaging tech sites, Slashdot.org! > >>>>>>> http://sdm.link/slashdot_____________________________________________ > >>>>>>> __ QuantLib-dev mailing list > >>>>>>> Qua...@li... > >>>>>>> https://lists.sourceforge.net/lists/listinfo/quantlib-dev > >> > > > > > |
|
From: Peter C. <pca...@gm...> - 2017-07-08 08:33:26
|
Hi Hao, in my opinion cyl_bessel_il is a case where it would be natural to use its precursor in boost for compilers that do not yet support it in C++17 (i.e. have a check in the configure step for this). After a while you could just switch to the std:: version without much ado. But that’s again going back to my original question about avoiding boost for its own sake vs modernising the code to more recent C++ standards. For clang you can check out its source code and build the latest release (or even the current master) on Linux yourself. That works well for me on Ubuntu. I guess when your QuantLib-noBoost builds with clang on Linux there won’t be issues on OS X (with the LLVM clang) either. I would still be most interested in where the performance gain comes from exactly and if we can benefit from it in QuantLib classic as well, without C++17: It’s easy to say, let’s allow for 11, 14, 17, but there are still places where you have to work with MSVC 2010. In this situation you are happy that QL is still on 03 and you don’t have to backport it or use an older version. I’d be in favour of allowing 11 in QuantLib classic, but ideally maintaining a 03 branch which receives bug fixes, calendar updates etc. Best Regards Peter > On 07 Jul 2017, at 22:50, Hao Zhang <ha...@ha...> wrote: > > Hi Peter, > > I just removed some GCC-specific code, and made it compile and run under Visual Studio 2017. Unfortunately I do not have access to a Mac, thus I cannot do any testing on macOS. If you have time, can you please try compiling the code again on Mac and send me the error message? I suppose Clang is more similar to GCC than to MSVC, thus if MSVC accept the code, making it run with Clang shouldn't be that hard... > > P.S. std::cyl_bessel_il is not too difficult to overcome. We already have modifiedBesselFunction_i and modifiedBesselFunction_k implemented in QuantLib. These functions just need to be modified for cases when the arguments become very large. > > Thanks and Best Regards, > > Hao > On Friday, July 7, 2017 2:23:00 PM EDT Peter Caspers wrote: >> Hi Hao, with the standard compiler on OS X El Capitan (Apple clang 8.0.0) there doesnât seem to be much hope to get it built. I also tried the LLVM clang 4.0.1 which is the latest release. That works much better, but there are still issues with C++17 support, some of which are easy to fix (missing template parameters) others not so easy (e.g. there is no support yet for std::cyl_bessel_il). gcc 7 seems to be the better alternative currently. >> Best Regards >> Peter >> >>> On 05 Jul 2017, at 23:03, Hao Zhang <ha...@ha...> wrote: >>> >>> Hi Peter, >>> >>> As I mentioned in the GitHub README, I have only tested the project with GCC7 on Linux as of now. I plan to make the project compatible with at least Windows and macOS in the near future, but the code will certainly not able to compile on these other platforms before some major changes are made. >>> >>> For your specific error, I think the reason is that with GCC the <limits> header is pulled in by <cmath> included by <ql/mathconstants.hpp>. On other platforms <cmath> may not include <limits>. I will include <limits> explicitly in the code, but I'm sure there are many other error messages remaining to be fixed with a non-GCC compiler. > >>> >>> Hao >>> On Wednesday, July 5, 2017 2:57:07 PM EDT Peter Caspers wrote: >>>> Hi Hao, I am trying to build your project (on OSX with clang), I get the following weird error message though. Any idea where this could come from? >>>> >>>> make[1]: Entering directory `/Users/peter/QuantLib-noBoost/build' >>>> make[2]: Entering directory `/Users/peter/QuantLib-noBoost/build' >>>> make[2]: Leaving directory `/Users/peter/QuantLib-noBoost/build' >>>> make[2]: Entering directory `/Users/peter/QuantLib-noBoost/build' >>>> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflow.cpp.o >>>> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/averagebmacoupon.cpp.o >>>> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/capflooredcoupon.cpp.o >>>> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/capflooredinflationcoupon.cpp.o >>>> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/cashflows.cpp.o >>>> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/cashflowvectors.cpp.o >>>> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/cmscoupon.cpp.o >>>> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/conundrumpricer.cpp.o >>>> In file included from /Users/peter/QuantLib-noBoost/ql/cashflow.cpp:21: >>>> In file included from /Users/peter/QuantLib-noBoost/ql/cashflow.hpp:28: >>>> In file included from /Users/peter/QuantLib-noBoost/ql/event.hpp:28: >>>> In file included from /Users/peter/QuantLib-noBoost/ql/time/date.hpp:35: >>>> /Users/peter/QuantLib-noBoost/ql/utilities/null.hpp:58:24: error: no member named 'numeric_limits' in namespace 'std' >>>> return QL_NULL_REAL; >>>> ^~~~~~~~~~~~ >>>> /Users/peter/QuantLib-noBoost/ql/qldefines.hpp:126:39: note: expanded from macro 'QL_NULL_REAL' >>>> #define QL_NULL_REAL ((std::numeric_limits<float>::max)()) >>>> ~~~~~^ >>>> >>>> >>>>> On 04 Jul 2017, at 21:28, Hao Zhang <ha...@ha...> wrote: >>>>> >>>>> Hi Peter and Luigi, >>>>> >>>>> Thank you very much for your support! No, the performance gain is not from >>>>> MKL, as MKL is not used in the default setting. I am sorry that I cannot >>>>> pinpoint the exact source of performance gain yet. My hunch is that many >>>>> Boost modules are quite general, and provide features that's not used by >>>>> QuantLib. There are also safety checks in Boost that's not relevant to >>>>> QuantLib. By targeting only QuantLib, I do not need to write many >>>>> redundant features and safety checks, and avoid some extra instructions. >>>>> Also the move semantics in modern C++ may also help with speed. I >>>>> apologize that I cannot answer your question in more detail at this point. >>>>> >>>>> Best Regards, >>>>> >>>>> Hao >>>>> On Tuesday, July 4, 2017 11:38:00 AM EDT Peter Caspers wrote: >>>>>> Hi Hao, that's very interesting. Do you know where the performance gain >>>>>> is coming from, is it mostly MKL vs. UBLAS? Or are there other drivers >>>>>> as well? I'd also be interested in the motivation to do this in the >>>>>> first place, I never thought boost as such was a bad thing? The upgrade >>>>>> to C++17 is surely nice and makes sense, no doubt. Best Regards >>>>>> Peter >>>>>> >>>>>>> On 04 Jul 2017, at 09:42, Luigi Ballabio <lui...@gm...> >>>>>>> wrote: >>>>>>> >>>>>>> Hello Hao, >>>>>>> >>>>>>> that's great news---I've been wondering myself if this was >>>>>>> possible. I'll be sure to check out your project.> >>>>>>> I suggest you also post to quantlib-users for greater exposure. >>>>>>> >>>>>>> Later, >>>>>>> >>>>>>> Luigi >>>>>>> >>>>>>> On Tue, Jul 4, 2017 at 5:24 AM Hao Zhang via QuantLib-dev >>>>>>> <qua...@li... >>>>>>> <mailto:qua...@li... <mailto:qua...@li...> <mailto:qua...@li... <mailto:qua...@li...>>>> wrote: Hello Everyone, >>>>>>> >>>>>>> I have removed all Boost dependency from QuantLib, and ported QuantLib >>>>>>> to C++17. The code is hosted on GitHub >>>>>>> (https://github.com/haozhangphd/ <https://github.com/haozhangphd/> <https://github.com/haozhangphd/ <https://github.com/haozhangphd/>> QuantLib-noBoost >>>>>>> <https://github.com/haozhangphd/QuantLib-noBoost <https://github.com/haozhangphd/QuantLib-noBoost> <https://github.com/haozhangphd/QuantLib-noBoost <https://github.com/haozhangphd/QuantLib-noBoost>>>). >>>>>>> >>>>>>> The ported code passes all test cases, and there are significant >>>>>>> performance improvements in SOME functionalities. Using the QuantLib >>>>>>> Benchmark Suite, Quantlib-noBoost gives 3425 mflops (running time >>>>>>> 13.15s), while unmodified QuantLib gives 1440 mflops (running time >>>>>>> 44.8s) on my Dell Inspiron 13 i7348 laptop, both running under >>>>>>> identical conditions with identical compiler flags. The total running >>>>>>> time of the whole test suite is also shorter by ~10% after Boost is >>>>>>> removed. >>>>>>> >>>>>>> I will continue maintaining this project, and regularly backporting >>>>>>> latest commits from QuantLib. I will also make this project work on >>>>>>> other compilers besides GCC in the near future. >>>>>>> >>>>>>> Best Regards, >>>>>>> >>>>>>> Hao >>>>>>> >>>>>>> ---------------------------------------------------------------------- >>>>>>> -------- Check out the vibrant tech community on one of the world's >>>>>>> most engaging tech sites, Slashdot.org <http://slashdot.org/> <http://slashdot.org/ <http://slashdot.org/>>! http://sdm.link/slashdot <http://sdm.link/slashdot><http://sdm.link/slashdot <http://sdm.link/slashdot>> >>>>>>> <http://sdm.link/slashdot <http://sdm.link/slashdot> <http://sdm.link/slashdot <http://sdm.link/slashdot>>> >>>>>>> _______________________________________________ >>>>>>> QuantLib-dev mailing list >>>>>>> Qua...@li... <mailto:Qua...@li...> <mailto:Qua...@li... <mailto:Qua...@li...>> >>>>>>> <mailto:Qua...@li... <mailto:Qua...@li...> <mailto:Qua...@li... <mailto:Qua...@li...>>> >>>>>>> https://lists.sourceforge.net/lists/listinfo/quantlib-dev <https://lists.sourceforge.net/lists/listinfo/quantlib-dev> <https://lists.sourceforge.net/lists/listinfo/quantlib-dev <https://lists.sourceforge.net/lists/listinfo/quantlib-dev>> >>>>>>> <https://lists.sourceforge.net/lists/listinfo/quantlib-dev> >>>>>>> --------------------------------------------------------------------- >>>>>>> --------- Check out the vibrant tech community on one of the world's >>>>>>> most engaging tech sites, Slashdot.org! >>>>>>> http://sdm.link/slashdot_____________________________________________ >>>>>>> __ QuantLib-dev mailing list >>>>>>> Qua...@li... >>>>>>> https://lists.sourceforge.net/lists/listinfo/quantlib-dev >> > > |
|
From: Hao Z. <ha...@ha...> - 2017-07-07 20:50:54
|
Hi Peter, I just removed some GCC-specific code, and made it compile and run under Visual Studio 2017. Unfortunately I do not have access to a Mac, thus I cannot do any testing on macOS. If you have time, can you please try compiling the code again on Mac and send me the error message? I suppose Clang is more similar to GCC than to MSVC, thus if MSVC accept the code, making it run with Clang shouldn't be that hard... P.S. std::cyl_bessel_il is not too difficult to overcome. We already have modifiedBesselFunction_i and modifiedBesselFunction_k implemented in QuantLib. These functions just need to be modified for cases when the arguments become very large. Thanks and Best Regards, Hao On Friday, July 7, 2017 2:23:00 PM EDT Peter Caspers wrote: > Hi Hao, with the standard compiler on OS X El Capitan (Apple clang 8.0.0) there doesnât seem to be much hope to get it built. I also tried the LLVM clang 4.0.1 which is the latest release. That works much better, but there are still issues with C++17 support, some of which are easy to fix (missing template parameters) others not so easy (e.g. there is no support yet for std::cyl_bessel_il). gcc 7 seems to be the better alternative currently. > Best Regards > Peter > > > On 05 Jul 2017, at 23:03, Hao Zhang <ha...@ha...> wrote: > > > > Hi Peter, > > > > As I mentioned in the GitHub README, I have only tested the project with GCC7 on Linux as of now. I plan to make the project compatible with at least Windows and macOS in the near future, but the code will certainly not able to compile on these other platforms before some major changes are made. > > > > For your specific error, I think the reason is that with GCC the <limits> header is pulled in by <cmath> included by <ql/mathconstants.hpp>. On other platforms <cmath> may not include <limits>. I will include <limits> explicitly in the code, but I'm sure there are many other error messages remaining to be fixed with a non-GCC compiler. > > > > Hao > > On Wednesday, July 5, 2017 2:57:07 PM EDT Peter Caspers wrote: > >> Hi Hao, I am trying to build your project (on OSX with clang), I get the following weird error message though. Any idea where this could come from? > >> > >> make[1]: Entering directory `/Users/peter/QuantLib-noBoost/build' > >> make[2]: Entering directory `/Users/peter/QuantLib-noBoost/build' > >> make[2]: Leaving directory `/Users/peter/QuantLib-noBoost/build' > >> make[2]: Entering directory `/Users/peter/QuantLib-noBoost/build' > >> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflow.cpp.o > >> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/averagebmacoupon.cpp.o > >> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/capflooredcoupon.cpp.o > >> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/capflooredinflationcoupon.cpp.o > >> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/cashflows.cpp.o > >> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/cashflowvectors.cpp.o > >> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/cmscoupon.cpp.o > >> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/conundrumpricer.cpp.o > >> In file included from /Users/peter/QuantLib-noBoost/ql/cashflow.cpp:21: > >> In file included from /Users/peter/QuantLib-noBoost/ql/cashflow.hpp:28: > >> In file included from /Users/peter/QuantLib-noBoost/ql/event.hpp:28: > >> In file included from /Users/peter/QuantLib-noBoost/ql/time/date.hpp:35: > >> /Users/peter/QuantLib-noBoost/ql/utilities/null.hpp:58:24: error: no member named 'numeric_limits' in namespace 'std' > >> return QL_NULL_REAL; > >> ^~~~~~~~~~~~ > >> /Users/peter/QuantLib-noBoost/ql/qldefines.hpp:126:39: note: expanded from macro 'QL_NULL_REAL' > >> #define QL_NULL_REAL ((std::numeric_limits<float>::max)()) > >> ~~~~~^ > >> > >> > >>> On 04 Jul 2017, at 21:28, Hao Zhang <ha...@ha...> wrote: > >>> > >>> Hi Peter and Luigi, > >>> > >>> Thank you very much for your support! No, the performance gain is not from > >>> MKL, as MKL is not used in the default setting. I am sorry that I cannot > >>> pinpoint the exact source of performance gain yet. My hunch is that many > >>> Boost modules are quite general, and provide features that's not used by > >>> QuantLib. There are also safety checks in Boost that's not relevant to > >>> QuantLib. By targeting only QuantLib, I do not need to write many > >>> redundant features and safety checks, and avoid some extra instructions. > >>> Also the move semantics in modern C++ may also help with speed. I > >>> apologize that I cannot answer your question in more detail at this point. > >>> > >>> Best Regards, > >>> > >>> Hao > >>> On Tuesday, July 4, 2017 11:38:00 AM EDT Peter Caspers wrote: > >>>> Hi Hao, that's very interesting. Do you know where the performance gain > >>>> is coming from, is it mostly MKL vs. UBLAS? Or are there other drivers > >>>> as well? I'd also be interested in the motivation to do this in the > >>>> first place, I never thought boost as such was a bad thing? The upgrade > >>>> to C++17 is surely nice and makes sense, no doubt. Best Regards > >>>> Peter > >>>> > >>>>> On 04 Jul 2017, at 09:42, Luigi Ballabio <lui...@gm...> > >>>>> wrote: > >>>>> > >>>>> Hello Hao, > >>>>> > >>>>> that's great news---I've been wondering myself if this was > >>>>> possible. I'll be sure to check out your project.> > >>>>> I suggest you also post to quantlib-users for greater exposure. > >>>>> > >>>>> Later, > >>>>> > >>>>> Luigi > >>>>> > >>>>> On Tue, Jul 4, 2017 at 5:24 AM Hao Zhang via QuantLib-dev > >>>>> <qua...@li... > >>>>> <mailto:qua...@li... <mailto:qua...@li...> <mailto:qua...@li... <mailto:qua...@li...>>>> wrote: Hello Everyone, > >>>>> > >>>>> I have removed all Boost dependency from QuantLib, and ported QuantLib > >>>>> to C++17. The code is hosted on GitHub > >>>>> (https://github.com/haozhangphd/ <https://github.com/haozhangphd/> <https://github.com/haozhangphd/ <https://github.com/haozhangphd/>> QuantLib-noBoost > >>>>> <https://github.com/haozhangphd/QuantLib-noBoost <https://github.com/haozhangphd/QuantLib-noBoost> <https://github.com/haozhangphd/QuantLib-noBoost <https://github.com/haozhangphd/QuantLib-noBoost>>>). > >>>>> > >>>>> The ported code passes all test cases, and there are significant > >>>>> performance improvements in SOME functionalities. Using the QuantLib > >>>>> Benchmark Suite, Quantlib-noBoost gives 3425 mflops (running time > >>>>> 13.15s), while unmodified QuantLib gives 1440 mflops (running time > >>>>> 44.8s) on my Dell Inspiron 13 i7348 laptop, both running under > >>>>> identical conditions with identical compiler flags. The total running > >>>>> time of the whole test suite is also shorter by ~10% after Boost is > >>>>> removed. > >>>>> > >>>>> I will continue maintaining this project, and regularly backporting > >>>>> latest commits from QuantLib. I will also make this project work on > >>>>> other compilers besides GCC in the near future. > >>>>> > >>>>> Best Regards, > >>>>> > >>>>> Hao > >>>>> > >>>>> ---------------------------------------------------------------------- > >>>>> -------- Check out the vibrant tech community on one of the world's > >>>>> most engaging tech sites, Slashdot.org <http://slashdot.org/> <http://slashdot.org/ <http://slashdot.org/>>! http://sdm.link/slashdot <http://sdm.link/slashdot><http://sdm.link/slashdot <http://sdm.link/slashdot>> > >>>>> <http://sdm.link/slashdot <http://sdm.link/slashdot> <http://sdm.link/slashdot <http://sdm.link/slashdot>>> > >>>>> _______________________________________________ > >>>>> QuantLib-dev mailing list > >>>>> Qua...@li... <mailto:Qua...@li...> <mailto:Qua...@li... <mailto:Qua...@li...>> > >>>>> <mailto:Qua...@li... <mailto:Qua...@li...> <mailto:Qua...@li... <mailto:Qua...@li...>>> > >>>>> https://lists.sourceforge.net/lists/listinfo/quantlib-dev <https://lists.sourceforge.net/lists/listinfo/quantlib-dev> <https://lists.sourceforge.net/lists/listinfo/quantlib-dev <https://lists.sourceforge.net/lists/listinfo/quantlib-dev>> > >>>>> <https://lists.sourceforge.net/lists/listinfo/quantlib-dev> > >>>>> --------------------------------------------------------------------- > >>>>> --------- Check out the vibrant tech community on one of the world's > >>>>> most engaging tech sites, Slashdot.org! > >>>>> http://sdm.link/slashdot_____________________________________________ > >>>>> __ QuantLib-dev mailing list > >>>>> Qua...@li... > >>>>> https://lists.sourceforge.net/lists/listinfo/quantlib-dev > |
|
From: Peter C. <pca...@gm...> - 2017-07-07 18:23:11
|
Hi Hao, with the standard compiler on OS X El Capitan (Apple clang 8.0.0) there doesn’t seem to be much hope to get it built. I also tried the LLVM clang 4.0.1 which is the latest release. That works much better, but there are still issues with C++17 support, some of which are easy to fix (missing template parameters) others not so easy (e.g. there is no support yet for std::cyl_bessel_il). gcc 7 seems to be the better alternative currently. Best Regards Peter > On 05 Jul 2017, at 23:03, Hao Zhang <ha...@ha...> wrote: > > Hi Peter, > > As I mentioned in the GitHub README, I have only tested the project with GCC7 on Linux as of now. I plan to make the project compatible with at least Windows and macOS in the near future, but the code will certainly not able to compile on these other platforms before some major changes are made. > > For your specific error, I think the reason is that with GCC the <limits> header is pulled in by <cmath> included by <ql/mathconstants.hpp>. On other platforms <cmath> may not include <limits>. I will include <limits> explicitly in the code, but I'm sure there are many other error messages remaining to be fixed with a non-GCC compiler. > > Hao > On Wednesday, July 5, 2017 2:57:07 PM EDT Peter Caspers wrote: >> Hi Hao, I am trying to build your project (on OSX with clang), I get the following weird error message though. Any idea where this could come from? >> >> make[1]: Entering directory `/Users/peter/QuantLib-noBoost/build' >> make[2]: Entering directory `/Users/peter/QuantLib-noBoost/build' >> make[2]: Leaving directory `/Users/peter/QuantLib-noBoost/build' >> make[2]: Entering directory `/Users/peter/QuantLib-noBoost/build' >> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflow.cpp.o >> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/averagebmacoupon.cpp.o >> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/capflooredcoupon.cpp.o >> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/capflooredinflationcoupon.cpp.o >> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/cashflows.cpp.o >> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/cashflowvectors.cpp.o >> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/cmscoupon.cpp.o >> [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/conundrumpricer.cpp.o >> In file included from /Users/peter/QuantLib-noBoost/ql/cashflow.cpp:21: >> In file included from /Users/peter/QuantLib-noBoost/ql/cashflow.hpp:28: >> In file included from /Users/peter/QuantLib-noBoost/ql/event.hpp:28: >> In file included from /Users/peter/QuantLib-noBoost/ql/time/date.hpp:35: >> /Users/peter/QuantLib-noBoost/ql/utilities/null.hpp:58:24: error: no member named 'numeric_limits' in namespace 'std' >> return QL_NULL_REAL; >> ^~~~~~~~~~~~ >> /Users/peter/QuantLib-noBoost/ql/qldefines.hpp:126:39: note: expanded from macro 'QL_NULL_REAL' >> #define QL_NULL_REAL ((std::numeric_limits<float>::max)()) >> ~~~~~^ >> >> >>> On 04 Jul 2017, at 21:28, Hao Zhang <ha...@ha...> wrote: >>> >>> Hi Peter and Luigi, >>> >>> Thank you very much for your support! No, the performance gain is not from >>> MKL, as MKL is not used in the default setting. I am sorry that I cannot >>> pinpoint the exact source of performance gain yet. My hunch is that many >>> Boost modules are quite general, and provide features that's not used by >>> QuantLib. There are also safety checks in Boost that's not relevant to >>> QuantLib. By targeting only QuantLib, I do not need to write many >>> redundant features and safety checks, and avoid some extra instructions. >>> Also the move semantics in modern C++ may also help with speed. I >>> apologize that I cannot answer your question in more detail at this point. >>> >>> Best Regards, >>> >>> Hao >>> On Tuesday, July 4, 2017 11:38:00 AM EDT Peter Caspers wrote: >>>> Hi Hao, that's very interesting. Do you know where the performance gain >>>> is coming from, is it mostly MKL vs. UBLAS? Or are there other drivers >>>> as well? I'd also be interested in the motivation to do this in the >>>> first place, I never thought boost as such was a bad thing? The upgrade >>>> to C++17 is surely nice and makes sense, no doubt. Best Regards >>>> Peter >>>> >>>>> On 04 Jul 2017, at 09:42, Luigi Ballabio <lui...@gm...> >>>>> wrote: >>>>> >>>>> Hello Hao, >>>>> >>>>> that's great news---I've been wondering myself if this was >>>>> possible. I'll be sure to check out your project.> >>>>> I suggest you also post to quantlib-users for greater exposure. >>>>> >>>>> Later, >>>>> >>>>> Luigi >>>>> >>>>> On Tue, Jul 4, 2017 at 5:24 AM Hao Zhang via QuantLib-dev >>>>> <qua...@li... >>>>> <mailto:qua...@li... <mailto:qua...@li...> <mailto:qua...@li... <mailto:qua...@li...>>>> wrote: Hello Everyone, >>>>> >>>>> I have removed all Boost dependency from QuantLib, and ported QuantLib >>>>> to C++17. The code is hosted on GitHub >>>>> (https://github.com/haozhangphd/ <https://github.com/haozhangphd/> <https://github.com/haozhangphd/ <https://github.com/haozhangphd/>> QuantLib-noBoost >>>>> <https://github.com/haozhangphd/QuantLib-noBoost <https://github.com/haozhangphd/QuantLib-noBoost> <https://github.com/haozhangphd/QuantLib-noBoost <https://github.com/haozhangphd/QuantLib-noBoost>>>). >>>>> >>>>> The ported code passes all test cases, and there are significant >>>>> performance improvements in SOME functionalities. Using the QuantLib >>>>> Benchmark Suite, Quantlib-noBoost gives 3425 mflops (running time >>>>> 13.15s), while unmodified QuantLib gives 1440 mflops (running time >>>>> 44.8s) on my Dell Inspiron 13 i7348 laptop, both running under >>>>> identical conditions with identical compiler flags. The total running >>>>> time of the whole test suite is also shorter by ~10% after Boost is >>>>> removed. >>>>> >>>>> I will continue maintaining this project, and regularly backporting >>>>> latest commits from QuantLib. I will also make this project work on >>>>> other compilers besides GCC in the near future. >>>>> >>>>> Best Regards, >>>>> >>>>> Hao >>>>> >>>>> ---------------------------------------------------------------------- >>>>> -------- Check out the vibrant tech community on one of the world's >>>>> most engaging tech sites, Slashdot.org <http://slashdot.org/> <http://slashdot.org/ <http://slashdot.org/>>! http://sdm.link/slashdot <http://sdm.link/slashdot><http://sdm.link/slashdot <http://sdm.link/slashdot>> >>>>> <http://sdm.link/slashdot <http://sdm.link/slashdot> <http://sdm.link/slashdot <http://sdm.link/slashdot>>> >>>>> _______________________________________________ >>>>> QuantLib-dev mailing list >>>>> Qua...@li... <mailto:Qua...@li...> <mailto:Qua...@li... <mailto:Qua...@li...>> >>>>> <mailto:Qua...@li... <mailto:Qua...@li...> <mailto:Qua...@li... <mailto:Qua...@li...>>> >>>>> https://lists.sourceforge.net/lists/listinfo/quantlib-dev <https://lists.sourceforge.net/lists/listinfo/quantlib-dev> <https://lists.sourceforge.net/lists/listinfo/quantlib-dev <https://lists.sourceforge.net/lists/listinfo/quantlib-dev>> >>>>> <https://lists.sourceforge.net/lists/listinfo/quantlib-dev> >>>>> --------------------------------------------------------------------- >>>>> --------- Check out the vibrant tech community on one of the world's >>>>> most engaging tech sites, Slashdot.org! >>>>> http://sdm.link/slashdot_____________________________________________ >>>>> __ QuantLib-dev mailing list >>>>> Qua...@li... >>>>> https://lists.sourceforge.net/lists/listinfo/quantlib-dev |
|
From: aubertseba <seb...@gm...> - 2017-07-06 08:42:08
|
Hello, I would like to know if QuantlibXL 1.9 offers the possibility to price amortizing caps and floors in a negative interest rates environment ? That implies the impossibility to use the Black-Scholes model. Thanks in advance for your answer. Yours sincerely, Sébastien -- View this message in context: http://quantlib.10058.n7.nabble.com/Amortizing-caps-and-floors-pricing-tp18413.html Sent from the quantlib-dev mailing list archive at Nabble.com. |
|
From: Hao Z. <ha...@ha...> - 2017-07-05 21:26:25
|
Hi Klaus, Thank you very much for your support. I try my best to only use standard-compliant C++ in my code, and avoid using any GNU extensions (in the default configuration at least). Thus it is not impossible to make it work on any platforms with a C++17-standard-compliant compiler. Best Regards, Hao On Wednesday, July 5, 2017 3:54:18 PM EDT Klaus Spanderen wrote: > Hi, > > Awesome work. The major achievement for me is the lift to C++17 - even subtle > details like the thread-safe observer pattern have been ported ! I wouldn't > mind if boost is stilled present for some minor use cases. It will be difficult > to replace all of it on all supported platforms. > > I would also appreciate if we move completely to a modern C++ version after > 10++ years of C++03. > > best regards > Klaus > > On Mittwoch, 5. Juli 2017 12:02:20 CEST Johannes Göttker-Schnetmann wrote: > > Hi Hao, Peter, > > > > I also find this very interesting. Since C++ is moving at a better pace for > > some time we need at some point decide how QuantLib reacts to this. > > Personally I am using modern compilers and like the features modern C++ > > provides. Therefore I would appreciate if QuantLib decides to fork or move > > completely to a modern C++ version. > > > > Boost is in part an incubator of ideas, which at some point might make it > > into the C++ standard. For QuantLib the most prominent instances are > > boost::shared_pointer and boost:unique_pointer which are both in the > > standard for quite some time now. I would prefer to use the standard > > libraries instead of boost in those cases. > > > > Kind regards, > > Johannes > > > > On 4. Jul 2017, at 17:38, Peter Caspers <pca...@gm...> wrote: > > > > Hi Hao, that’s very interesting. Do you know where the performance gain is > > coming from, is it mostly MKL vs. UBLAS? Or are there other drivers as > > well? > > I’d also be interested in the motivation to do this in the first place, I > > never thought boost as such was a bad thing? > > The upgrade to C++17 is surely nice and makes sense, no doubt. > > Best Regards > > Peter > > > > On 04 Jul 2017, at 09:42, Luigi Ballabio <lui...@gm...> wrote: > > > > Hello Hao, > > that's great news---I've been wondering myself if this was possible. > > I'll be sure to check out your project. > > I suggest you also post to quantlib-users for greater exposure. > > > > Later, > > Luigi > > > > > > On Tue, Jul 4, 2017 at 5:24 AM Hao Zhang via QuantLib-dev < > > > > qua...@li...> wrote: > > > Hello Everyone, > > > > > > I have removed all Boost dependency from QuantLib, and ported QuantLib to > > > C++17. The code is hosted on GitHub (https://github.com/haozhangphd/ > > > QuantLib-noBoost <https://github.com/haozhangphd/QuantLib-noBoost>). > > > > > > The ported code passes all test cases, and there are significant > > > performance improvements in SOME functionalities. Using the QuantLib > > > Benchmark Suite, Quantlib-noBoost gives 3425 mflops (running time 13.15s), > > > while unmodified QuantLib gives 1440 mflops (running time 44.8s) on my > > > Dell > > > Inspiron 13 i7348 laptop, both running under identical conditions with > > > identical compiler flags. The total running time of the whole test suite > > > is > > > also shorter by ~10% after Boost is removed. > > > > > > I will continue maintaining this project, and regularly backporting latest > > > commits from QuantLib. I will also make this project work on other > > > compilers besides GCC in the near future. > > > > > > Best Regards, > > > > > > Hao > > > > > > ------------------------------------------------------------ > > > ------------------ > > > Check out the vibrant tech community on one of the world's most > > > engaging tech sites, Slashdot.org <http://slashdot.org/>! > > > http://sdm.link/slashdot > > > _______________________________________________ > > > QuantLib-dev mailing list > > > Qua...@li... > > > https://lists.sourceforge.net/lists/listinfo/quantlib-dev > > > > ------------------------------------------------------------ > > ------------------ > > Check out the vibrant tech community on one of the world's most > > engaging tech sites, Slashdot.org <http://slashdot.org/>! > > http://sdm.link/slashdot_______________________________________________ > > QuantLib-dev mailing list > > Qua...@li... > > https://lists.sourceforge.net/lists/listinfo/quantlib-dev > > > > > > ------------------------------------------------------------ > > ------------------ > > Check out the vibrant tech community on one of the world's most > > engaging tech sites, Slashdot.org! http://sdm.link/slashdot______ > > _________________________________________ > > QuantLib-dev mailing list > > Qua...@li... > > https://lists.sourceforge.net/lists/listinfo/quantlib-dev > > > > ------------------------------------------------------------------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, Slashdot.org! http://sdm.link/slashdot > _______________________________________________ > QuantLib-dev mailing list > Qua...@li... > https://lists.sourceforge.net/lists/listinfo/quantlib-dev > |
|
From: Hao Z. <ha...@ha...> - 2017-07-05 21:03:14
|
Hi Peter, As I mentioned in the GitHub README, I have only tested the project with GCC7 on Linux as of now. I plan to make the project compatible with at least Windows and macOS in the near future, but the code will certainly not able to compile on these other platforms before some major changes are made. For your specific error, I think the reason is that with GCC the <limits> header is pulled in by <cmath> included by <ql/mathconstants.hpp>. On other platforms <cmath> may not include <limits>. I will include <limits> explicitly in the code, but I'm sure there are many other error messages remaining to be fixed with a non-GCC compiler. Hao On Wednesday, July 5, 2017 2:57:07 PM EDT Peter Caspers wrote: > Hi Hao, I am trying to build your project (on OSX with clang), I get the following weird error message though. Any idea where this could come from? > > make[1]: Entering directory `/Users/peter/QuantLib-noBoost/build' > make[2]: Entering directory `/Users/peter/QuantLib-noBoost/build' > make[2]: Leaving directory `/Users/peter/QuantLib-noBoost/build' > make[2]: Entering directory `/Users/peter/QuantLib-noBoost/build' > [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflow.cpp.o > [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/averagebmacoupon.cpp.o > [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/capflooredcoupon.cpp.o > [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/capflooredinflationcoupon.cpp.o > [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/cashflows.cpp.o > [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/cashflowvectors.cpp.o > [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/cmscoupon.cpp.o > [ 1%] Building CXX object ql/CMakeFiles/QuantLib.dir/cashflows/conundrumpricer.cpp.o > In file included from /Users/peter/QuantLib-noBoost/ql/cashflow.cpp:21: > In file included from /Users/peter/QuantLib-noBoost/ql/cashflow.hpp:28: > In file included from /Users/peter/QuantLib-noBoost/ql/event.hpp:28: > In file included from /Users/peter/QuantLib-noBoost/ql/time/date.hpp:35: > /Users/peter/QuantLib-noBoost/ql/utilities/null.hpp:58:24: error: no member named 'numeric_limits' in namespace 'std' > return QL_NULL_REAL; > ^~~~~~~~~~~~ > /Users/peter/QuantLib-noBoost/ql/qldefines.hpp:126:39: note: expanded from macro 'QL_NULL_REAL' > #define QL_NULL_REAL ((std::numeric_limits<float>::max)()) > ~~~~~^ > > > > On 04 Jul 2017, at 21:28, Hao Zhang <ha...@ha...> wrote: > > > > Hi Peter and Luigi, > > > > Thank you very much for your support! No, the performance gain is not from > > MKL, as MKL is not used in the default setting. I am sorry that I cannot > > pinpoint the exact source of performance gain yet. My hunch is that many > > Boost modules are quite general, and provide features that's not used by > > QuantLib. There are also safety checks in Boost that's not relevant to > > QuantLib. By targeting only QuantLib, I do not need to write many > > redundant features and safety checks, and avoid some extra instructions. > > Also the move semantics in modern C++ may also help with speed. I > > apologize that I cannot answer your question in more detail at this point. > > > > Best Regards, > > > > Hao > > On Tuesday, July 4, 2017 11:38:00 AM EDT Peter Caspers wrote: > >> Hi Hao, that's very interesting. Do you know where the performance gain > >> is coming from, is it mostly MKL vs. UBLAS? Or are there other drivers > >> as well? I'd also be interested in the motivation to do this in the > >> first place, I never thought boost as such was a bad thing? The upgrade > >> to C++17 is surely nice and makes sense, no doubt. Best Regards > >> Peter > >> > >>> On 04 Jul 2017, at 09:42, Luigi Ballabio <lui...@gm...> > >>> wrote: > >>> > >>> Hello Hao, > >>> > >>> that's great news---I've been wondering myself if this was > >>> possible. I'll be sure to check out your project.> > >>> I suggest you also post to quantlib-users for greater exposure. > >>> > >>> Later, > >>> > >>> Luigi > >>> > >>> On Tue, Jul 4, 2017 at 5:24 AM Hao Zhang via QuantLib-dev > >>> <qua...@li... > >>> <mailto:qua...@li... <mailto:qua...@li...>>> wrote: Hello Everyone, > >>> > >>> I have removed all Boost dependency from QuantLib, and ported QuantLib > >>> to C++17. The code is hosted on GitHub > >>> (https://github.com/haozhangphd/ <https://github.com/haozhangphd/> QuantLib-noBoost > >>> <https://github.com/haozhangphd/QuantLib-noBoost <https://github.com/haozhangphd/QuantLib-noBoost>>). > >>> > >>> The ported code passes all test cases, and there are significant > >>> performance improvements in SOME functionalities. Using the QuantLib > >>> Benchmark Suite, Quantlib-noBoost gives 3425 mflops (running time > >>> 13.15s), while unmodified QuantLib gives 1440 mflops (running time > >>> 44.8s) on my Dell Inspiron 13 i7348 laptop, both running under > >>> identical conditions with identical compiler flags. The total running > >>> time of the whole test suite is also shorter by ~10% after Boost is > >>> removed. > >>> > >>> I will continue maintaining this project, and regularly backporting > >>> latest commits from QuantLib. I will also make this project work on > >>> other compilers besides GCC in the near future. > >>> > >>> Best Regards, > >>> > >>> Hao > >>> > >>> ---------------------------------------------------------------------- > >>> -------- Check out the vibrant tech community on one of the world's > >>> most engaging tech sites, Slashdot.org <http://slashdot.org/>! http://sdm.link/slashdot <http://sdm.link/slashdot> > >>> <http://sdm.link/slashdot <http://sdm.link/slashdot>> > >>> _______________________________________________ > >>> QuantLib-dev mailing list > >>> Qua...@li... <mailto:Qua...@li...> > >>> <mailto:Qua...@li... <mailto:Qua...@li...>> > >>> https://lists.sourceforge.net/lists/listinfo/quantlib-dev <https://lists.sourceforge.net/lists/listinfo/quantlib-dev> > >>> <https://lists.sourceforge.net/lists/listinfo/quantlib-dev> > >>> --------------------------------------------------------------------- > >>> --------- Check out the vibrant tech community on one of the world's > >>> most engaging tech sites, Slashdot.org! > >>> http://sdm.link/slashdot_____________________________________________ > >>> __ QuantLib-dev mailing list > >>> Qua...@li... > >>> https://lists.sourceforge.net/lists/listinfo/quantlib-dev > |
|
From: Klaus S. <kl...@sp...> - 2017-07-05 20:07:14
|
Hi, Awesome work. The major achievement for me is the lift to C++17 - even subtle details like the thread-safe observer pattern have been ported ! I wouldn't mind if boost is stilled present for some minor use cases. It will be difficult to replace all of it on all supported platforms. I would also appreciate if we move completely to a modern C++ version after 10++ years of C++03. best regards Klaus On Mittwoch, 5. Juli 2017 12:02:20 CEST Johannes Göttker-Schnetmann wrote: > Hi Hao, Peter, > > I also find this very interesting. Since C++ is moving at a better pace for > some time we need at some point decide how QuantLib reacts to this. > Personally I am using modern compilers and like the features modern C++ > provides. Therefore I would appreciate if QuantLib decides to fork or move > completely to a modern C++ version. > > Boost is in part an incubator of ideas, which at some point might make it > into the C++ standard. For QuantLib the most prominent instances are > boost::shared_pointer and boost:unique_pointer which are both in the > standard for quite some time now. I would prefer to use the standard > libraries instead of boost in those cases. > > Kind regards, > Johannes > > On 4. Jul 2017, at 17:38, Peter Caspers <pca...@gm...> wrote: > > Hi Hao, that’s very interesting. Do you know where the performance gain is > coming from, is it mostly MKL vs. UBLAS? Or are there other drivers as > well? > I’d also be interested in the motivation to do this in the first place, I > never thought boost as such was a bad thing? > The upgrade to C++17 is surely nice and makes sense, no doubt. > Best Regards > Peter > > On 04 Jul 2017, at 09:42, Luigi Ballabio <lui...@gm...> wrote: > > Hello Hao, > that's great news---I've been wondering myself if this was possible. > I'll be sure to check out your project. > I suggest you also post to quantlib-users for greater exposure. > > Later, > Luigi > > > On Tue, Jul 4, 2017 at 5:24 AM Hao Zhang via QuantLib-dev < > > qua...@li...> wrote: > > Hello Everyone, > > > > I have removed all Boost dependency from QuantLib, and ported QuantLib to > > C++17. The code is hosted on GitHub (https://github.com/haozhangphd/ > > QuantLib-noBoost <https://github.com/haozhangphd/QuantLib-noBoost>). > > > > The ported code passes all test cases, and there are significant > > performance improvements in SOME functionalities. Using the QuantLib > > Benchmark Suite, Quantlib-noBoost gives 3425 mflops (running time 13.15s), > > while unmodified QuantLib gives 1440 mflops (running time 44.8s) on my > > Dell > > Inspiron 13 i7348 laptop, both running under identical conditions with > > identical compiler flags. The total running time of the whole test suite > > is > > also shorter by ~10% after Boost is removed. > > > > I will continue maintaining this project, and regularly backporting latest > > commits from QuantLib. I will also make this project work on other > > compilers besides GCC in the near future. > > > > Best Regards, > > > > Hao > > > > ------------------------------------------------------------ > > ------------------ > > Check out the vibrant tech community on one of the world's most > > engaging tech sites, Slashdot.org <http://slashdot.org/>! > > http://sdm.link/slashdot > > _______________________________________________ > > QuantLib-dev mailing list > > Qua...@li... > > https://lists.sourceforge.net/lists/listinfo/quantlib-dev > > ------------------------------------------------------------ > ------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, Slashdot.org <http://slashdot.org/>! > http://sdm.link/slashdot_______________________________________________ > QuantLib-dev mailing list > Qua...@li... > https://lists.sourceforge.net/lists/listinfo/quantlib-dev > > > ------------------------------------------------------------ > ------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, Slashdot.org! http://sdm.link/slashdot______ > _________________________________________ > QuantLib-dev mailing list > Qua...@li... > https://lists.sourceforge.net/lists/listinfo/quantlib-dev |