Simplified builds on Win32

The place to discuss creating, porting and modifying Celestia's source code.
Avatar
t00fri
Developer
Posts: 8772
Joined: 29.03.2002
Age: 22
With us: 22 years 7 months
Location: Hamburg, Germany

Re: Simplified builds on Win32

Post #21by t00fri » 14.07.2009, 16:40

piellepi wrote:so, Fridger, what is "your" list of options, as discussed among you developers?
I don't want to change your choices, obviously!! :wink:
All I want is to be consistent with the current version of Celestia in order to build the same executable!!!
Thanks
Pierluigi

Pierluigi,

as I wrote, it's what you get when clicking on celestia.sln. As far as I remember, it was

/O2, /Oy and /Oi

Note that /Ox does not work in VC++2009 SP1. Hence we used /O2 which gives the same sort of performance. Also there is often some partial redoubling when you activate all optimizations.

Fridger
Image

abramson
Posts: 408
Joined: 22.07.2003
With us: 21 years 3 months
Location: Bariloche, Argentina

Re: Simplified builds on Win32

Post #22by abramson » 15.07.2009, 17:13

Indeed, I have not benchmarked my optimizations, so I would recommend the ones used by the development team.

Additionally, as of today (rev 4766) I cannot build any longer, I started to receive errors from the Eigen packages about missing files, duplicate definitions of Quaternion (celmath and Eigen) and conflict definitions of min and max (with a recommendation for windows builders to add a definition to avoid this, which I haven't tried). I presume Chris is in the process of making some changes which aren't finished in the SVN (such as the use of the Eigen, which is new).

G

Avatar
t00fri
Developer
Posts: 8772
Joined: 29.03.2002
Age: 22
With us: 22 years 7 months
Location: Hamburg, Germany

Re: Simplified builds on Win32

Post #23by t00fri » 15.07.2009, 17:31

abramson wrote:Indeed, I have not benchmarked my optimizations, so I would recommend the ones used by the development team.

Additionally, as of today (rev 4766) I cannot build any longer, I started to receive errors from the Eigen packages about missing files, duplicate definitions of Quaternion (celmath and Eigen) and conflict definitions of min and max (with a recommendation for windows builders to add a definition to avoid this, which I haven't tried). I presume Chris is in the process of making some changes which aren't finished in the SVN (such as the use of the Eigen, which is new).

G

Indeed, Guillermo,

here is the respective mail from the Dev list:

Chris wrote:I've updated the MSVC++ project file to search for headers in thirdparty/Eigen. Unfortunately, the Windows build still isn't working. There are two things causing problems:

1. Eigen uses the std::min and std::max functions. Unfortunately, there are standard Windows header files that define macros named min and max. I've run into this problem before, but it still amazes me that this sort of braindamage ended up in windows.h. The solution is to define the macro NOMINMAX *before* including the Eigen headers. I'll get to this tomorrow.
2. The MSVC compiler complains about Quaternion being multiply defined: once in Eigen, and once in Celestia. g++ doesn't treat this as an ambiguous definition. I will try and get rid of Celestia's quaternion class completely tomorrow.

I hate leaving the Windows build in a broken state. After getting good results with g++, I didn't anticipate so many troubles on Windows. If you are building on Windows, the best thing to do is avoid updating from SVN for the time being.

--Chris

Fridger
Image

abramson
Posts: 408
Joined: 22.07.2003
With us: 21 years 3 months
Location: Bariloche, Argentina

Re: Simplified builds on Win32

Post #24by abramson » 15.07.2009, 17:36

Chris wrote:If you are building on Windows, the best thing to do is avoid updating from SVN for the time being.
Frak!

Topic author
chris
Site Admin
Posts: 4211
Joined: 28.01.2002
With us: 22 years 9 months
Location: Seattle, Washington, USA

Re: Simplified builds on Win32

Post #25by chris » 15.07.2009, 17:56

abramson wrote:Additionally, as of today (rev 4766) I cannot build any longer, I started to receive errors from the Eigen packages about missing files, duplicate definitions of Quaternion (celmath and Eigen) and conflict definitions of min and max (with a recommendation for windows builders to add a definition to avoid this, which I haven't tried). I presume Chris is in the process of making some changes which aren't finished in the SVN (such as the use of the Eigen, which is new).

I just committed revision 4767, which fixes compilation on Window of both the Qt version and the native Win32 version of Celestia. The switch to Eigen is a major project, but the benefits for performance and code readability will be worthwhile. I hope to write more on this topic in the Developers forum later today.

--Chris

abramson
Posts: 408
Joined: 22.07.2003
With us: 21 years 3 months
Location: Bariloche, Argentina

Re: Simplified builds on Win32

Post #26by abramson » 15.07.2009, 18:18

Thanks, Chris. Succeeded (VC++2008 SP1, .NET 3.5 SP1). Runs flawlessly. I uploaded the executable to my page.
Guillermo

Avatar
Chuft-Captain
Posts: 1779
Joined: 18.12.2005
With us: 18 years 10 months

Re: Simplified builds on Win32

Post #27by Chuft-Captain » 15.07.2009, 18:26

abramson wrote:Frak!
Pls forgive the off topic, but don't you think BSG would have been more effective/dramatic if they hadn't sanitised the "F" word? :o (Of course then it wouldn't have been able to be aired in primetime. :lol: )
"Is a planetary surface the right place for an expanding technological civilization?"
-- Gerard K. O'Neill (1969)

CATALOG SYNTAX HIGHLIGHTING TOOLS LAGRANGE POINTS

Avatar
t00fri
Developer
Posts: 8772
Joined: 29.03.2002
Age: 22
With us: 22 years 7 months
Location: Hamburg, Germany

Re: Simplified builds on Win32

Post #28by t00fri » 15.07.2009, 18:41

Yes the building of rev 4767 works flawlessly. However my reference benchmarks perform only with half the fps rate (M 74 16' fov). This is compared to the 1.6.0final performance on the same machine.

VC++2008 SP1, Win32 XP SP3, and /O2 /Oi /Oy default optimizations.

Fridger
Last edited by t00fri on 15.07.2009, 18:42, edited 1 time in total.
Image

abramson
Posts: 408
Joined: 22.07.2003
With us: 21 years 3 months
Location: Bariloche, Argentina

Re: Simplified builds on Win32

Post #29by abramson » 15.07.2009, 19:07

I cannot confirm Fridger's observation. I am getting the same performance of both the official 1.6.0 and svn 4767:

Following Earth from startup location, watching M 74 at 16' FOV, today (the Moon is near)
Smallish default window: 48fps
Maximized window (1680x1050): 16fps
Fullscreen (1680x1050x32): 20fps

Default optimizations in the sln, release, VC++2008 SP1, XP SP3
Core 2 Duo E6550 @ 2.333 GHz on a DG33BU board. Nvidia 7300LE, PCIE, 512MB.

G

Avatar
t00fri
Developer
Posts: 8772
Joined: 29.03.2002
Age: 22
With us: 22 years 7 months
Location: Hamburg, Germany

Re: Simplified builds on Win32

Post #30by t00fri » 15.07.2009, 19:36

abramson wrote:I cannot confirm Fridger's observation. I am getting the same performance of both the official 1.6.0 and svn 4767:

Following Earth from startup location, watching M 74 at 16' FOV, today (the Moon is near)
Smallish default window: 48fps
Maximized window (1680x1050): 16fps
Fullscreen (1680x1050x32): 20fps

Default optimizations in the sln, release, VC++2008 SP1, XP SP3
Core 2 Duo E6550 @ 2.333 GHz on a DG33BU board. Nvidia 7300LE, PCIE, 512MB.

G

Guillermo,

sorry, I now discovered that compared to my earllier standard benchmarks there was a leftover 2x AA still active. This costs speed, of course...

Now the rate is higher, but still significantly lower than without Eigen. Sse2 optimization in addition gives these rates (Core2Duo 2.0GHz):

1.6.0final: 72 fps (fullscreen) No SSE2!
Eigen 4767: 53 fps (fullscreen) with SSE2

all with M 74, 16' fov

My rates for Eigen, rev 4767 are quite comparable to yours, but with 1.6.0final, they were significantly higher! You did not show your corresponding rates for comparison.


Fridger

EDIT:. With 2xAA switched off and NO SSE2, now the rates of Eigen 4767 and 1.6.0final are about comparable: ~70 fps in fullscreen for M 74 16' on my Core2Duo 2.0 GHz.
Image

abramson
Posts: 408
Joined: 22.07.2003
With us: 21 years 3 months
Location: Bariloche, Argentina

Re: Simplified builds on Win32

Post #31by abramson » 15.07.2009, 20:32

t00fri wrote:You did not show your corresponding rates for comparison.
They were just the same, as i said. The difference was in 1 or 2 decimals of fps, which I rounded to the closest integer.

I am at home now. If I can, I will test tomorrow at the office again.

G

abramson
Posts: 408
Joined: 22.07.2003
With us: 21 years 3 months
Location: Bariloche, Argentina

Re: Simplified builds on Win32

Post #32by abramson » 15.07.2009, 21:23

Just built at home. Something was wrong at my office, because I am getting ~80fps (both 1.6.0 and svn4767), and this computer is a Pentium Dual Core E5200 @2.5GHz, on a DG41, with Intel integrated graphics!!!

I'm sorry, I will try to check tomorrow. In any case, I'm getting the same fps with both Celestias.

I don't know what's Sse2 optimization that Fridger mentions. Will check that up also.

Edit: I found the SSE2 flag. With it I'm getting around 70fps (down from ~80 without) at maximized window, and ~60fps at full screen (1280x1024).

I can check everything thoroughly if needed.

G


Return to “Development”