Speed ​​up your code and find the needle in the haystack


    Every day, thousands of satellites, planes, surveillance cameras take millions of high-resolution images. In order to get useful information from there, they need to be processed - and this task does not seem easy even at first glance. Due to its complexity (as well as the large scope for parallelization), it became the content of the summer round of the Intel “Accelerate Your Code” contest , which runs from May 1 to August 31 . This time, the competition has undergone some changes, but the main prize has remained the same - the winner will receive an ultrabook worth 1000 euros .

    So, the condition of the problem is this: to find predetermined patterns (patterns) in a large array of high-resolution digital photos. It is clear that to solve this problem, large computing power will be needed, which not everyone has at hand. Anticipating this, Intel has prepared for the participants powerful servers equipped with Xeon PHI coprocessors (recall - 60 cores, 240 threads!), Which will be available to all participants in the competition - this is the first innovation. I’ll immediately note the second: now not only students, but also professional developers can participate in the competition!

    Samples can be defined by their shape, color, shades, or some other obvious distinctive feature, however, the situation is complicated by the fact that this feature can be distorted (imagine a picture applied to clothes), its appearance is affected by lighting, viewing angle, distance to the object and other nuances. Your program should be able to take them into account. There are some concessions so that the complexity of the task does not go through the roof: all patterns are specific (that is, they cannot be, for example, a person’s face), the conditions for their appearance are always approximately the same.

    To facilitate the participants' initial stage of the solution, Intel, as usual, offers a ready-made working code that solves the problem in some way and produces the result in the correct format. The bad news is that this code is primitive, not parallelized, and runs slowly. However, as a "seed" it fits well, and the organizers strongly recommend using it. Your task is to introduce the necessary functionality into the code, speed up and parallelize it. Pay close attention to the features of a particular pattern, each of them requires an individual approach.

    How will the winner be chosen? Here are the most basic criteria:
    • No errors in the program, including parallelization errors;
    • The accuracy of the program - 100% of the result is not required, but the more samples are found, the greater the chance of winning;
    • The speed of the program and its scalability;
    • An additional advantage will be the availability of documentation for the program, as well as the activity of developers in the forums and blogs of the Intel Developer Zone .

    Now about the prizes for participants from Russia and Ukraine. As already mentioned, the winner, or rather, two winners will receive an ultrabook. The next 10 places will receive Amazon gift cards for 100 euros, another 20 next - for 50 euros. Separate awards await student groups led by a mentor.

    And finally, an important point. Intel holds 3 stages of the “Accelerate Your Code” contest per year, each of which lasts 4 months. It turns out that the competition is ongoing, and it's never too late to take part in it. Do not miss your chance to get new skills - well, and get prizes, of course.

    useful links

    Post Habré about the previous stage of the competition
    Home Page Contest
    Problem Description
    Registration Form
    of the Conditions of competition
    offered the source code

    Also popular now: