Chris Pollett > Students > Radha

    Print View



    [CS297 Proposal]






    [CS298 Proposal]






CS298 Progress Report

Processing Posting Lists Using OpenCL

Radha Kotipalli (

Advisor: Dr. Chris Pollett

Committee Members: Dr . Sami Khuri, Dr. Thomas Austin

Progress Made So Far:

According to the original project plan, there are four main deliverables. The first one is to write standalone C/C++ code to encode and decode posting lists using Modified-9 compression algorithm for existing Yioop's algorithm. To match the PHP functionality I had to spend time to make sure the C++ functions work seamlessly without breaking any of Yioop's functionality. Especially when working with strings in C++, I faced many challenges since it is not very user friendly dealing with strings in C/C++ when compared to PHP. This deliverable has been completed successfully and verified the outputs of my C++ functions match that of Yioop's functions.

Then I started working on third deliverable ahead of second deliverable. The third deliverable was to create PHP extensions based on C/C++ code created during first deliverable. This was done to make sure we get a chance to measure the performance enhancements before going through OpenCL changes. Compared to C/C++ PHP extensions, OpenCL code is little more complex and extensive documentation is not available. In order to integrate the PHP extensions in to Yioop, I had to build PHP from source with different set of flags to match the Yioop's pre-requisites such as multi-byte support, curl etc. Before trying extensions, I was able to get Yioop easily running under Windows XAMPP by following the documentation. To make Yioop work with PHP extensions, I had to spend time to figure right set of settings empirically. Finally I was able to integrate my PHP C++ extensions code into Yioop and started testing its performance.

After this, I started working on second deliverable, using OpenCL with Yioop. For this deliverable I had to look through the Yioop / C++ code and identify the functions where OpenCL parallelism fits and will yield more performance benefits. I was able to complete two functions but still one more left to complete.

While the second deliverable was progressing I simultaneously started working on deliverable four, performance measurements. Initial results with PHP C++ extensions showed good performance improvements compared to PHP code, but OpenCL extensions did not. So, I still need to experiment and run some more tests to see why this is happening and might need to change my code to get good performance results. Also I want to run tests on multi core as well as better GPU machines to check the performance improvements.


I will continue working on deliverable three and four, improving the code to get further performance benefits and also optimize the OpenCL code to get better results. Some of the problems I had experienced during this semester delayed the project, but I was able to overcome these issues and made progress. I shall complete the project during spring 2016.