Archive for August, 2009

Rules of the heart

Kiwok Nordic, winner of the 2009 Itanium Innovation Award for Humanitarian Impact, was recently featured in JT on EDM - a Enterprise Decision Management blog. James Taylor added many important points about Kiwok’s solution including it’s business rules management system:

“Kiwok’s system uses a business rules management system to make constant operational decisions – does the data coming from this heart monitor justify some kind of intervention. The rules are based on medical know-how as well as the specific understanding that a doctor has for his or her patient. Personalized, real-time decisions.”

James goes on describe how the data generated daily per patient (25-28Mb) is optimally shared with their physicians by using 21 standard templates for business user rule maintenance. Rules in this case include things like pulse limits or certain patterns of heart activity, allowing physicians to define how much data they want to see and when they want to be notified. James concludes:

“Patients like the peace of mind of continuous monitoring, doctors like the custom monitoring and the healthcare system saves money. Personally I think this kind of intelligently monitored remote medical device is going to play a huge role in the future.”

Read the entire post here.

The Parallel Universe: Mining Parallelism Pt. IV

Decisions, Decisions. When given the choice between cake and ice cream, most two-year children will pick both (of course). As adults, or at least people old enough to act like adults, we know that you can’t have your cake and eat it too … or can you? One major source of branching, and hence pipeline stalls, are the dynamic choices in the execution path, better known to programmers as the ‘if’ statement. Unlike looping branches, these are hard to predict, although coding the likely case as the true clause is probably best practice. Still, what if we could avoid the branch altogether?

Enter predication, a key Itanium feature for maximizing performance. Itanium predicates are a set of 63 bits that can be independently set by set or cleared by various instructions, compare being the most common. Better yet, predicates may be set in complementary pairs: one predicate records the comparison result, the other records the logical inverse of the comparison result. The complete Itanium predicate calculus is rich and powerful and a topic for a more technical discussion; suffice to say that a diligent programmer can evaluate complex condition expressions in a very small sequences of predicate operations.

So, how does this help us have our cake and eat it, too? Instead of evaluating a condition and branching, which just uses a computed predicate to enable or disable an otherwise unconditional branch, the programmer can code both branches of the ‘if’ in parallel, using the computed predicate pair to dynamically select one or the other. Other variations are possible: executing several independent ‘if’ clauses in parallel with multiple sets of predicates, or executing multiple branches from a sequence of ‘if … else if … else’ statements, where the predicates computed from earlier conditionals can affect the evaluation of subsequent conditionals. It’s true that we’re not necessarily increasing our IPC with this technique, but we are keeping the pipeline full (of cake and ice cream?), reducing code size, and keeping more instructions in cache – all performance wins.

Interested in attending the 2009 Itanium Innovation Awards Celebration?

The 2009 Itanium Innovation Awards Celebration will take place on September 23rd, from 6 - 8 pm at the San Francisco Museum of Modern Art.

Attending the Awards Celebration is an opportunity to join industry leaders in enterprise and technical computing, Alliance sponsor executives, award finalists, and industry press and analysts for hors d’oeuvres, cocktails, and live music as we honor innovation and achievement in solving computing challenges using Intel® Itanium® technology. View a short video from last year’s event.

The Awards Celebration is held concurrently with the Intel Developer Forum at the SFMOMA, located just a block from the Moscone Center. Winners will be announced in the categories of Mission-Critical Data, Data Center Modernization, Computationally Intensive Applications who will receive their awards along with our Humanitarian Impact winner - Kiwok Nordic of Sweden. The event will be hosted by Intel executives Kirk Skaugen and Pat Gelsinger. Preceding the event, registered guests may enjoy an exclusive viewing of the Richard Avedon exhibit from 5:00 - 6:00 pm.

If you are interested in attending our event, and have not yet received an email invitation, we want to hear from you. Request an invitation here.

Exercising good judgment

Jonathan Erickson, one of this year’s judges for the Itanium Innovation Awards, recently praised the Humanitarian Impact Winner, Kiwok, as well the honorable mentions, XDelta, Purvis Systems, and Karlsruhe University, in the Dr. Dobb’s Update Newsletter. Read the feature here.

For those of you not familiar with this publication, Dr. Dobb’s Update is a good source for objective news, commentary and technical features about software development. Learn more and subscribe.

The Parallel Universe: Mining Parallelism Pt. III

SIMD and MIMD. One basic type of parallelism is the single instruction, multiple data, or SIMD. This mode performs the same operation on multiple data items in parallel. As with other sources of parallelism, Itanium gives the programmer or compiler explicit control over what instructions are executed in the same cycle. Further, many instructions, the ALU type, can be executed on most of the functional units. Employing the large register set and the three-operand instruction (C = A op B), SIMD parallelism is readily realized.

Additionally, the instruction set architecture defines 1-, 2-, and 4-byte parallel operations for integer computation, as well as pair-wise floating-point operations, for even higher levels of SIMD operation.

These same features are utilized for a second type of parallelism: multiple instruction, multiple data, or MIMD. This mode is, in fact, the most fundamental modis operandi for Itanium. SIMD, using the same instructions or the parallel instructions described above, and MIMD can be combined, mixed, matched, and tailored to produce the highest level of performance for almost any data-intensive computation.

In the next few posts, I’ll be digging into the many rich veins of parallelism that arise from the nature of computations and the structure of programs.