Getting to know Igor Levicki, Intel Black Belt Software Developer

Tell us a little about yourself: where do you live & what do you do for a living?
Igor: My name is Igor Levicki, I am from Serbia and I am a software engineer working on code optimization.

What was your first experience in the computer industry?
Igor: I wrote my first "Hello world" BASIC program way back on Sinclair ZX81, "upgraded" to Sinclair ZX Spectrum 48K, then learned how to program for Zilog Z80A CPU - no more BASIC for me since then. Then came Commodore Amiga 500 and as I explored Amiga, I eventually learned to program in assembler for Motorola MC68000 series CPUs, as well as some neat tricks to get the most out of the hardware. I learned Pascal in a high-school, learned C on my own, and started writing some simple applications. I was using Watcom C compiler which was the best optimizing compiler before and during the Windows 95 era. I then moved to learning SIMD programming and programming using SSE. As a part of my job assignment I coded the innermost loop for the back projection algorithm used for medical image reconstruction in assembler and fine-tuned it to achieve maximum performance.
Later the same code was adapted slightly to obtain maximum performance on the Pentium 4 CPU. The company I worked for thus got the fastest possible performance in the industry - much faster than even the dedicated hardware solutions.

Then, I started experimenting with Intel compiler, published a white paper for [], and since I figured out that there is room for some improvement I started giving feedback to Intel and well... you know the rest of the story.

What technologies do you work on? Which of these are you most impressed by?
I work on image processing algorithms, low-level code optimization in assembler, GPGPU, etc, and I am looking forward to working with Larrabee - I will most certainly be impressed with that technology when I get my hands on it. I write software for the Windows platform but I am also partially familiar with Linux and Mac OS X. I write my code in C/C++ and assembler, and I use Intel Compiler and Intel Performance Primitives. I am most impressed by the Intel Compiler which in its latest incarnation is capable of some mind boggling code transformations. Its development can be compared to that of a chess program - in the beginning it was capable of defeating some human opponents, but now there are only select few who can rarely get a draw, much less win a match against it when it comes to writing optimal assembler code.

What excites you about being on communities, participating in discussion forums?
Sharing the knowledge, learning new things myself, as well as suggesting ways to improve things.

What excites you enough to wake up every morning?
The thought that I could do something in my area of expertise today that will improve the quality of life for everyone in the future.

What upcoming projects are you working on?
A friend of mine and I will be starting a company in the near future. We will be offering our services and expertise in the following areas:

  • Image processing algorithms
  • Mathematical simulation and modeling of various processes
  • Visualization
  • Software optimization
  • Problem solving and algorithm research

Feel free to start sending us work offers :-)


For more complete information about compiler optimizations, see our Optimization Notice.


(name withheld)'s picture


Mislio sam da nema mnogo ljudi koji su poceli sa Sinklerom a NISU zavrsili u .NET ili Visual areni.
I ja sam poceo sa Sinklerom (ZX Spectrum 48K), a jos uvek se petljam sa asemblerom na Pentiumu. Vise se bavim digitalnom elektronikom ali obavezno moram da "cackam" i po cipsetu, kao i po Pentiumovim registrima.
Pisem ti u nadi da ces mi pomoci u vezi "problemcica". Vec sam okacio post, ali vidim da niko ne odgovara.
Stvar bi trebalo da je vrlo jednostavna. Imam PCIe karticu, koju kad stavim u slot na intelovoj maticnoj ploci ocekujem da normalno radi. Medjutim, desava se sledece (detalji su u mom poslednjem postu):

Prilikom dodeljivanja resursa na PCIe magistrali, sistem dodeli kartici interapt 0xff. Sa ovom vrednoscu ne mogu nista da uradim sto se tice programiranja APIC-a u cipsetu, jer koristim staru INTx metodu za prosledjivanje interapta. Program iz BIOS-a lepo registruje karticu i dodeli joj IO i MEM adresu, jedini je problem interapt.

Ne koristim nikakav OS, posto direktno "pricam" sa karticom koristeci program kompajliran sa DJGPP-om.
Posto nema OS-a, jedino je PCI BIOS sa maticne ploce mogao da konfigurise cipset da daje 0xff kao interapt dodeljen kartici. Na samoj PCIe kartici je mali BIOS EEPROM koji u sebi nema izvrsni kod, vec samo inicijalizaciju VID, DID, itd. Tamo je sve lepo konfigurisano, ukljucujuci i bitove koji informisu host da koristi INTx metodu.

Jel imas ideju u cemu je problem?

Plasim se da je u pitanju PCI BIOS sa maticne ploce koji samo upise 0xff, a zatim ocekuje da OS kasnije dodeli resurse.

Pitam te ovo jer pretpostavljam da si imao prilike da komuniciras sa GPU koji je realizovan na PCIe magistrali. U tom slucaju (ako se ne koristi OS), GPU bi trebalo da obavestava Pentium o zavrsetku DMA transfera ili procesiranja pomocu interapta.


anonymous's picture

Dear Sir,

I don't know why EXACTLY did the above person put the request for the BIOS update here, but I'm having the same (issue if I can say).
I just bought a Sony Vaio VGN-FW495J and it has AMI BIOS, and I really want to enable VT.
If I use the patch (Which I haven't looked for yet), is the process reversable, meaning, if I face some problems because I enabled it, can I disable it again?

Thanks in Advance.'s picture

Dear Mr. Igor Levicki;

I am astonished with your CV and I am very happy for you. I am an academic in Bilkent University in Computer Technologies and Information Systems.

I owned a VGN-FW4ZTJ and needless to say, VT is disabled.

I am really thinking to apply your VT Patch 1.1 issued on 2009/03/04. My question is my bios issue date is newer than your patch issue date. Do you think, my bios will be under risk if I apply your patch because of issuing dates and/or version? (I know, this is the dumbest question, you may ever have but the problem is very frustrating).

My current bios spec is as follows:
Provider: American Megatrends Inc.
Version: R3100Y0
Issue Date: 04/22/2009
Size: 2048 KB
Ability: Flash BIOS, Shadow BIOS, Selectable Boot, EDD, BBS, Smart Battery
Standards: DMI, ACPI, ESCD, PnP

Thank your for your efforts for Sony Vaio users. If you don't exist, we won't have any other opton than the customer support's "There is no virtualization in your Vaio" sentences.

Best regards...

Igor Levicki's picture

Thank you for your kind words Mr. Dejan.

anonymous's picture

Malo sam petljao po sajtu Intela, pa sam naisao i na Vasu prezentaciju... Lepo je videti da su ljudi sa nasih prostora uspeli u poslu, i zelim Vam sve najbolje u buduce!

Inace, moja supruga je prvi nastavnik u Srbiji koja je usla u Intelov program World Ahead, i g. Craig Barrett je bio u poseti pocetkom marta u njenoj skoli -

Pre neki dan joj je bila u poseti i ministarka za telekkomunikacije:

Srdacan pozdrav,
Dejan Kalderon

Igor Levicki's picture

I would suggest starting with C++. I also believe that knowing the assembler couldn't hurt and in my opinion it is vital to know how the platform you develop for works so you can take advantage of that knowledge and write algorithmically optimized code.

anonymous's picture

It was a great pleasure for me to get to know a successful person like yourself , and iam very happy to be able to contact you, so , i have a simple question among all thses programming languages which should i start to learn ?i will be very glad to hear from you

Add a Comment

Have a technical question? Visit our forums. Have site or software product issues? Contact support.