Comprehensive coverage

The world is moving to parallel programming - in Israel, serial programming continues to be studied in universities

This is what Dr. Ami Robka from the Department of Computer Science at Bar-Ilan University agrees, at a conference of Intel software users, and in a comprehensive interview with the website Hidan * The Council for Higher Education: A committee that examined the issue did not say anything about the contents of parallel programming, but we call on universities to advance to the latest technologies

Dr. Ami Marovka, Bar Ilan
Dr. Ami Marovka, Bar Ilan

Almost all the processors of the computers purchased in recent years, with the exception of extremely cheap computers, are multi-core processors, a move that Intel has led for about five years and which also caught its competitor. The multi-core environment requires a completely different approach to programming. Today, efforts are being made to transfer the experience gained in the last two decades in parallel programming, in the field of scientific and engineering computing, to the mainstream, which every personal computer application developer should give his heart to.

However, Dr. Ami Morubka, a lecturer in the field of parallel computing and parallel programming at Bar Ilan University and a consultant to industry and academia, says that unlike other technologies in the field of programming, such as Java, which have been warmly adopted by the universities and colleges, which train the next generation of programmers, for some reason in this field , the universities do not provide an adequate response to the revolutionary developments in computing and parallel programming, and continue to 'produce' programmers specializing in serial development, without preparing them for the different thinking required in the parallel era.

Why?

Dr. Morubka: "There are many reasons for this, first of all, parallel programming is very difficult programming, it is programming that requires parallel thinking, which is a different kind of thinking. It is difficult programming because it is very difficult to sift through problems (debugging) and to do this it is necessary to work with many tools. The recipient must have existing and new software so that higher performance can be obtained with each addition of a core or processor and this is not easy.

"There are a lot of new issues that we didn't know about in serial programming - problems that need to be studied and known in order to deal with them. The content has issues that the programmer has to deal with alone because there are no tools that do this automatically and make the program easier. For example, problems of load balancing, scheduling.

Deadlock, and DATA RACE CONDITIONS, are very elusive problems, very difficult to detect, like viruses they sit in the code and the application works as it should and they can wake up after two months and even after two years, do the damage and disappear as quickly as they came. It is difficult to locate this without the use of tools.

"The problem is that the whole environment has become parallel. Besides the algorithms, the operating systems, databases, IO, everything is parallel. As we learned in the last decades from serial computing, we need to learn from parallel computing today. This is exactly what is not happening in universities today. There is a course here, a course there, but these are elective courses and sometimes only for a master's degree, you can't call it a study of computing and parallel programming from the ground up. The curricula need to be changed quite a bit and entire courses must be rewritten to adapt the curriculum to parallel computing technologies."

Who is responsible for not teaching parallel programming?

"It is not that there is someone responsible for the mess. If you ask me why it doesn't happen, I don't know. For me it is a mystery because it is a revolution that must be addressed, but a fact. At Bar Ilan I teach one course and in the process of approving another course. The Technion has one course and it is also too general and tries to cover many issues at once.

I'm surprised - when Java arrived as a language, the universities attacked Java as if they had never seen a programming language in their lives and taught Java in the first year of a bachelor's degree, and here when it comes to such a big revolution and we've already been in the revolution for five years, you don't see anything happening at all in the academy.

What about the colleges?

The colleges imitate what is done in the universities, and when they see that nothing is happening at the universities, then they do nothing either. Apparently, the colleges, whose main occupation is teaching, were supposed to be the first to adopt the study of parallel programming, especially in software engineering colleges, and the MLA even approved a mandatory course for them, but it became an elective course and was never taught.

Do the software houses at least organize courses in Mikval for their employees?

That doesn't happen either. To my surprise, because one of the biggest tasks that will be assigned to software houses in recent years will be to accept existing software. As long as there is a limited number of processors, it is possible to run a number of independent applications on each processor, but when we reach dozens of processors it will be impossible to avoid the need for a receiver and whoever does not, their software will not be scalable, for all the economic implications of this fact. There are very smart people in the industry in positions such as CTO. And all the magazines have been writing about it every week for five years. I assume that these are economic considerations, because in order to receive all the applications the companies have to send all the engineers and programmers to learn parallel programming. It is possible that the engineers are trying to study on their own without organized courses. I suppose that in today's situation the economic consideration has an effect.

What's going on in the world?

In the USA there is only now a serious upheaval both in the field of research and in the field of academic teaching. In Europe the situation is quite similar to the situation in Israel. There are two places where the field is booming, and every year many thousands of engineers graduate from higher education institutions equipped with parallel programming skills - Russia and China. In both cases, the success should be attributed to Intel, which invested in the supply of hardware and software. In China alone there are close to a hundred schools where programming is processed in a multi-threaded environment. I have been trying for several years to convince Intel to bring one such school to Israel, but Intel is seen as a hardware powerhouse in Israel, I explained that there are software R&D centers in Israel for Google, Microsoft, HP, Intel and large independent software companies. I hope I can convince them.

Morobska's words are reinforced by James Reynders, chief software evangelist and director of software development products at Intel Global, who was the main lecturer at a special seminar on Intel tools for software developers held at the Dan Acadia Hotel in Herzliya by Mageri Tochan, a distributor of Intel software in Israel. "Today, the market is approaching that 100% of the processors will be parallel, and single-core processors are the minority," said Reinders. "This poses a number of problems for programmers. The more cores I have the software will run faster, but that doesn't mean how much faster. Efficiency is not the key - but the very acceleration. It's a long journey to get there."

Haim Ron, CEO of Software Repositories, said at the opening of the conference that today there are almost no servers, desktops and laptops that are not equipped with multi-core processors; After all, most programs are not ready to utilize the high capabilities of multiple cores. Therefore, Intel, which is mainly known as a hardware company, also develops software that aims to help developers in creating applications in areas such as health, graphic systems, games and more, which need additional computing resources offered by parallel processing and utilizing all available resources on a larger number of computer processors.

The Council for Higher Education: Robka did not apply, and an international committee that examined the issue did not recommend

The Council for Higher Education responded: "The field of computer science was transferred three years ago Quality assessment by an international committee appointed by the Council for Higher Education. The international committee that examined in depth for a year all the computer science departments in Israel and made many recommendations to improve the curricula and management of the departments did not recommend anything on the subject of expanding the studies to the field of parallel programming.
Dr. Robka never approached the MLA and presented his proposal to her. MLG encourages the departments in all fields and in the developing scientific fields in particular to renew and refresh the curricula they offer in accordance with the changes applicable in the field and in accordance with the wishes of the employers, through employer surveys that it conducts together with the Central Bureau of Statistics.

14 תגובות

  1. I studied at Tel Aviv University in a double track with computer science, I graduated in 2001.
    Some of the above topics were discussed and more in the operating systems course, even though there was no delving into parallel programming.
    I think that those who want to study it can choose from the elective courses, and I'm sure there are more options in the matter in the master's degree.

  2. I studied for a bachelor's degree in computer science at Tel Aviv University. As part of the degree, in 1985 or 1986 I studied a course in parallel programming by Dr. (now professor) Uzi Vishkin. I remember the course to this day as one of the most interesting courses in the degree. In fact, the "coding" of programs is done in a pseudo-language developed by him. Of course, in those days there was no computer and operating system that implemented it, but the ideas and tools necessary for such development were taught in the course.
    A year later I studied (as part of a master's degree) a parallel Lisp course that was also developed by a doctor at the university (I'm sorry but I don't remember his name).
    That is why I am very surprised to read that today there is no study on the subject in universities. Is it really so?

  3. Well, I really enjoy seeing how my algorithm works in practice!

    Except that sometimes while you are implementing your algorithm you suddenly discover that there is a better way (in terms of performance for example) to do it...
    At least for me, thinking about the algorithm is only half the fun, many people don't understand it, but programming is really a form of creation... and yet you have the prize of the finished creation...

    But to each his own pleasure 🙂

  4. The skeptic:
    As someone who has programmed for many years and as you have already heard - also excelled at it - you don't think that I don't know what pleasure there is in it, and yet I tell you that for me it was only a means of bringing the algorithmic ideas to light.
    Open the algorithms - this is the real fun.
    Completing parentheses is really not such a hole in the head and already a million years ago there were tools that allowed you to avoid mistakes in this matter. You could also find Language Sensitive Editor in certain development environments. But uninitialized variables and similar troubles can still cause unnecessary suffering (although there are tools that know how to catch such situations as well).
    Beyond that - the programming of complex systems is still complex and the best evidence of this is the one I encounter almost every time I give advice to a company: I explain to them in one to two hours what they need to do and it takes them half a year to realize it (and it must be remembered that "they "It's always a whole group of programmers and not a single programmer).

  5. Guess, and if you have a program that takes 80% CPU USAGE from one core and is a bit slow, plus all the other programs on your computer that are on the second core and take 5 CPU USAGE, wouldn't it be more correct to divide the first program into the two cores and also try to improve its performance (and the performance of any other software Would you like to use this core?

    Michael, not a programmer? You are missing out on all the fun….
    With today's compilers, all you need is to think of an algorithm (and really a bit of syntax)
    It's not like the old compilers, which to create a window required a lot of code...
    Even a semicolon and parentheses are completed by yourself if you forgot...
    I have to admit that Microsoft knows how to make programming software!

  6. Chest:
    You're missing out on situations where you're not proactively running a lot of things at the same time but have one heavy thing that you want to run faster.

  7. I don't understand the field, and maybe that's why I have an incomplete question.

    Today, every operating system supports multitasking. An ordinary user opens at the same time a browser, a file manager, a word processor, instant messaging software, e-mail, anti-virus, and many other programs of one kind or another. If I understood correctly, the idea of ​​multi-processors is to allocate a core for each application, so that there is no need to switch between the applications Every fraction of a second. This also saves unnecessary transitions. Every software continues to work "serially", and you can continue to program as usual.

    what am I missing?

  8. The skeptic:
    I programmed in my "childhood" and participated in startups in my adulthood, but today I am already organized enough in life to choose for myself only things that I really enjoy doing.
    Participating in a startup is not one of those things because it involves too much pressure and responsibility to others.
    Programming was also for me only a means of dealing with algorithms and today I deal with net algorithms in the framework of consulting that I give to various companies.
    If someone sets up such a startup I will be ready to help with some ideas I have on the subject.

  9. On the same subject,
    http://asyncop.com/MTnPDirEnum.aspx?treeviewPath=%5Bf%5D+Video%5Bc%5D+Introduction+To+Multicore+Programming

    More interesting for those who are interested :)…

    It seems to me that the company that will manage to build a 'parallel' compiler will be the next Microsoft (if it is not Microsoft itself)

    Michael there are rumors that you are a good programmer, do you want to join a start-up to build a parallel compiler?

  10. charming:
    Over time, I think the solution is through a compiler - but not one that requires the programmer to "think parallel" because it is very, very complicated and it is not at all a case that not all students learn it. In my opinion, the problem of parallel programming is beyond the ability of most people - simply in terms of intelligence.
    The solution is through compilers that know the receiver of things themselves - even without an explicit request from the program.
    Of course, a smart program can also use explicit parallel instructions, but most of the parallelism should be created by itself.

  11. If perhaps there was a light and not even object oriented language that was able to allow people to program parallel programming without the need to learn a big language, I'm ten that this thing would catch on faster in the academy.
    It was possible to introduce the above language as a second course after a first course in basic programming.

  12. Interesting article. Short, proofreading is missing here.

    What is not clear to me is how they will teach debugging of parallel programs, without even teaching it about serial programs. If there is something that is a shame that is not taught in the academy, it is this.

Leave a Reply

Email will not be published. Required fields are marked *

This site uses Akismat to prevent spam messages. Click here to learn how your response data is processed.