<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments on: Multi-cores and 64-bit GIS</title>
	<atom:link href="http://spatiallyadjusted.com/2008/03/12/multi-cores-and-64-bit-gis/feed/" rel="self" type="application/rss+xml" />
	<link>http://spatiallyadjusted.com/2008/03/12/multi-cores-and-64-bit-gis/</link>
	<description>Geospatial Technology, Web Mapping and Spatial Services</description>
	<lastBuildDate>Fri, 10 Feb 2012 19:09:18 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
	<item>
		<title>By: Dimitri</title>
		<link>http://spatiallyadjusted.com/2008/03/12/multi-cores-and-64-bit-gis/#comment-8785</link>
		<dc:creator><![CDATA[Dimitri]]></dc:creator>
		<pubDate>Tue, 08 Apr 2008 22:10:21 +0000</pubDate>
		<guid isPermaLink="false">http://www.spatiallyadjusted.com/2008/03/12/multi-cores-and-64-bit-gis/#comment-8785</guid>
		<description><![CDATA[I thought readers of this thread would be interested in a report of actual multiprocessor performance gain with time to do a task reduced from 20 minutes to 33 seconds, as reported in the georeference forum:

&lt;blockquote&gt;Having eagerly awaited delivery of my new 64bit machine (running XP Pro 64bit, 6Gb Ram and an Nvidia Quadro FX 4600 video card) I&#039;m amazed at the CUDA performance. The first thing I did with the machine was install Manifold Ultimate 64 bit edition.

Following the example in the Manifold help, I loaded one of my own surfaces and performed a transform on it. With Manifold using CUDA facilities on the video card, the process took 33 seconds. With CUDA switched off, the process took just under 20 minutes!!!
&lt;/blockquote&gt;

(From http://forum.manifold.net/forum/t62427.2 )

To cut the time required for a GIS task from 20 minutes to 33 seconds by using modern hardware at a fraction of the cost of  legacy GIS software is revolutionary.  Many GIS tasks will see such gains even with a much less expensive card than the Quadro.  For example, toss in a 9800 GX2 for a mere $550 and you get 256 processors hammering away at your job.

Getting factors of sixty speed improvements for such low costs is totally revolutionary.   If you are buying new computers, make sure you get NVIDIA for your GPU and make sure your system vendor supports NVIDIA.  In fact, this is so much bang for the buck you should probably spec out a larger power supply in your computer so you can easily plug in two or three CUDA enabled cards for even more performance.  I guess it goes without saying that 64-bits also is the only way to go. :-)]]></description>
		<content:encoded><![CDATA[<p>I thought readers of this thread would be interested in a report of actual multiprocessor performance gain with time to do a task reduced from 20 minutes to 33 seconds, as reported in the georeference forum:</p>
<blockquote><p>Having eagerly awaited delivery of my new 64bit machine (running XP Pro 64bit, 6Gb Ram and an Nvidia Quadro FX 4600 video card) I&#8217;m amazed at the CUDA performance. The first thing I did with the machine was install Manifold Ultimate 64 bit edition.</p>
<p>Following the example in the Manifold help, I loaded one of my own surfaces and performed a transform on it. With Manifold using CUDA facilities on the video card, the process took 33 seconds. With CUDA switched off, the process took just under 20 minutes!!!
</p></blockquote>
<p>(From <a href="http://forum.manifold.net/forum/t62427.2" rel="nofollow">http://forum.manifold.net/forum/t62427.2</a> )</p>
<p>To cut the time required for a GIS task from 20 minutes to 33 seconds by using modern hardware at a fraction of the cost of  legacy GIS software is revolutionary.  Many GIS tasks will see such gains even with a much less expensive card than the Quadro.  For example, toss in a 9800 GX2 for a mere $550 and you get 256 processors hammering away at your job.</p>
<p>Getting factors of sixty speed improvements for such low costs is totally revolutionary.   If you are buying new computers, make sure you get NVIDIA for your GPU and make sure your system vendor supports NVIDIA.  In fact, this is so much bang for the buck you should probably spec out a larger power supply in your computer so you can easily plug in two or three CUDA enabled cards for even more performance.  I guess it goes without saying that 64-bits also is the only way to go. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Luke Savage</title>
		<link>http://spatiallyadjusted.com/2008/03/12/multi-cores-and-64-bit-gis/#comment-8784</link>
		<dc:creator><![CDATA[Luke Savage]]></dc:creator>
		<pubDate>Tue, 08 Apr 2008 04:54:11 +0000</pubDate>
		<guid isPermaLink="false">http://www.spatiallyadjusted.com/2008/03/12/multi-cores-and-64-bit-gis/#comment-8784</guid>
		<description><![CDATA[Tim,
We use IIS 6.0/ASP.net 2.0.  It is really easy to install and configure on the IIS side.  Click on my link and I&#039;ll send you the install directions.  By the way, there is no upgrade package developed for MapGuide.]]></description>
		<content:encoded><![CDATA[<p>Tim,<br />
We use IIS 6.0/ASP.net 2.0.  It is really easy to install and configure on the IIS side.  Click on my link and I&#8217;ll send you the install directions.  By the way, there is no upgrade package developed for MapGuide.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tim Maddle</title>
		<link>http://spatiallyadjusted.com/2008/03/12/multi-cores-and-64-bit-gis/#comment-8783</link>
		<dc:creator><![CDATA[Tim Maddle]]></dc:creator>
		<pubDate>Mon, 07 Apr 2008 23:11:51 +0000</pubDate>
		<guid isPermaLink="false">http://www.spatiallyadjusted.com/2008/03/12/multi-cores-and-64-bit-gis/#comment-8783</guid>
		<description><![CDATA[Luke,
Thanks for the information.  I&#039;m not surprised about the raster issue since I&#039;ve had a hard time even getting them to load.  Also, do you use it with .NET or PHP?  It seems to be a breeze to get it to work with Apache/PHP, but I can&#039;t get it to work with IIS/ASP.NET.  I really like the Studio product - it seems like great way to build maps.]]></description>
		<content:encoded><![CDATA[<p>Luke,<br />
Thanks for the information.  I&#8217;m not surprised about the raster issue since I&#8217;ve had a hard time even getting them to load.  Also, do you use it with .NET or PHP?  It seems to be a breeze to get it to work with Apache/PHP, but I can&#8217;t get it to work with IIS/ASP.NET.  I really like the Studio product &#8211; it seems like great way to build maps.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Luke Savage</title>
		<link>http://spatiallyadjusted.com/2008/03/12/multi-cores-and-64-bit-gis/#comment-8782</link>
		<dc:creator><![CDATA[Luke Savage]]></dc:creator>
		<pubDate>Mon, 07 Apr 2008 04:21:16 +0000</pubDate>
		<guid isPermaLink="false">http://www.spatiallyadjusted.com/2008/03/12/multi-cores-and-64-bit-gis/#comment-8782</guid>
		<description><![CDATA[Tim/Phillip,
We&#039;ve developed on the new AutoDesk MapGuide 2007 and 2008 version and it is well developed for a viewer.  However, the raster engine is less than adequate.  We&#039;ve tried tiling, compressing the data in different increments (60%, 40%, and 10%).  Since we&#039;re an aerial mapping company, we were able to modify the data in many different ways.  The end result was the same.  Also, you could not use both map and base layering systems mixed.  This was a problem when rendering raster layers.  For this, I give MapGuide a &quot;Good&quot; status as the cost is low for a well architected product.  Hands down, the vector engine is the fastest renderer that we&#039;ve used.  The modifications in the WYSIWYG environment are much better than its competitors.  It was much easier to modify and manipulate the API.  ESRI&#039;s WebADF controls are less than desirable to modify.  Overall, I was impressed by AutoDesk and if they speed up the raster engine they could be the IMS of choice for GIS consultants.]]></description>
		<content:encoded><![CDATA[<p>Tim/Phillip,<br />
We&#8217;ve developed on the new AutoDesk MapGuide 2007 and 2008 version and it is well developed for a viewer.  However, the raster engine is less than adequate.  We&#8217;ve tried tiling, compressing the data in different increments (60%, 40%, and 10%).  Since we&#8217;re an aerial mapping company, we were able to modify the data in many different ways.  The end result was the same.  Also, you could not use both map and base layering systems mixed.  This was a problem when rendering raster layers.  For this, I give MapGuide a &#8220;Good&#8221; status as the cost is low for a well architected product.  Hands down, the vector engine is the fastest renderer that we&#8217;ve used.  The modifications in the WYSIWYG environment are much better than its competitors.  It was much easier to modify and manipulate the API.  ESRI&#8217;s WebADF controls are less than desirable to modify.  Overall, I was impressed by AutoDesk and if they speed up the raster engine they could be the IMS of choice for GIS consultants.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dimitri</title>
		<link>http://spatiallyadjusted.com/2008/03/12/multi-cores-and-64-bit-gis/#comment-8781</link>
		<dc:creator><![CDATA[Dimitri]]></dc:creator>
		<pubDate>Sun, 06 Apr 2008 15:37:01 +0000</pubDate>
		<guid isPermaLink="false">http://www.spatiallyadjusted.com/2008/03/12/multi-cores-and-64-bit-gis/#comment-8781</guid>
		<description><![CDATA[&lt;blockquote&gt;why not use distributed computing &lt;/blockquote&gt;

You certainly *could* use distributed computing (which I will refer to as &quot;cluster&quot; computing here) - the main questions being whether doing so is more performant, less costly/convenient, etc.


&lt;blockquote&gt;After all, the â€œnetâ€ is the computerâ€¦ certainly in the futureâ€¦&lt;/blockquote&gt;

No.   The &quot;net&quot; is a communications medium, not the computer.   Whether you are linking multiple processors (the real computers) together using local RAM bus bandwidth or whether you are linking multiple processors together using network bandwidth makes a big difference, because networks are vastly slower than local bus bandwidth and because there are practical issues involved in coordinating resources not directly under your control.

From a software perspective, there is not much algorithmic difference between parallelizing a task to run on multiple local processors or parallelizing that task to run on multiple non-local clustered processors.   The main differences are the very non-trivial aspects of discovering which resources are available in foreign machines that are much less directly under your control and dealing with the highly asynchronous nature of dispatching part of a task to a remote processor and then collecting and integrating any results when, and if, the dispatched task ever gets serviced.   That adds to the cost and complexity of the application as compared to a purely local one.

The main hit to performance is that networks run far, far slower than local parallelization.   This is for two reasons:

1. Networks are much slower than processor to RAM bandwidth.  WANs are even slower than LANs and because of regulatory bottlenecks are falling even further behind on a proportional basis. 

2. The speed of light limits performance as physical distance increases between processors.   This is already a factor within architectures seeking multi-teraflop performance.

But setting the above two issues aside, what counts for most people is simple convenience.  If you can plug 256 lightning-fast processors into your computer for a mere $550 (as can be done with NVIDIA&#039;s 9800 GX2 board) or 512 processors for about $1100, well, unless your time is worth no more than that of a burger joint&#039;s employee you are simply going to plug in one or two such boards and enjoy the immense power of hundreds of processors locally.

So, yeah, clusters were a great idea in the 1990&#039;s but have become a second or third tier idea in modern times given the rapid progress of vendors like NVIDIA in packing hundreds of processors into local bandwidth for what are nearly free prices.

I think that&#039;s why GIS vendors most advanced in technology (everyone knows we are not talking about ESRI here...) have come out with massively parallel computing using NVIDIA CUDA and are not pushing clusters.]]></description>
		<content:encoded><![CDATA[<blockquote><p>why not use distributed computing </p></blockquote>
<p>You certainly *could* use distributed computing (which I will refer to as &#8220;cluster&#8221; computing here) &#8211; the main questions being whether doing so is more performant, less costly/convenient, etc.</p>
<blockquote><p>After all, the â€œnetâ€ is the computerâ€¦ certainly in the futureâ€¦</p></blockquote>
<p>No.   The &#8220;net&#8221; is a communications medium, not the computer.   Whether you are linking multiple processors (the real computers) together using local RAM bus bandwidth or whether you are linking multiple processors together using network bandwidth makes a big difference, because networks are vastly slower than local bus bandwidth and because there are practical issues involved in coordinating resources not directly under your control.</p>
<p>From a software perspective, there is not much algorithmic difference between parallelizing a task to run on multiple local processors or parallelizing that task to run on multiple non-local clustered processors.   The main differences are the very non-trivial aspects of discovering which resources are available in foreign machines that are much less directly under your control and dealing with the highly asynchronous nature of dispatching part of a task to a remote processor and then collecting and integrating any results when, and if, the dispatched task ever gets serviced.   That adds to the cost and complexity of the application as compared to a purely local one.</p>
<p>The main hit to performance is that networks run far, far slower than local parallelization.   This is for two reasons:</p>
<p>1. Networks are much slower than processor to RAM bandwidth.  WANs are even slower than LANs and because of regulatory bottlenecks are falling even further behind on a proportional basis. </p>
<p>2. The speed of light limits performance as physical distance increases between processors.   This is already a factor within architectures seeking multi-teraflop performance.</p>
<p>But setting the above two issues aside, what counts for most people is simple convenience.  If you can plug 256 lightning-fast processors into your computer for a mere $550 (as can be done with NVIDIA&#8217;s 9800 GX2 board) or 512 processors for about $1100, well, unless your time is worth no more than that of a burger joint&#8217;s employee you are simply going to plug in one or two such boards and enjoy the immense power of hundreds of processors locally.</p>
<p>So, yeah, clusters were a great idea in the 1990&#8242;s but have become a second or third tier idea in modern times given the rapid progress of vendors like NVIDIA in packing hundreds of processors into local bandwidth for what are nearly free prices.</p>
<p>I think that&#8217;s why GIS vendors most advanced in technology (everyone knows we are not talking about ESRI here&#8230;) have come out with massively parallel computing using NVIDIA CUDA and are not pushing clusters.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Or</title>
		<link>http://spatiallyadjusted.com/2008/03/12/multi-cores-and-64-bit-gis/#comment-8780</link>
		<dc:creator><![CDATA[Or]]></dc:creator>
		<pubDate>Sun, 06 Apr 2008 11:01:39 +0000</pubDate>
		<guid isPermaLink="false">http://www.spatiallyadjusted.com/2008/03/12/multi-cores-and-64-bit-gis/#comment-8780</guid>
		<description><![CDATA[Instead of 64 bit, 128 bit, dual-core, 256-core, and so on, why not use distributed computing on the net like &lt;a href=&quot;http://www.gstock.com&quot; rel=&quot;nofollow&quot;&gt;GStock Virtual Supercomputer for Stock Picks&lt;/a&gt; ? If it works for the community, it will work for the individual...
After all, the &quot;net&quot; is the computer... certainly in the future...]]></description>
		<content:encoded><![CDATA[<p>Instead of 64 bit, 128 bit, dual-core, 256-core, and so on, why not use distributed computing on the net like <a href="http://www.gstock.com" rel="nofollow">GStock Virtual Supercomputer for Stock Picks</a> ? If it works for the community, it will work for the individual&#8230;<br />
After all, the &#8220;net&#8221; is the computer&#8230; certainly in the future&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tim Maddle</title>
		<link>http://spatiallyadjusted.com/2008/03/12/multi-cores-and-64-bit-gis/#comment-8779</link>
		<dc:creator><![CDATA[Tim Maddle]]></dc:creator>
		<pubDate>Tue, 25 Mar 2008 00:26:19 +0000</pubDate>
		<guid isPermaLink="false">http://www.spatiallyadjusted.com/2008/03/12/multi-cores-and-64-bit-gis/#comment-8779</guid>
		<description><![CDATA[Phillip,
I&#039;ve been doing some experimenting with MapGuide recently and am finding it to be a pretty well-developed product.  They have a samples page at:  
&lt;a href=&#039;http://mapguide.osgeo.org/livegallery.html&#039; rel=&quot;nofollow&quot;&gt;
http://mapguide.osgeo.org/livegallery.html&lt;/a&gt;

One particular demo that caught my eye regarding nice labeling was:
&lt;a href=&#039;http://216.103.100.65/mapguide/sftrees/index2.aspx&#039; rel=&quot;nofollow&quot;&gt;
http://216.103.100.65/mapguide/sftrees/index2.aspx&lt;/a&gt;

I can&#039;t tell you about performance, but maybe MG is another option if you&#039;re looking for alternatives.]]></description>
		<content:encoded><![CDATA[<p>Phillip,<br />
I&#8217;ve been doing some experimenting with MapGuide recently and am finding it to be a pretty well-developed product.  They have a samples page at:<br />
<a href='http://mapguide.osgeo.org/livegallery.html' rel="nofollow"><br />
</a><a href="http://mapguide.osgeo.org/livegallery.html" rel="nofollow">http://mapguide.osgeo.org/livegallery.html</a></p>
<p>One particular demo that caught my eye regarding nice labeling was:<br />
<a href='http://216.103.100.65/mapguide/sftrees/index2.aspx' rel="nofollow"><br />
</a><a href="http://216.103.100.65/mapguide/sftrees/index2.aspx" rel="nofollow">http://216.103.100.65/mapguide/sftrees/index2.aspx</a></p>
<p>I can&#8217;t tell you about performance, but maybe MG is another option if you&#8217;re looking for alternatives.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Rick Branson</title>
		<link>http://spatiallyadjusted.com/2008/03/12/multi-cores-and-64-bit-gis/#comment-8778</link>
		<dc:creator><![CDATA[Rick Branson]]></dc:creator>
		<pubDate>Sat, 22 Mar 2008 02:33:29 +0000</pubDate>
		<guid isPermaLink="false">http://www.spatiallyadjusted.com/2008/03/12/multi-cores-and-64-bit-gis/#comment-8778</guid>
		<description><![CDATA[Dmitri,

Our peak IMS performance with Manifold is about 20,000 renders/hour on a 3.2GHz quad core server. Full North American geography simplified to 1:50,000 in the MAP file and more detailed geography loaded in from a PostGIS database at lower zoom levels. We&#039;ve ditched the MapServer object as we need more flexibility, but we&#039;re still using Manifold&#039;s objects as the underlying rendering engine.]]></description>
		<content:encoded><![CDATA[<p>Dmitri,</p>
<p>Our peak IMS performance with Manifold is about 20,000 renders/hour on a 3.2GHz quad core server. Full North American geography simplified to 1:50,000 in the MAP file and more detailed geography loaded in from a PostGIS database at lower zoom levels. We&#8217;ve ditched the MapServer object as we need more flexibility, but we&#8217;re still using Manifold&#8217;s objects as the underlying rendering engine.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dimitri</title>
		<link>http://spatiallyadjusted.com/2008/03/12/multi-cores-and-64-bit-gis/#comment-8777</link>
		<dc:creator><![CDATA[Dimitri]]></dc:creator>
		<pubDate>Mon, 17 Mar 2008 02:59:47 +0000</pubDate>
		<guid isPermaLink="false">http://www.spatiallyadjusted.com/2008/03/12/multi-cores-and-64-bit-gis/#comment-8777</guid>
		<description><![CDATA[Phillip:

&lt;blockquote&gt;Our map servers get between 15,000-30,000 requests per hour during business days. We have 6 machines running 12 instances.&lt;/blockquote&gt;

That&#039;s only about 150,000 to 300,000 requests per 10 hour day - more than most sites get but in an absolute frame of reference not all that much.   I would not be surprised if you could get all that running on a single  dual-socket (eight core) server with, say, 16GB of RAM, running x64 Windows and x64 Manifold and either match or exceed the rendering performance you have today with six machines.

The way to test this without spending or risking a lot of money is to procure a quad-core 64-bit computer with, say, 8GB of RAM... that&#039;s a relatively inexpensive machine that would be just fine as an upgrade for your personal development desktop machine after you&#039;ve finished the test. :-)

Use that machine to get some expertise in Manifold so you can configure your application optimally and then give it a try.  Initially, you can do a quick and dirty web site that accesses and displays the big data in a realistic test that avoids any performance killers but which is not totally equipped with all the refinements you&#039;ll eventually add.

If it pans out OK, well, then you can make the bigger jump to a dual socket, big memory server (which tend to cost significantly more than single socket &quot;desktop&quot; machines). 

If it doesn&#039;t pan out OK, you will almost certainly discover some new possibilities that you can put into play with future projects that could end up saving you a lot of time and money.  Worst case, you just upgraded your personal development machine to be ready for whatever comes down the 64-bit pike. :-)

One point of advice on the machine: get something that can host NVIDIA CUDA cards, ideally with two full-speed sockets so you can do SLI with two CUDA cards.    CUDA performance is so intensely addictive and so inexpensive that you&#039;ll never forgive yourself if at the same price you could have sourced a box that later on will let you plug in two full-speed cards but failed to do so. :-)

[Your initial web application almost certainly won&#039;t be able to use the CUDA cards but as summer turns into fall the next generation of Mainfold product will quite likely give you some eye-popping performance benefits if you have a CUDA card in the box.]

&lt;blockquote&gt;Serving lots of maps is no problem for us, its the speed in which they render. Iâ€™d like more speed but donâ€™t want to drop the quality of the maps we have now. &lt;/blockquote&gt;

You&#039;ll have, to some degree, the same issue with Manifold as clearly if you are working with very large, very complex data to provide a lot of detail there is more computation the system must do.   But 64-bit operation wins you a lot and even though it is a more complex matter, multicore operation will be a resource you&#039;ll want to utilize too.

&lt;blockquote&gt;Itâ€™d be interesting to see screenshots of the rendering options for Manifold. ArcGIS has so many layer rendering options that it makes you dizzy, but it also makes great looking maps (even if they are slow to render.)&lt;/blockquote&gt;

Rendering options in Manifold are disperesed among many different features throughout the system.  For example, layer opacity is a property of a layer whether it is displayed on the desktop console or through IMS.  Likewise zoom ranges, anti-aliasing, various sorts of thematic formatting, label clipping, and what I guess would be hundreds of individual features involved in rendering.  Some of these are specific to different data types so they are not in just one part of the user manual.  You&#039;d have to visit the drawings, layers, images, surfaces and terrains and so forth chapters.  

On the plus side, since these rendering capabilities and options are the same whether you are looking at your map through IMS or through the regular desktop console (akin to using say, ArcView or whatever),  that makes it easy to create, edit and see in a WYSIWYG way what will appear in the IMS display. 

By the way, everyone reading this who is running 32-bit Windows owes it to their organizations to upgrade their personal machines to 64-bit Windows.    

Let me help you justify the expense by assuring you that whatever GIS strategy you end up pursuing, now is the right time to go 64-bit.  Prices have dropped, drivers are everywhere, RAM is cheap, new motherboards support the new generation of quad-core processors... it&#039;s a real sweet spot to start getting that hands-on experience upon which your organization will depend when it comes time to move to 64-bits.  Rome wasn&#039;t built in a day, and all that. 

Considering that 64-bit operation could easily save your organization huge sums of money, now is the time for you to procure a 64-bit box for your desk.  Would be irresponsible not to! :-)]]></description>
		<content:encoded><![CDATA[<p>Phillip:</p>
<blockquote><p>Our map servers get between 15,000-30,000 requests per hour during business days. We have 6 machines running 12 instances.</p></blockquote>
<p>That&#8217;s only about 150,000 to 300,000 requests per 10 hour day &#8211; more than most sites get but in an absolute frame of reference not all that much.   I would not be surprised if you could get all that running on a single  dual-socket (eight core) server with, say, 16GB of RAM, running x64 Windows and x64 Manifold and either match or exceed the rendering performance you have today with six machines.</p>
<p>The way to test this without spending or risking a lot of money is to procure a quad-core 64-bit computer with, say, 8GB of RAM&#8230; that&#8217;s a relatively inexpensive machine that would be just fine as an upgrade for your personal development desktop machine after you&#8217;ve finished the test. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Use that machine to get some expertise in Manifold so you can configure your application optimally and then give it a try.  Initially, you can do a quick and dirty web site that accesses and displays the big data in a realistic test that avoids any performance killers but which is not totally equipped with all the refinements you&#8217;ll eventually add.</p>
<p>If it pans out OK, well, then you can make the bigger jump to a dual socket, big memory server (which tend to cost significantly more than single socket &#8220;desktop&#8221; machines). </p>
<p>If it doesn&#8217;t pan out OK, you will almost certainly discover some new possibilities that you can put into play with future projects that could end up saving you a lot of time and money.  Worst case, you just upgraded your personal development machine to be ready for whatever comes down the 64-bit pike. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>One point of advice on the machine: get something that can host NVIDIA CUDA cards, ideally with two full-speed sockets so you can do SLI with two CUDA cards.    CUDA performance is so intensely addictive and so inexpensive that you&#8217;ll never forgive yourself if at the same price you could have sourced a box that later on will let you plug in two full-speed cards but failed to do so. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>[Your initial web application almost certainly won't be able to use the CUDA cards but as summer turns into fall the next generation of Mainfold product will quite likely give you some eye-popping performance benefits if you have a CUDA card in the box.]</p>
<blockquote><p>Serving lots of maps is no problem for us, its the speed in which they render. Iâ€™d like more speed but donâ€™t want to drop the quality of the maps we have now. </p></blockquote>
<p>You&#8217;ll have, to some degree, the same issue with Manifold as clearly if you are working with very large, very complex data to provide a lot of detail there is more computation the system must do.   But 64-bit operation wins you a lot and even though it is a more complex matter, multicore operation will be a resource you&#8217;ll want to utilize too.</p>
<blockquote><p>Itâ€™d be interesting to see screenshots of the rendering options for Manifold. ArcGIS has so many layer rendering options that it makes you dizzy, but it also makes great looking maps (even if they are slow to render.)</p></blockquote>
<p>Rendering options in Manifold are disperesed among many different features throughout the system.  For example, layer opacity is a property of a layer whether it is displayed on the desktop console or through IMS.  Likewise zoom ranges, anti-aliasing, various sorts of thematic formatting, label clipping, and what I guess would be hundreds of individual features involved in rendering.  Some of these are specific to different data types so they are not in just one part of the user manual.  You&#8217;d have to visit the drawings, layers, images, surfaces and terrains and so forth chapters.  </p>
<p>On the plus side, since these rendering capabilities and options are the same whether you are looking at your map through IMS or through the regular desktop console (akin to using say, ArcView or whatever),  that makes it easy to create, edit and see in a WYSIWYG way what will appear in the IMS display. </p>
<p>By the way, everyone reading this who is running 32-bit Windows owes it to their organizations to upgrade their personal machines to 64-bit Windows.    </p>
<p>Let me help you justify the expense by assuring you that whatever GIS strategy you end up pursuing, now is the right time to go 64-bit.  Prices have dropped, drivers are everywhere, RAM is cheap, new motherboards support the new generation of quad-core processors&#8230; it&#8217;s a real sweet spot to start getting that hands-on experience upon which your organization will depend when it comes time to move to 64-bits.  Rome wasn&#8217;t built in a day, and all that. </p>
<p>Considering that 64-bit operation could easily save your organization huge sums of money, now is the time for you to procure a 64-bit box for your desk.  Would be irresponsible not to! <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dimitri</title>
		<link>http://spatiallyadjusted.com/2008/03/12/multi-cores-and-64-bit-gis/#comment-8776</link>
		<dc:creator><![CDATA[Dimitri]]></dc:creator>
		<pubDate>Mon, 17 Mar 2008 02:10:39 +0000</pubDate>
		<guid isPermaLink="false">http://www.spatiallyadjusted.com/2008/03/12/multi-cores-and-64-bit-gis/#comment-8776</guid>
		<description><![CDATA[Luke:

&lt;blockquote&gt;I checked out the websites for IMS and they are fairly quick but I wonder why they are so small. &lt;/blockquote&gt;

I don&#039;t know what IMS sites you are looking at, but if you are looking at the IMS examples page on the manifold.net web site those are all tutorial examples.    The data is deliberately kept small so that the zip files are small and easily downloaded.  Plus, you never know what machine a new user is employing to try out sites so it pays to keep examples small in case it is a small, slow machine.

All of the manifold hosted demo sites tend to use smaller frame sizes because some of our visitors connect via slow Internet links (think middle of Africa, etc. ) so they prefer smaller sized web content.

&lt;blockquote&gt;Do you have a website with IMS that increases the extent of the map frame. The
&lt;/blockquote&gt;

Sure.  You can make it whatever size you want.    There are lots of sites (see the forum, as well as citations in this thread by contributors) of much larger map frames.  

Note that webmasters often prefer smaller sizes for the maps they show for a variety of reasons.  

Probably the most frequent is that it takes no thought at all to use a smaller size, like 600 x 400, to assure the display will almost always more easily fit the browser window no matter the size of the monitor/laptop/window than it is to code a variety of sizes to fit different devices.

Probably the next most frequent is that it is almost a law of nature that webmasters, like everyone else, always like more bandwidth than they have purchased. :-)    They toss smaller images down the pipe so they can get snappier action for more visitors with a cheaper pipe.  

Third is being considerate of users who may have slow Internet connections, a real factor in poorer areas in the US where many folks still use dial-up and absolutely a real factor in many parts of the world where slow Internet connections are the best you can get.

If you have an intranet application over a fast LAN where you know the monitors in use you don&#039;t care about the above, of course, so you&#039;ll likely use larger sizes.

 &lt;blockquote&gt;test of quickness is determined by how it handles multitude of large datasets displaying them in an efficient way. How will IMS hold up in a rich vector/raster environment (i.e. 60 detailed GIS layers with high resolution orthophotos (1/2 foot pixel resolution)?&lt;/blockquote&gt;

The number of layers or images really doesn&#039;t matter as much as the methodology used.  

That depends upon a lot of factors which are set forth in the Performance Tips topic in the user manual.   If you want to do complex things with large data on a small machine you will need more expertise to pull that off than someone who is doing simple things with small data on a rocket fast machine.   (The usual case with much software). 

Let&#039;s consider an example:  Manifold gives you very many options with how to store, link and consume images.  Choose a fast method (spatial DBMS storage, linked ECW image, etc.) and use the same projection as your map window (so no reprojection on the fly need occur) and it is instantaneous.  Choose a slow storage method and force it to reproject on the fly and it will be painfully slow - but those are gross negligence sorts of mistakes that webmasters should not be making.

Likewise, it usually doesn&#039;t pay to try to display 60 layers full of complex data at the same time since the display will be illegible.  The more usual situation is that there are 60 layers in the project but only some intelligible subset of them is displayed at any one time.  Users (or the application) chooses the layers that are &quot;on&quot; at any given instant, using methods like zoom ranges whereby layers are turned on or off for display automatically as users zoom into or out of the display.

I believe some of the sample sites  or those given by users illustrate the use of the above techniques.  Zoom ranges, for example, are really easy to use.

&lt;blockquote&gt; With these specifications, can the map window be scaled to fit on a normal 1200Ã—768 or 800Ã—600 resolution map frame and still perform well?&lt;/blockquote&gt;

Sure. 

&lt;blockquote&gt;Being multicore and 64-bit enabled only helps when the solution can handle these types of specifications eloquently.&lt;/blockquote&gt;

More accurately, being multicore and 64-bit are essential technological advantages which help the solution handle those types of specifications eloquently.    One of the most important benefits of 64-bit, multicore operation is providing faster rendering performance.

Let&#039;s take an example: many web applications are intrinsically linked to use of DBMS with most sophisticated spatial web applications utilizing spatial DBMS (in fact, now that using spatial DBMS has become effectively free, we see even small users taking advantage of spatial DBMS within the manifold community).  It&#039;s a really big deal for performance if you can fetch data from that spatial DBMS using multiple processors to launch multiple threads.  If you have eight cores in your server and you run Manifold to link to a georaster stored in Oracle Spatial, Manifold will use all those cores to grab georaster image tiles from the spatial DBMS using multiple threads.

That&#039;s an example where absent multicore performance someone might say &quot;oh, that renders slow... toss another machine at it&quot; but the faster rendering that comes about from multicore performance is not a simple matter of multiple cores each rendering a portion of a small display, it is in speeding up the data access portion of the task, which quite often is indeed the bottleneck.   Sure, there are cases where multiple processors can render an image faster when each takes over the rendering of a portion of that image.  Manifold does that with image libraries.  But I just wanted to use this example to show how multiple processors can improve rendering performance by improving something other than the final rendering task, that is, by improving data access.

If there is a lot going on then likewise you&#039;ll want to have 64-bit operation because then you will not be limited to what in actual practise in 32-bit Windows quite often ends up being a mere 1 GB process space.  You&#039;ll want to be able to load up your server with 8, 16, 24 or 32 GB of RAM and actually be able to use that RAM.  

In the example given by Phillip, I wouldn&#039;t be surprised that one of the reasons why he needs to use multiple boxes to deal with a relatively small volume of traffic is that each of his boxes is emulating a 32-bit processor running 32-bit Windows.  So, instead of being able to use a single contiguous 16 GB space within a single 64-bit box to avoid paging to disk, to manage delays caused by paging caused by the relatively small memory space supported by 32-bit Windows he has to divide up his user services to run on multiple boxes.

That&#039;s just a guess and no doubt there are other factors at play, but going 64-bit often makes a big difference if you have the sorts of complexity issues that make a process  just large enough to trigger paging within a 32-bit Windows system.   That is a huge deal.

The moment that happens, you are no longer working within the microsecond access times typical of RAM but instead are dealing with the millisecond access times typical of hard disks - a thousand times slower.  You don&#039;t have to slow down data access a thousandfold too often to end up making your application dramatically slower than it could be if paging were not in the picture.

By the way, a lot of folks may wrongly think that &quot;oh, I&#039;m concerned about rendering and a 1280 x 1024 frame to render is way under a gigabyte, so that can&#039;t be the case&quot; 

That&#039;s not how it works since GIS packages in general have a lot to think about in order to decide exactly what has to be displayed within that 1280 x 1023 frame.  So it is not the raw number of bytes for that many pixels, it is the size of the processes involved with working with the data that may or may not be displayed, considering, possibly, the entire size of the data, memory consumed by data access methods, by analytics (as are necessary for things like thematic formatting, deciding how something is to be rendered, visability of what&#039;s visible given on what&#039;s on top or not, etc.) .  Also, keep in mind that programs which use Windows will naturally want to leverage a wide variety of Windows facilities and related Microsoft technologies to avoid re-inventing the wheel.  It is the most natural thing in the world to include some handy capability without realizing that you&#039;ve just increase the size of your process dramatically to utilize that capability.

[Folks are sometime shocked at the &quot;huge&quot; amount of memory that can be consumed for what seem to be simple things.  I&#039;m not bad-mouthing the phenomenon, either, by the way, because human time is far more expensive than RAM.  The correct thing to do in modern times is to take advantage of the ability to re-cycle effective, well-debugged code.  That&#039;s much wiser than re-inventing the wheel to make it fit into what are now obsolete and too-small memory spaces.]

If you are emulating a processor that tops out at only a gigabyte or two you are going to be paging a *lot* more than if you have the seamless ability to use larger RAM.  And it must be emphasized that what used to be astronomically expensive, say, 8, 16, 24 or 32 GB of RAM is now very affordable, probably some of the least expensive parts of the web server.]]></description>
		<content:encoded><![CDATA[<p>Luke:</p>
<blockquote><p>I checked out the websites for IMS and they are fairly quick but I wonder why they are so small. </p></blockquote>
<p>I don&#8217;t know what IMS sites you are looking at, but if you are looking at the IMS examples page on the manifold.net web site those are all tutorial examples.    The data is deliberately kept small so that the zip files are small and easily downloaded.  Plus, you never know what machine a new user is employing to try out sites so it pays to keep examples small in case it is a small, slow machine.</p>
<p>All of the manifold hosted demo sites tend to use smaller frame sizes because some of our visitors connect via slow Internet links (think middle of Africa, etc. ) so they prefer smaller sized web content.</p>
<blockquote><p>Do you have a website with IMS that increases the extent of the map frame. The
</p></blockquote>
<p>Sure.  You can make it whatever size you want.    There are lots of sites (see the forum, as well as citations in this thread by contributors) of much larger map frames.  </p>
<p>Note that webmasters often prefer smaller sizes for the maps they show for a variety of reasons.  </p>
<p>Probably the most frequent is that it takes no thought at all to use a smaller size, like 600 x 400, to assure the display will almost always more easily fit the browser window no matter the size of the monitor/laptop/window than it is to code a variety of sizes to fit different devices.</p>
<p>Probably the next most frequent is that it is almost a law of nature that webmasters, like everyone else, always like more bandwidth than they have purchased. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />     They toss smaller images down the pipe so they can get snappier action for more visitors with a cheaper pipe.  </p>
<p>Third is being considerate of users who may have slow Internet connections, a real factor in poorer areas in the US where many folks still use dial-up and absolutely a real factor in many parts of the world where slow Internet connections are the best you can get.</p>
<p>If you have an intranet application over a fast LAN where you know the monitors in use you don&#8217;t care about the above, of course, so you&#8217;ll likely use larger sizes.</p>
<blockquote><p>test of quickness is determined by how it handles multitude of large datasets displaying them in an efficient way. How will IMS hold up in a rich vector/raster environment (i.e. 60 detailed GIS layers with high resolution orthophotos (1/2 foot pixel resolution)?</p></blockquote>
<p>The number of layers or images really doesn&#8217;t matter as much as the methodology used.  </p>
<p>That depends upon a lot of factors which are set forth in the Performance Tips topic in the user manual.   If you want to do complex things with large data on a small machine you will need more expertise to pull that off than someone who is doing simple things with small data on a rocket fast machine.   (The usual case with much software). </p>
<p>Let&#8217;s consider an example:  Manifold gives you very many options with how to store, link and consume images.  Choose a fast method (spatial DBMS storage, linked ECW image, etc.) and use the same projection as your map window (so no reprojection on the fly need occur) and it is instantaneous.  Choose a slow storage method and force it to reproject on the fly and it will be painfully slow &#8211; but those are gross negligence sorts of mistakes that webmasters should not be making.</p>
<p>Likewise, it usually doesn&#8217;t pay to try to display 60 layers full of complex data at the same time since the display will be illegible.  The more usual situation is that there are 60 layers in the project but only some intelligible subset of them is displayed at any one time.  Users (or the application) chooses the layers that are &#8220;on&#8221; at any given instant, using methods like zoom ranges whereby layers are turned on or off for display automatically as users zoom into or out of the display.</p>
<p>I believe some of the sample sites  or those given by users illustrate the use of the above techniques.  Zoom ranges, for example, are really easy to use.</p>
<blockquote><p> With these specifications, can the map window be scaled to fit on a normal 1200Ã—768 or 800Ã—600 resolution map frame and still perform well?</p></blockquote>
<p>Sure. </p>
<blockquote><p>Being multicore and 64-bit enabled only helps when the solution can handle these types of specifications eloquently.</p></blockquote>
<p>More accurately, being multicore and 64-bit are essential technological advantages which help the solution handle those types of specifications eloquently.    One of the most important benefits of 64-bit, multicore operation is providing faster rendering performance.</p>
<p>Let&#8217;s take an example: many web applications are intrinsically linked to use of DBMS with most sophisticated spatial web applications utilizing spatial DBMS (in fact, now that using spatial DBMS has become effectively free, we see even small users taking advantage of spatial DBMS within the manifold community).  It&#8217;s a really big deal for performance if you can fetch data from that spatial DBMS using multiple processors to launch multiple threads.  If you have eight cores in your server and you run Manifold to link to a georaster stored in Oracle Spatial, Manifold will use all those cores to grab georaster image tiles from the spatial DBMS using multiple threads.</p>
<p>That&#8217;s an example where absent multicore performance someone might say &#8220;oh, that renders slow&#8230; toss another machine at it&#8221; but the faster rendering that comes about from multicore performance is not a simple matter of multiple cores each rendering a portion of a small display, it is in speeding up the data access portion of the task, which quite often is indeed the bottleneck.   Sure, there are cases where multiple processors can render an image faster when each takes over the rendering of a portion of that image.  Manifold does that with image libraries.  But I just wanted to use this example to show how multiple processors can improve rendering performance by improving something other than the final rendering task, that is, by improving data access.</p>
<p>If there is a lot going on then likewise you&#8217;ll want to have 64-bit operation because then you will not be limited to what in actual practise in 32-bit Windows quite often ends up being a mere 1 GB process space.  You&#8217;ll want to be able to load up your server with 8, 16, 24 or 32 GB of RAM and actually be able to use that RAM.  </p>
<p>In the example given by Phillip, I wouldn&#8217;t be surprised that one of the reasons why he needs to use multiple boxes to deal with a relatively small volume of traffic is that each of his boxes is emulating a 32-bit processor running 32-bit Windows.  So, instead of being able to use a single contiguous 16 GB space within a single 64-bit box to avoid paging to disk, to manage delays caused by paging caused by the relatively small memory space supported by 32-bit Windows he has to divide up his user services to run on multiple boxes.</p>
<p>That&#8217;s just a guess and no doubt there are other factors at play, but going 64-bit often makes a big difference if you have the sorts of complexity issues that make a process  just large enough to trigger paging within a 32-bit Windows system.   That is a huge deal.</p>
<p>The moment that happens, you are no longer working within the microsecond access times typical of RAM but instead are dealing with the millisecond access times typical of hard disks &#8211; a thousand times slower.  You don&#8217;t have to slow down data access a thousandfold too often to end up making your application dramatically slower than it could be if paging were not in the picture.</p>
<p>By the way, a lot of folks may wrongly think that &#8220;oh, I&#8217;m concerned about rendering and a 1280 x 1024 frame to render is way under a gigabyte, so that can&#8217;t be the case&#8221; </p>
<p>That&#8217;s not how it works since GIS packages in general have a lot to think about in order to decide exactly what has to be displayed within that 1280 x 1023 frame.  So it is not the raw number of bytes for that many pixels, it is the size of the processes involved with working with the data that may or may not be displayed, considering, possibly, the entire size of the data, memory consumed by data access methods, by analytics (as are necessary for things like thematic formatting, deciding how something is to be rendered, visability of what&#8217;s visible given on what&#8217;s on top or not, etc.) .  Also, keep in mind that programs which use Windows will naturally want to leverage a wide variety of Windows facilities and related Microsoft technologies to avoid re-inventing the wheel.  It is the most natural thing in the world to include some handy capability without realizing that you&#8217;ve just increase the size of your process dramatically to utilize that capability.</p>
<p>[Folks are sometime shocked at the "huge" amount of memory that can be consumed for what seem to be simple things.  I'm not bad-mouthing the phenomenon, either, by the way, because human time is far more expensive than RAM.  The correct thing to do in modern times is to take advantage of the ability to re-cycle effective, well-debugged code.  That's much wiser than re-inventing the wheel to make it fit into what are now obsolete and too-small memory spaces.]</p>
<p>If you are emulating a processor that tops out at only a gigabyte or two you are going to be paging a *lot* more than if you have the seamless ability to use larger RAM.  And it must be emphasized that what used to be astronomically expensive, say, 8, 16, 24 or 32 GB of RAM is now very affordable, probably some of the least expensive parts of the web server.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

