Posts

Showing posts from 2010

Contributing to Open Source - SFD 2010

Today I presented "Contributing to Open Source" as a part of Software Freedom Day @ Alexandria University 2010 held at Bibliotheca Alexandrina. The audience was great and helped in making the presentation better than I anticipated.
This is the presentation I hope it would be useful to those that missed the event.

Contributing to Open SourceView more presentations from Ahmed Saeed.
It was cool to be presenting at the BA for the first time.

Research Opportunities in Egypt

Lately I have been exploring the research communities and opportunities in Egypt, specially Computer Science oriented research groups. I was amazed by the number of opportunities that are available now specially for a fresh graduate like myself.

I'll try to list some of the opportunities I have came across and that I consider tempting.

1. Cairo Microsoft Innovation Center (CMIC) :
One of the best research centers and it collaborates with a lot of the institutions that follows. There you'll get the chance to work with cutting edge technologies developing projects that will directly help the Arabic community.

2. Government Funded Research Projects:
Development funds like ITIDA, NTRA and STDF are providing support for research projects and IT projects on all level. It's quite interesting to be working on an independent research project that totally matches your interests with absolutely no restrictions and get payed.

3. E-JUST & Nile University:
Working on a research project…

A Research Graduation Project Accepted in PACT 2010

I have been working throughout the past year on my graduation project. The main target of the project was accelerating a Numerical Weather Prediction model (the Weather Research and Forecasting model) using GPUs. We implemented the latest version of one of the modules and our implementation was published as part of the latest release of a system supported by the United States Air Force and the National Oceanic and Atmospheric Agency (NOAA).
After our thesis defense we decided to go on with this work and submit it as a research poster to a high ranking conference and we chose PACT. International Conference on Parallel Architectures and Compilation Techniques (PACT) is a top tier, rank 1 conference. We submitted our work as a research poster for the ACM Student Research Competition in the Undergraduate Category (I have already particpated at an ACM SRC at MobiCom'09 last summer).
I was informed on 22nd of July 2010 that our work "Quantifying the Impact of GPU Specific Optimizat…

CUDA compilation on Linux (Makefiles)

I have been struggling with compiling complex CUDA code, with complex I mean a lot of .cu .F .cpp and .c files. I have created a makefile that can help you compile that kind of code. I'll try to give a quick view of it here explaining some parts:

First you'll need to specify the CUDA path and the compilers and linkers. Here I am using gcc and g++ for .c and .cpp files and nvcc for .cu files:

CUDA_INSTALL_PATH ?= /usr/local/cuda

CXX := g++
CC := gcc
LINK := g++ -fPIC
NVCC:= nvcc -ccbin /usr/bin

Then you need to specify where to locate the CUDA header files :

# Includes
INCLUDES = -I. -I$(CUDA_INSTALL_PATH)/include

# Common flags
COMMONFLAGS += $(INCLUDES)
NVCCFLAGS += $(COMMONFLAGS)
CXXFLAGS += $(COMMONFLAGS)
CFLAGS += $(COMMONFLAGS)


Then you specify where to locate the CUDA binaries for linking :

LIB_CUDA := -L$(CUDA_INSTALL_PATH)/lib -lcudart


Then you specify the object files that the executable depends on and the name of the executable flle:

OBJS = sample_cuda…

Contributing to Open Source (Why? and How?)

Image
Open Source products are everywhere now, probably now you're using some of them. And I am sure that a lot of people are appreciating the role of open source. This post is about giving back to the community, helping others and moving forward one of the applications/tools you're using as a part of your everyday life.

Why Contribute to Open Source??

Sun Microsystems had a slogan "Change (Y)our world". And that summarizes what contributing to open source is all about. It's about making You better and making The World better. Let's make it clearer.

When you contribute to open source it helps you in some many ways, it gets you to code and practice and enhance your programming skills. Then gets your code reviewed, reviewed and then reviewed once more before it becomes a part of an official release. And finally it gets you to document your code.
Of course how much a project adds to your skills depends on the scale of the project and the importance of the feature you&…

KNN Algorithm and KD-Trees

Image
I am taking a Pattern Recognition course this semester, it's not really one of my favourite topics but I am doing OK. We had an assignment last week to test and compare different classification algorithms. One of the algorithms we were asked to implement was KNN (K Nearest Neighbours). We were asked to find a way that makes searching for the K Nearest Neighbours faster; that's what this post about.

The problem briefly is that: Given two sets of K dimensional points find the N nearest points (using Euclidean distance or any other measurement) to a K dimensional point X.

The Naive Solution:
Go through the list, find the distance between X and all the points in the two sets, get the smallest N elements in the distances list... Simple enough.
As part of our assignment we were given a dataset of 100,000 points which proved this algorithm to be very slow.


My Naive WRONG Solution:
I thought that it was easy to index the points in a way that makes it efficient to find the nearest points…

Weather Research and Forecasting Model Explained (Part 3) - System Architecture and Parallelism

Image
WRF ,as mentioned in part 1 and part2, is a system designed for both operational and research purposes, and to run on systems from conventional laptops to super computers. The design of such a versatile system is a real challenge.
In this post we will explore some of the WRF's Software Framework design and explain the functionality of the different layers of the system. Also we'll discuss how the system handles parallelism in different hardware environments.
Software Framework Architecture[1][2]:
(The following functionalities doesn't include parallelism handling)

 Figure1: Hierarchical WRF Software Design As it appears in Figure 1, the system design has 3 layers: The Driver Layer:
It defines and allocates domains and associates them in a nest hierarchy. It also manages the flow of a system run as it's responsible for stepping the time for the loop mentioned in part1. And it's responsible for I/O operations.  The Mediation Layer:
It interfaces between the two othe…

Weather Research and Forecasting Model Explained (Part 2) - Nesting and System Components

Image
In the part 1 we introduced WRF and discussed the meteorological basics of Advanced Research WRF. In this part we discuss the concept of nesting and explain different system parts of WRF. But first we'll define two basic terms.
Grid: Raw atmospheric data layed out as a discrete grid for an area of the map.
Figure 1 [1] Grid examples Domian: A model created by processing grid information and making it ready for processing by WRF Model.
Nesting:
Nesting is a way of getting high resolution data from low resolution data.That's achieved by introducing more grid or grids to the initial state. Those finer grain grids force the need for more high resolution data. That data is obtained by interpolating data from coarse grain grids or could be user input.
Figure 2 [1] Nested grid WRF System Components:

Figure3 [1] WRF system components As it appears in figure 1, the system has 3 main components: Preprocessor (WPS), the WRF Model and Post Processor. The WPS is responsible for preparing the inp…

Weather Research and Forecasting Model Explained (Part 1) - Weather Prediction Basics

Image
My goal here is to give a simple overview of the WRF for computer science students.
The Weather Resarch and Forecasting (WRF, pronounced "worf") model is an open-source numerical weather prediction (NWP) and atmospheric simulation system designed for both research and operational applications [1]. This system was developed as joint effort between National Center of Atmospheric Research, National Oceanic and Atmospheric Administration (NOAA), Air Force Weather Agency and others. In this post ,and the posts to follow, I'll try to explain the WRF from two different perspectives, the first being Meteorology and the second being Computer Science.
I am here concerned with the Advanced Research WRF (ARW) subset of WRF.
Weather Prediction Basics:
Weather Prediction means to predict the state of the atmosphere in terms of (pressure, temperature, speed of wind, etc). Our atmosphere is controlled by flow and the conditions of the air across the planet and by predicting that flow we …