Thursday, June 11, 2009

Rally toward the multiprocessors and cloud computing





The rally to multiprocessor/grid/cloud computing begins. I think technology starting gradually to approach maturity point, when it's possible to crop money from the technological break. It is especially important, since mentioned areas are essential for the next economy boom/bubble cycle, which seems to ride on energy consumption:



Interesting development in this field is NVIDIA's CUDA technology which evolved from their developments done for the high-performance gaming video cards.Basically CUDA is a set of processors embedded in a GPU card, that are clustered in a blocks. Amount ranges from few hundreds in low-budget cards and up to thounsands in GPU-dedicated cards line (Tesla). There is a ready API enabling to utilize this enormous (and enormously cheap) computing power in software applications. (It integrates with VS 2005 / 2008 and from development point of view - the parallel code should be placed in a separate files [.cu], developed in plain C extended with some parallel notions. - You kind of specifying (by using special registers) which MP cluster and which processor inside of cluster is used for the specific code route.) For a now such integration is not really smooth and requires development effort, but by no doubts NVIDIA would extend it for C++ and .NET. There are some 3rd party SDK's already to integrate it with .NET actually: http://www.gass-ltd.co.il/en/products/cuda.net/Releases.aspx

Notes about future developments in multiprocessign computing



Below are engrossing notes from Intel Developers Conference by my collegue Adam Shaked Gish about future of computing, as Intel sees it.
  • There will be no more performance improvements for the single core - it is as fast it may be, as physics prohibits silicon from getting any faster.
  • Performance will be achieved by properly utilizing multiple cores. Intel is committed to this visions they already see a future in which a desktop has 100 cores inside.
  • As opposed to single core where apps gained performance when installed on new hardware for free, there is no free lunch in multi core. Engineers must be properly trained, and code properly written to utilize the cores in a scalable manner, and to write correct code (multithreading bugs can be very difficult to discover and fix).

In order to utilize the MP power you will need two things:
  1. A high level library you can use to parallelize tasks, without directly using OS primitives like threads and locks. The low level code is just too complicated to understand or maintain.
  2. A set of tools to help you analyze your performance, and find bugs and bottlenecks whithout these there is no way to achieve maximum performance.

As for C++ libraries they discussed:
  • OpenMP as the C style API to parallelize loops. Its advantage is that it is easier to introduce into existing code. Old standard supported by most modern C++ compilers.
  • TBB - a set of templates that allows to think about multi tasking in an object oriented way - you define a task objects and have them run in parallel. It is open source (a set of templates) and has ports to most major OS'es. It is also benchmarked to be faster than OpenMP. However it is more difficult to introduce into existing code and usually requires some amount of redesign.
  • An additional new technology is being researched and it will allow a user to prove the correctness of code written with it. It is still in research stages.


As for tools - Intel just released a new suite of tools named "Intel Parallel Studio". It is aimed at making parallel computing available to the mainstream developer. All tools are addins into Visual Studio:
  • Intel Parallel Composer - a compiler, and a set of libraries and compiler extensions aimed at making development of multithreaded code easier.

  • Intel Parallel Inspector - a bug finder focuses on finding memory bugs (like tools we try to use today) and threading bugs.

  • Intel Parallel Amplifier- a performance analysis tool, focused on finding threading bottlenecks and optimizing the use of multi cores.

  • The suite's retail price is 800$ per license (25% off till end of summer).


Monday, June 01, 2009

Comprehensive list of Debugger Visualizers for Visual Studio




Here is a comprehensive list of Debugger Visualizers for Visual Studio.
It's based on (sorted and merged) info from here, here and here and my own additions.

Here you go:

ASP, WEB:
ASP.NET control graph visualizer - http://odetocode.com/Blogs/scott/archive/2006/01/12/2726.aspx
ASP.NET Cache Visualizer - http://blog.bretts.net/PermaLink,guid,07cd8437-862e-45c6-b24e-3a286fce1b66.aspx
ASP.NET Control Visualizer - http://blog.bretts.net/PermaLink,guid,87d735a0-1592-4711-860f-8a1d29c9630f.aspx
ASP.NET Visualizers - http://weblogs.asp.net/scottgu/archive/2006/01/12/435236.aspx
WebVisualizers - http://webvisualizers.codeplex.com/


Graphics & UI:
Bitmap Debugger Visualizer - http://blogs.geekdojo.net/brian/archive/2006/08/06/bitmapvisualizer.aspx
Graphics Debugger Visualizer - http://www.codeproject.com/KB/macros/GraphicDebuggerVisualizer.aspx
ControlTree visualizer - http://odetocode.com/Blogs/scott/archive/2006/01/12/2726.aspx


DataSource & Data:
Data Debugger Visualizer - http://www.codeproject.com/KB/grid/datadebuggervisualizer.aspx
Debugger Visualizer for Visual Studio - http://coding-time.blogspot.com/2009/03/debugger-visualizer-for-visual-studio.html
Mole Visualizer For All Project Types - http://www.codeproject.com/KB/macros/MoleForVisualStudio.aspx
http://www.moleproject.com/
http://joshsmithonwpf.wordpress.com/mole/
Righthand Dataset Debugger Visualizer - http://cs.rthand.com/blogs/blog_with_righthand/pages/Righthand-Dataset-Debugger-Visualizer.aspx
XML Visualizer - http://blogs.conchango.com/howardvanrooijen/archive/2005/11/24/2424.aspx
IEnumerable Visualizer -
http://rapiddevbookcode.codeplex.com/wikipage?title=EnumerableDebugVisualizer

LINQ, DB:
DB Connection Visualizer - http://dbvisualizer.codeplex.com/
LINQ Expressions DebuggerVisualizer - http://www.manuelabadia.com/blog/PermaLink,guid,9160035f-490f-46bd-ab55-516b5c7545af.aspx
LINQ Expression Tree Visualizer- Look in VS 2008 Samples
LINQ to SQL Debug Visualizer - http://weblogs.asp.net/scottgu/archive/2007/07/31/linq-to-sql-debug-visualizer.aspx
LINQ Query Visualizer - http://msdn.microsoft.com/en-us/library/bb629285.aspx
LINQ to SQL Visualizer - http://weblogs.asp.net/scottgu/archive/2007/07/31/linq-to-sql-debug-visualizer.aspx
LINQ to Entity Visualizer - http://visualstudiogallery.msdn.microsoft.com/en-us/99468ece-689b-481c-868c-19e00e0a4e69


System & miscellanea:
CAB Visualization - http://www.codeplex.com/WorkItemVisualizer
GUID Debugger Visualizer - http://devmatter.blogspot.com/2006/04/guid-debugger-visualizer-for-visual.html
IL Visualizer - http://blogs.msdn.com/haibo_luo/archive/2006/11/16/take-two-il-visualizer.aspx
Improving Visual C++ Debugging - http://www.codeguru.com/columns/kate/article.php/c15291
PowerShell Debug Visualizer - http://poshdebugvisualizer.codeplex.com/
Regular Expression Visualizers - http://weblogs.asp.net/rosherove/archive/2005/11/26/AnnoucingRegexKit10.aspx
Sharepoint debug visualizer - http://spdv.codeplex.com/
WindowsIdentity Debugger Visualizer - http://geekswithblogs.net/khanna/archive/2006/01/05/64903.aspx


WCF:
WCF Visualizers Tool - http://wcfvisualizer.codeplex.com/


WPF:
WPF Tree Debugger Visualizer - http://wpftreevisualizer.codeplex.com/
DepO WPF Dependency Object Visualizer - http://www.codeplex.com/dathanliblikdepo
WPF Debugger Visualizer - http://blogs.oosterkamp.nl/blogs/thomas/archive/2009/03/11/wpf-debugger-visualizer.aspx
XAML Debugger Visualizer for WPF - http://www.codeproject.com/KB/WPF/XamlVisualizer.aspx
Snoop - a WPF Utility - http://blois.us/Snoop/


XML:
Xml Visualizer v.2 - http://www.codeplex.com/XmlVisualizer
Lithium XML Debugger Visualizer - http://blogs.conchango.com/howardvanrooijen/archive/2005/04/11/1267.aspx


Tuesday, May 26, 2009

Symantic Search Engine - Wolfram Alpha


Symantic search engine - Wolfram Alfa:
http://www.wolframalpha.com/

Space Station Info:


Comparison of Google and Microsoft stocks:


Taylor series:


Information Arbitrage with SkyGrid


Link to the invitations (around 70 left right now) to join SkyGrid:
http://www.parkparadigm.com/2009/05/24/welcome-to-skygrid/

"SkyGrid filters the real-time web with high quality financial content from trusted sources. Founded in 2005, SkyGrid creates innovative technology that lets people have a simple way to see what information is having the most impact on the financial world at every moment of every day. "

P.S.
Post-mortem written by the Roger Ehrenberg - co-founder of Monitor110 - company that was developing similar product. Really worth reading. Look for 7 anti-amendments:
http://www.businessinsider.com/2008/7/monitor110-a-post-mortem/

Sunday, May 24, 2009

Bear market durations


Bear market durations (from the stock market peak to the lowest point):


Period
From
Till
Duration (months)
Great DepressionAugust 1929June 193235
Dot Com BubbleMarch 2000October 200232
Financial MeltdownSeptember 2007Now is May 2009...22 months and rolling down...


Monday, May 04, 2009

"Good Enough" Counterrevolution


This post is essentially my comment to the "Good-Enough" Revolution post which I think worthwhile to be turned into separate article. Besides - I didn't wrote anything non-technical for a long time... "Good-Enough" Revolution stands that many contemporary goods are "good enough" to be used and hence consumer often do not have motivation to buy a new version of the same good (e.g. man using Windows XP wouldn't go for Window Vista as XP is good enough for most of every day tasks, like e-mail, Internet or editing some office documents). While this observation is absolutely correct I think that important point is missed - contemporary goods are deliberately created not to be durable to compel consumer to, well, consume.


A silent "Good-Enough" Counterrevolution is in its high. Producers do not create goods that are designed to last any more. Almost anything you are buying nowadays is deliberately designed to last for a short, programmed time and then broke. I think that the only consumer strategy to deal with it is to buy the cheapest version of an appliance you need - it would usually serve you the same time as its high-end version, while cost a half of it.


Your washing machine served you for 10 years? – I bet that a new one would not stand for more than 2-3 years. Your old electric kettle worked for 5-7 years? - Buy a new one and it would leak in a year or so. Talk to guys who are working in electronics service/repair centers and they would tell you that stuff nowadays is PROGRAMMED to work for a predefined time and then broke. A friend of mine who works in a big car repairs firm told me that every car accumulator that occasionally served significantly more than a guaranty period is sent to the lab for examination to check out why did it lasted so long and didn’t broke. An observation about "good enough" was correct, but it's not applicable to the new goods - manufacturers are not interested in you wiping yourself with the same towels till your golden years. No, you should buy towels, use them and then buy new ones. We all are squirrels that have to rotate wheels of economy. No one asks squirrel whether it wants to get our of a squirrel-wheel marathon, right?