Introduction to Parallel Runtime Library

June 25, 2009 – 4:27 pm
Parallel Runtime Library is library designed to provide parallel APIs. PRL designed for High Performance Computing and its work in .NET platform. Why Parallel Runtime Library: In single core/processor it's fine and easy to manage the concurrency, and the threading that work, but because the multi-core/processor become common it's important to use a different approach to manage the concurrency, and the threading for real Parallel Computing. The main reason of developing Parallel Runtime Library is allow the parallel computing for the High Performance Computing into .NET, and make it easy and mature. The main point with the Parallel Runtime Library is allows the developers to develop parallel software and algorithms so easy without care about how to scheduling and manage the tasks. Also Parallel Runtime Library it's great way to learn how the scheduling algorithm, lock-free data structure works. You many ask me, Why HPC in .NET ? A lot of people only consider ...

Kngine ‘Knowledge Engine’ Milestone 2

June 14, 2009 – 3:11 pm
Kngine 'Knowledge Engine' Milestone 2 What is Kngine? Kngine is Knowledge Web search engine designed to provide meaningful search results, such as: semantic information about the keywords/concepts, answer the user's questions, discover the relations between the keywords/concepts, and link the different kind of data together, such as: Movies, Subtitles, Photos, Price at sale store, User reviews, and Influenced story. Kngine designed and developed by: Haytham ElFadeel    -   HFadeel@HFadeel.com Goals Kngine long-term goal is to make all human beings systematic knowledge and experience accessible to everyone. I aim to collect and organize all objective data, and make it possible and easy to access. Our goal is to build on the advances of Web search engine, semantic web, data representation technologies a new form of Web search engine that will unleash a revolution of new possibilities. Kngine tries to combine the power of Web search engines with the power of Semantic search and the data representation to provide ...

My first Lock-Free (Almost Wait-Free) Hash-Table

June 9, 2009 – 11:50 am
My first Lock-Free (Almost Wait-Free) Hash-Table I received many requests to release my Lock-Free (Almost Wait-Free) Hash-Table that I just wrote in last weekend. The source code still under-testing and optimizing (Beta), So this source code for learning. Anyway you can download the C Sharp source code here... The C++ source code I will release it soon. Notes about the implementation: This Hash-Table is Lock-Free which means there is no mutex, locksinvolved into the Hash-Table operations even into the resizing. the Hash-table using Open Addressing design. Get: get operation Operation working into the current table, and easy to understand. The tricky part appear into Put, and the resizing. Put: If the table not in resize mode, I try to add into the current table using CAS operation/Interlocked into .NET. Into the table insert function I try to choice the place and update this slot using CAS operation, if I didn't found free space I return IsFull state ...

Understanding the processors Cache & Optimizing memory access

June 6, 2009 – 12:35 am
Understanding the processors Cache & Optimizing memory access Caching of code and data A cache is a proxy for the main memory in a computer. The proxy is smaller and closer to the CPU than the main memory and therefore it is accessed much faster. There may be two or three levels of cache for the sake of fastest possible access to the most used data. The speed of CPU’s is increasing faster than the speed of RAM memory. Efficient caching is therefore becoming more and more important. Cache organization It is useful to know how a cache is organized if you are making programs that have big data structures with non-sequential access and you want to prevent cache contention. You may skip this section if you are satisfied with more heuristic guidelines. Most caches are organized into lines and sets. Let me explain this with an example. My example is a cache of 8 ...

Parallel Programming for real-world

May 31, 2009 – 4:55 pm
Parallel Programming for real-world Multicore computers shift the burden of software performance from chip designers and architects to software developers. Today the parallel programming become definitive mainstream technology, not just research toys. If you look closely you will found the companies racing to developing a mature platform, frameworks, and debugging tool to support the parallelism, such as: .NET, C++, Java, Python, etc. Introduction to parallelism Introduce the problem Traditionally, Computer system consists of Processor, Memory system, and the other subsystem. The processor takes the instructions sequential one after one. Also the traditionally software has been written for serial computation. Of course, we still get fast computer, and from time to time the processor frequency and the transistors count into the microprocessor get doubled. But suddenly the scientists discovered that we are near to reach processor frequency limitation. Then they try to discover new methods to improve the processor performance, such as: put many low frequency and power ...

The Future of the Parallelism and its Challenges

May 27, 2009 – 6:29 pm
The future of the Parallelism and its challenges Research and education in Parallel computing technologies is more important than ever. Here I present a perspective on the past contributions, current status, and future direction of the parallelism technologies. While machine power will grow impressively, increased parallelism, rather than clock rate, will be driving force in computing in the foreseeable future. This ongoing shift toward parallel architectural paradigms is one of the greatest challenges for the microprocessor and software industries. In 2005, Justin Ratter, chief technology officer of Intel Corporation, said ‘We are at the cusp of a transition to multicore, multithreaded architectures, and we still have not demonstrated the ease of programming the move will require…’ A Little history Before we discuss the parallelism challenge with respect to today’s applications and challenges, it would be helpful to explore the history of parallelism. Even by the 1960s when the world was still wet with the ...