HPC

EC2: 99.95% SLA!

October 24th, 2008 / Tales from a Trading Desk

Amazon has a new SLA for EC2. Will Microsoft finally get it’s EC2 in the next week (PDC)?

Offtopic:

      

Must-haves for future grid-computing

October 2nd, 2008

I’ve been test-flying a few datagrid/datafabric products lately and had a nice opportunity to try them out on gig-ethernet and infiniband. The thing I noticed with all distributed-data systems is that synchronous-replication is always a bottleneck, because you’re forced to wait on the replication-ack before proceeding with the next operation. Because of this, gigabit-ethernet’s latency puts a ~5k ceiling on any throughput rates you can achieve.

For any grid vendor it’s crucial to rollout modern, ultra-low latency interconnect support then, as its latency characteristics blow away any Gig-E numbers. For real-time price publishers, for algo-trading, latency is the key issue, more than throughput.

Cloud: ParaScale

September 21st, 2008 / Tales from a Trading Desk

ParaScale and others venture into the cloud.

      

Cray CX1

September 17th, 2008 / Tales from a Trading Desk

I want one of these.

FlexUnit, Silverlight and other Random Thoughts

August 26th, 2008 / Tales from a Trading Desk

  • FlexUnit is now out in Open Source land. Hopefully Adobe can begin to provide more enterprise development tools. The one downside of FlexUnit is that there appears to be no console mode, which is unfortunate is your running on an enterprise build plant (
  • No surprises in this list of Silverlight RIA applications. It’s unfortunate that the RIA I was instrumental in building last year isn’t in this list (
  • Oslo insights
  • Looks like Steve had to pull the BWM surface video :(, but at least there are a number of other Vectorform Surface video’s still online - Mercedes-Benz etc
  • REST with WCF - way to much REST in my life these days
  • C++0x: Interview with Bjarne Stroustrup
  • With Amazon continuing to add to the cloud, one has to ask if Oslo will provide the Microsoft Cloud?
  • NVISION 2008 has some impressive video’s. CPU’s continue to play to “financial market analyses”
  • Are Panamaps (A Multi-Layered Map) useful in finance?
  • Moth on Make Object ID
  • As blogged elsewhere, Photosynth is Released.
  • Kind of cool to see that Linden is rolling out Mono servers
  • Google mojo?

How to Survive the Multicore Revolution

August 25th, 2008 / Tales from a Trading Desk

e-Book available here

Catching up after vacation

August 19th, 2008 / Tales from a Trading Desk

Returning from vacation is hard - the context switch back to work mode is relatively easy, what I find hard is the early morning starts (5am). There is also the 1000’s of work emails to catch up on coupled with Google Reader items.

  • While I’ve been out the office it appears the Windows 7 blog has come alive. The latest posting on feature teams is worth a read if your into knowing how the Microsoft machine works.
  • HSBC appears to be considering moving from Blackberry to iPhone, not surprising given that everyone appears to want an iPhone these days.
  • David Chappell has written a cloud white paper which is probably worth a ready - although this article is actually more interesting as it references Red Dog and Zurich.
  • With the Olympics in full swing there’s a number of posting around NBC’s Silverlight site: here, here and here.
  • August 2008 MSDN Magazine has a number of interesting articles:
  • Learning Parallel Programming.
  • CUDA U
  • NVIDIA Shows Interactive Ray Tracing on GPUs - real-time ray tracing with adequate performance for fluid motion is the future.
  • Still no sign of a killer financial Microsoft Surface application (
  • .NET Framework 3.5 SP1 got released. Unfortunately the WPF DataGrid didn’t make it into the release, but at least it made it to codeplex. If your moving into WPF, you might find this book interesting.
  • Visual Studio IronPython Integration Deep Dive
  • Glenn Block on Prism, Unity, and MEF
  • Coding the Market thinks Caplin in the answer to SDP. Maybe Mostly should consider Caplin for an OMS?
  • Sounds like Microsoft needs to add a lot more servers to its cloud.
  • New Gigaspaces MonteCarlo application.

Waters Magazine: Flying By Wire

August 1st, 2008 / newyorkscot

Waters Magazine has just published my article “Flying By Wire” in its Open Platform section of the August issue. The article discusses how advanced trading systems need better control systems to dependably innovate and take new opportunities to market. I draw an analogy between trading systems and modern jet aircraft where stability, performance and control are essential characteristics that need to be considered during design, development and testing. Read the article on the Lab49 website here.

WCF Windows HPC V2

June 30th, 2008 / Tales from a Trading Desk

Ming Xu on WFC Windows HPC V2: Video 1, 2, 3 and 4

Parallel Programming in Native Code

June 6th, 2008 / Kenny Kerr : Technology

Rick Molloy just mentioned to me that he’s created a new blog on MSDN to coincide with Stephen’s talk at TechEd today about the Concurrency Runtime for Visual C++.

Parallel Programming in Native Code

Welcome to the Parallel Programming in Native Code blog.  I started this blog so that I and others on my team would have a place to talk about topics relating to native concurrency.  I want to use this blog to provide early looks into what we’re thinking about, give announcements about any publicly available content or CTPs and of course respond to feedback that we receive from readers and customers...

 

Thoughts for the Velocity Team

June 3rd, 2008 / Tales from a Trading Desk

Here’s my take on Velocity in answer to the team’s recent posting asking for thoughts on “Would you use this functionality, and how/when ? What kinds of data would you like to cache? What features do you think will make this a better story? What pieces of functionality are completely missing?”

  • I really don’t care about ASP.Net SessionState integration
  • Market data - I want to hold trade, market data (historical and ticking), curves, and reference data
  • Usage from the perspective of a data fabric, grid and SOA. Grid’s are interesting from a investment bank (DataSynapse/Platform)/hedge fund (Digipede) arena - pricing trade being the minimum usage. If I’m pricing thousands of trade per day over my grid, I want to hit a distributed cache to retrieve “data” to avoid hot spots within databases if possible. Running Velocity on all/part of the grid nodes is therefore interesting.
  • Push-based notifications is a must - don’t bother launching without it!
  • Have a look at Gigaspaces, GemFire and Tangosol, and then improve on what they offer today from a distributed cache perspective.
  • Guaranteed data access and resiliency
  • Continuous query engine - VelocityLinq!

HPC Considered Harmful

May 30th, 2008 / Development in a Blink

This is how Greg Wilson, Department of Computer Science at the University of Toronto, begins his presentation.

I do like that he points out

Software engineering for science has to address three fundamental issues […]

It’s a shame “getting the right answer” and “being productive” don’t make the list.

Platform LSF: SLAs

April 30th, 2008 / Tales from a Trading Desk

If your doing anything around the area of grid SLA’s then you need to be aware of the PERF database. You’ll also want to read Goal-Oriented SLA-Driven Scheduling.

Cluster Primitives: MPI, MPI.NET, Large Data, and Passing Classes

April 27th, 2008 / Andre de Cavaignac

The Message Passing Interface (MPI) standard, and its .NET implementation, MPI.NET have been some of the cornerstones of development on compute clusters.  The standard supplies a simple yet primitive way of both sending and receiving data between running compute processes.

The large advantage of MPI has been a mix of its simplicity and speed.  A call to MPI Send on one node and MPI Receive on another block both callers until the operation is complete.  Some more complex calls, such as MPI Scatter and MPI Gather allow a single node to distribute data to a set of nodes or retrieve it from a set of nodes.  An MPI Barrier allows all nodes to stop until they have all reached the agreed upon place in code, then allowing them to continue.  Such primitives allow a distributed set of processes to communicate, do some work, and then share values that each needs to continue with eachother.  Because this is all done with some low level, bare metal socket tricks and/or shared memory, the result is blazingly fast communication.

With this simplicity however, comes a trade off.  MPI has been a standard for nearly 20 years and has changed very little since its inception.  The way we program today has changed drastically, especially with managed languages such as C#.  No longer do we tend to worry about memory allocation, or dealing with raw memory.  Today, most languages have a concept of automatic memory allocations, garbage collection and type safety.  Although the primitives in MPI are unparalleled in simplicity for allowing multiple processors to communicate about a shared set of work, some striking limitations are found once we dig a bit deeper.

When I started with MPI.NET, I found the interface very simple.  An Mpi.Send<T>(obj) would send an object to a waiting client.  Mpi.Receive<T>() would give you back that object.  Nothing could be simpler.  In my example, however T happened to be a class that contained a byte[] of an undetermined size.  Once run on the cluster, the size of the byte[] I was passing increased dramatically, and an unexpected exception occured:

AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory has been corrupted.

After lengthy investigation, I found that MPI.NET was attempting to pin some memory in the .NET GC heap and pass that memory location as a buffer to the underlying MSMPI stack.  In doing so, it did not allocate enough memory for my large byte[], causing the write to try to write into the GC heap, thus throwing the exception.  In my case, to solve this, I created a large enough buffer and passed it into an override of Mpi.Receive<byte>(byte[]).  This overload pins the entire array that was passed in on the GC, and then passes that to the MSMPI stack.  On the send side, I manually serialized my class, checked the length (to ensure I would not overflow the receive buffer) and sent the byte[] instead of the raw class.  This solution does not take into accound messages larger than my expected buffer.  For that, I would have needed to chunk down the data.

The moral of the story here is sending primitives, arrays of primitives or fixed-sized structs over MPI.NET (which is the most common scenario) is a great use of a very fast messaging interface.  Once your demands get more complex, the MPI stack gets less favorable, not because of its inability to send more complex messages, but because of the manual labor involved in serializing and chunking down data.

It is no wonder that the HPC community is moving away from the traditional methods of MPI and communication across a set of processors to a Service Oriented (SOA) model. The benefits of using existing components, such as WCF and its NetTcpBinding, the threading models, serialization and transport models, and other features already provided by these frameworks outweights the possible performance penalty.  Problems such as the one explained above simply do not happen with frameworks like WCF.  Furthermore, although the underlying concepts of MPI and its simple messaging model are very simple and appealing, the overall development, maintainence and debugging of a SOA application is much simpler than that of a MPI application.  The amount of code complexity and custom code drops when compared to an MPI implemenation.

The general industry trend seems to be towards SOA models.  Microsoft Windows HPC Server 2008 is a great example of this.  HPC Server uses WCF to distribute load across the cluster, and can even dynamically scale resources depending on demand of a particular service.  Platform, another industry competior has been building with a SOA model for some time now. 

I'm looking forward to playing with HPC Server 2008 and WCF more as time progresses.  I think that the WCF model will solve a whole bunch of headaches that one incurs when trying to communicate over perhaps over simple primitives such as MPI.  Many models and workloads simply do not require the type of communication MPI provides, and using MPI can be like fitting a square peg into a round hole.  This is not to say MPI does not have its place, many complex processes do require constant communication between a set of workers, however I believe many of the problems we use HPC for today can distributed using SOA in a much simpler fashion.

DDJ: Parallel Extensions to the .NET Framework

April 23rd, 2008 / Tales from a Trading Desk

Thinking about the Cloud and HPC

April 22nd, 2008 / Tales from a Trading Desk

Taking a bit of time away from the RIA world, I’ve been thinking about the cloud (Vibro.NET’s Cloud Computing and Identity posting is worth a read) and HPC. The renewed interest in HPC is drive from a recent Platform presentation. Having spent an amount of time with various grid products over the last few years, I think its fairly safe to say that DataSynapse doesn’t appear to have anything resembling EGO. At the moment my brain is ticking over on “single grid environment” and “business policies”.

Off topic: More of an FYI to myself, DataSynapse 4.2 offered Dependencies that allowed workflows to be submitted to brokers. Remember to check deleteInvocationData for services that remain open forever.

Microsoft To Release SOA Tool Paving the Path to Oslo

A virtuous pairing

April 16th, 2008 / Joe on Computing

I ran across the following comments on an El Reg article about virtualization: Comments about “Virtualization: Nothing New”.

He’s right, isn’t he? Having the same company offer both virtualization and grid solutions is a truly virtuous pairing. First you tell people they need a grid solution to make a huge pool of computers look like a single one, then after it’s all set up you sell them virtualization software. It’s beautiful. It’s like if, for example, Nestle and Jenny Craig got together to simultaneously offer chocolate products and dieting solutions. Oh wait, they did: Nestle to buy Jenny Craig.
(more…)

Cloud Software

April 11th, 2008 / Tales from a Trading Desk

Steve @ Mindtouch has a nice Cloud Software diagram which details the three building blocks of Cloud apps.

Podcast: Lab49, ScaleOut, and Microsoft Talk About Distributed Cache


About three weeks ago, I had the opportunity to sit down with Bill Bain of ScaleOut Software and the two Joes, Joe Cleaver and Joe Rubino, from Microsoft’s Financial Services Industry Evangelism team after I gave my presentation on distributed caches at Microsoft’s 6th Annual Financial Services Developer Conference. The two Joes recorded a podcast of our conversation.

Bill, Joe, and Joe, thanks for the opportunity to talk with you guys.

EC2: Scalr

April 7th, 2008 / Tales from a Trading Desk

Since EC2 appears to be the topic of the week, its worth looking at Scalr. Scalr provides the “elastic” to enable EC2 to provide a dynamic cloud. Google (BigTable) and Microsoft (SQL Server Data Services) both appear to be chasing Amazon (S3), but neither appear to be close to EC2 - curious given Microsoft’s […]