Eclipse, modular projects and JUnit

Helmut Neukirchen, 21. September 2021

I (and many others) always had problems making JUnit (as added by Eclipse automatically when creating JUnit test cases) work with modular projects, i.e. projects that use module-info.java files to define dependencies. Finally, I found solutions:

  • Let the new project wizard not create the module-info.java file -- deleting it afterwards might not be enough as Eclipse did already some modification the the module path settings (OK, trivial) or
  • Choose Java ≤8 in settings (i.e. module-info.java ignored -- again: trivial) or
  • Apply quick-fixes: in the class containing your JUnit test cases, hover over the org.junit.jupiter.api import and select the quick-fix: “Add ‘requires […]’ to module-info.java”. Then in module-info.java: hover with mouse over the squiggle line (the important point is: clicking on the light bulb does not give any quick-fix, so you need to hover) and do: “Move classpath entry ‘JUnit5’ to modulepath”. This should fix it! or
  • Create an Eclipse project with extra src folder (e.g. src-test or use the Maven default structure) that has (via “Allow output folders for source folders”) its own output folder (e.g. bin-test or use the Maven default structure) and that has “Contains test sources” toggled to “Yes” (in project properties - Java Build Path -Source). The test src folder should then have a more grey-ish icon. Either do this with the New project wizard, or afterwards using project properties. As a result, JUnit is then not part of the modular project anymore. (Has also the advantage that test code is better separated.)

Computer Science department has moved to Gróska building / HÍ námsbraut í tölvunarfræði flýtt í Grósku

Helmut Neukirchen, 23. August 2021

The Computer Science department has moved to the new Gróska building (between Askja building and the DeCode Genetics building -- probably, most people know it, because there is a gym on the ground floor and CCP is located there). The official visiting address is: Bjargargata 1, 102 Reykjavik. You can find us also on OpenStreetMap.

(I still need to find out which address needs to be used for paper mail to end up in the department's post inbox.)

The Computer Science department is on the 3rd floor -- the same floor where CCP is located, however, we are at the southern-most wing of the building -- see the purple lines in the photo below (inside the building, you find signs: Tölvunarfræði HÍ):

Computer Science location within Gróska

 

The floor plan of the Computer Science department is below. The two most popular meeting rooms are: the big teaching room Ada is GR-321, Alan Turing is honored by room Alan in GR-310.

Floor plan of the Comuter Science department

I am located in room 306. The phone numbers are now routed via MS Teams that I am not going to install on my Linux system: rather call me on my provided mobile phone number.

In the beginning, we were lacking furniture for visitors: I had to build our own chairs out of cardbox, e.g.: https://www.wikihow.com/Build-a-Cardboard-Stool or https://www.hometalk.com/diy/decorate/rooms/diy-cardboard-stool-looks-like-wood-31556361?expand_all_questions=1

In the meantime, we got visitor chairs and some other visitor:

In addition to a bicycle storage room for employees, there are also EV chargers, however an RFID card from Bílahleðslan is needed (if you need the RFID key urgently, rather fetch it from them, because the mail delivery takes two to three weeks) -- they use the IT infrastructure from Everon and some of the involved registration emails are prone to be deleted by spam filters.

PhD Defense Federated Access to Collaborative Compute and Data Infrastructures

Helmut Neukirchen, 29. June 2021

Shiraz Memon successfully defended his PhD thesis in Computer Science on Federated Access to Collaborative Compute and Data Infrastructures. The thesis covers how researchers can perform eScience by discovering services (such as accessing data and processing data) on remote research and e-infrastructures and authenticate (such as logging in order to use the service) and how authorization can be done (i.e. deciding which services are allowed to be used).

The thesis was streamed, Wed, 30. June 2021 starting from 09:30 (UTC), and the recording is available via: https://livestream.com/hi/doktorsvornshmedshirazmemon

PhD defense announcement

This PhD is an example of the collaboration between the Faculty of Industrial Engineering, Mechanical Engineering and Computer Science and Jülich Supercomputing Centre (JSC).

Members of the PhD commitee were Morris Riedel, Helmut Neukirchen, and Matthias Book, opponents were David Wallom and Shukor Abd Razak. The head of faculty, Rúnar Unnþórsson, was steering the defense.

Power consumption of Raspberry Pi 4 versus Intel J4105 system

Helmut Neukirchen, 7. June 2021

While I intended to use a Raspberry Pi 4 as a small server, I also ordered from China a small system (BEBEPC, comparable to the Qotom mini PCs. While Qotom mini PCs are slightly better documented, they typically have less powerful CPUs: even though they have Core i3 CPUs, these are so old that a more recent Celeron CPU is faster) based on a Intel J4105 CPU (= TDP of 10 W, 4 cores, 1.5 GHz base frequency, 2.5 GHz burst frequency) which has over the Raspi the advantage of native SATA ports (one standard SATA connector with 5 V power supply and one mSATA connector carrying 3.3 V power supply -- I am currently waiting for an mSATA to SATA adapter and a 5 V SATA power splitter cable to be able to have a RAID system of two SATA SSDs -- mSATA SSDs are only available in smaller sizes). However, the biggest advantage is that it is (obviously) able to run Intel-only code, e.g. in particular (Docker) containers only available for Intel.

Both systems have 8 GB LPDDR4 RAM.

Both systems can be passively cooled: for the Raspy, I used a cooling case from https://www.coolingcases.com/ -- it cools well, but the metal affects the range of the onboard Wifi (not that relevant for a server). The J4105 came as well with a case that allows passive cooling -- while it is still tiny for a PC, it has approx. 4 times the volume of the Raspi.

The J4105 system has for sure more compute power than the Raspi's ARM CPU, so the remaining question is the power consumption. Hence, I did some tests and measurements using a cheap power meter that claims to have a 2% precision. Both systems were connected via FullHD HDMI to a monitor.

Intel J4105 measurements

As I did not install Linux yet, it was running Windows 10 and idle refers to having only the built-in task manager running in foreground (to display clock frequency) and all the background services that Windows 10 has by default. CPU load was generated using a batch file containing an endless loop.

The J4105 clocks down to 0.78 GHz when idle and the power consumption of the whole system (with one mSATA and one SATA SSD) is then 3.8 W.

With 1 core being busy, it still clocks up to 2.4 GHz and consumes 7.2 W.

With 2 cores being busy, it still clocks up to 2.4 GHz and consumes 10.3 W.

With 3 cores being busy, it clocks up to 2.35 GHz and consumes between 11.8 W and 12.1 W.

With 4 cores being busy, it clocks up to 2.19 GHz and consumes between 11.4 W and 12.0 W. (So it seems the reduced clock saves power).

I did run it with 4 cores being busy for an hour, and the measurements did not change, e.g. no thermal throttling seems to have occurred (nor did the case get hot, so a really good passive cooling -- or the contact between CPU and case is bad, but then thermal throttling could have been expected).

Raspberry Pi 4 measurements

I had OSMC with KODI running, but nothing else, i.e. the KODI UI being idle, but all the background services running. The latest firmware as of 4. June 2021 was used, storage was SDHC card only. CPU load was generated using the stress command.

The Raspberry Pi 4 consumed idle 3.8 W to 4.0 W.

With 1 core being busy, it consumes 4.5 W.

With 2 cores being busy, it consumes 5.0 W.

With 3 cores being busy, it consumes between 5.4 W and 5.5 W.

With 4 cores being busy, it consumes 6.0 W.

Temperature with the cooling case from https://www.coolingcases.com/ was approx. 52° C (so it prevented thermal throttling that would start at 80° C). Surprisingly, even in idle mode, the temperature was 40-42° (the tiny case does feel much warmer than the bigger case of the Intel system -- so, it seems: size matters).

Conclusions

In summary, the idle power consumption of both systems is comparable and while the busy consumption is lower with Raspberry Pi 4, it is of course less powerful than the J4105 system. For the J4105, I never observed the full 2.5 GHz burst clock rate (but 2.4 GHz). Even though the CPU TDP is 10 W, the whole system consumed up to 12.1 W (e.g. the RAM, the two SSDs, WiFi, HDMI output, external power supply, etc. probably also to add their share -- during boot, I even saw 14.8 W).

Note that others suggest 2.7 W idle for the Raspi 4 (but seems to require switching off a lot of I/O, e.g., HDMI etc. -- which I did not do, nor did I minimise background processes) or even as low as 2.1 W. On the other hand, many other report that they neither (with either a fan or a heatsink) get the system cooler than 42° in idle, so getting the Raspy warmer than the touch of your hand seems to be normal, but the J4105 system with the bigger case was considerably cooler.

It seems that the J4105 is a good 24/7 home server system, i.e. more powerful than the Raspi when needed, but still not consuming more power when idle. (A German c't article confirms this for a thin client that is also J4105-based.)

An even more powerful system based on J4125 (= J4105 with higher clock) suggest that with Dual-Rank-Modules even 16 GB per RAM module are possible, i.e. with two banks, even 32 GB of RAM. Power consumption has also been measured which is higher (best explained by the fact that it is faster, i.e. cannot clock down as much: 2000-2700 MHz vs. 1500-2500 MHz).

It might be interesting whether a SO-DIMM that has integrated ECC error-correction capabilities from https://www.intelligentmemory.com/ is available for the J4105 which would make it an even better small server.

The ultimate passively cooled server with ECC ram would be ASRock Industrial iBOX-V2000M or iBOX-V2000V -- but these are not yet available and in particular not for private users. But any ASRock motherboard in general, together with AMD Pro CPUs should support ECC.

Update 2023

The Intel i3-N305 fanless mini PCs look also good.

Why you should study Software Engineering / Af hverju hugbúnaðarverkfræði

Helmut Neukirchen, 7. June 2021

Studying Software Engineering is important because Software is the future and future is starting right now. And someone needs to create all this software that is shaping our future.

Software Engineering is more than just programming, it rather looks at big picture , namely the whole life of the software: from the start where you need to talk to customers to find out what software they actually need over to the actual programming, user interface and user experience, quality assurance and this is all guided by project management where you need to make people work together.

Software Engineering covers so many different aspects that students need to come from all kinds of different backgrounds:
female and male, those who are good at math, those who are good at communicating with other people, those who are picky about details, those who are creative. Essentially everyone!

When you start studying Software Engineering, you do not need to be able to program: you will learn that in our courses. But you need to be able to talk to other people and at the same time do not fear thinking like an engineer, such as doing math and applying systematic processes!

The nice thing about developing software is that only your imagination is the limit: you can create everything just by turning your mind into code and then it runs and you can see it immediately working. This is so rewarding!

Studying Software Engineering at the University of Iceland is very practical: you do not only learn the theory, but also apply it in the courses. For example, in our Bachelors program, there is a Software Engineering project that spans a whole full year.

Those who graduate from here, will find easily a job at a good salary and can work in fact in all kinds of different fields: be it banking, insurance, health, industry, administration, tourism, gaming, even arts:
simply everywhere, Software is nowadays needed!

Further information

If you want more information on our Software Engineering programmes:

Bachelor (B.Sc.)

Software Engineering (Hugbúnaðarverkfræði)

Master (M.Sc.)

Software Engineering (Hugbúnaðarverkfræði)

Ph.D.

And of course, you can also do a PhD in any of these programmes. Before you apply, contact a professor: either by a personal visit or -- if you are located abroad -- by writing an old school paper letter (professors get hundreds of email with PhD applications where it is obvious that the same email was written to many professors and thus, these email are considered as spam -- but a paper mail makes an impress)!

If you rather want to study Computer Science or Computational Engineering

While the above text was intended to convince you studying Software Engineering, you might still be interested in our other programmes:

Bachelor (B.Sc.)

Computer Science (Tölvunarfræði) -- we added recently the specialisation in Data Science

Master (M.Sc.)

Computer Science (Tölvunarfræði)

Computational Engineering (Reikniverkfræði)

Salary

For a salary (typically distinguished: base salary and overall salary with the typical amount of paid overtime – overtime is not always paid, though) outlook, you can find surveys on Icelandic salaries at unions (stéttarfélag), e.g.:

  • VR (starfsheiti “Tölvunuarfræðingur”)

and at professional associations, e.g.:

In addition there is also on interesting blog post on the different companies and their salaries (Netherlands -- Iceland might be different).

But be aware that salary alone is not everything, but work-life balance counts or that big and old companies are typically less chaotic (i.e. have well defined procedures) which may give you as a beginner more guidance, but you might at the same time fell more restricted.

Horizon 2020 Future and Emerging Technologies programme: Dynamical Exascale Entry Platform - Extreme Scale Technologies (DEEP-EST) about to finish

Helmut Neukirchen, 26. April 2021

The Horizon 2020 Future and Emerging Technologies programme: Dynamical Exascale Entry Platform - Extreme Scale Technologies (DEEP-EST) project has finished its work and was praised for its results in the final review of the project's outcome.

We still have to harvest our results by writing publications on the results, but you can find a video already here:

All our travel emissions have been offset. As it is not clear whether funding regulations allow to offset emissions due to supercomputer energy consumption, these were not compensated. However, one of the research topics of the DEEP-EST project was energy efficiency and we achieved a lot by using specialised (=more efficient) accelerator hardware.

CoE RAISE Seminar: HPC Systems Engineering in the Interaction Room

Helmut Neukirchen, 14. April 2021

The European Centre of Excellence RAISE (Research on AI- and Simulation-Based Engineering at Exascale) is holding an online seminar on using the Interaction Room Software Engineering approach for HPC Systems Engineering.

This approach has been described in this publication:
Matthias Book, Morris Riedel, Helmut Neukirchen, Markus Götz.
Facilitating Collaboration in High Performance Computing Projects with an Interaction Room.
The 4th ACM SIGPLAN International Workshop on Software Engineering for Parallel Systems (SEPS 2017). Co-located with SPLASH 2017 as an ACM SIGPLAN-approved workshop.
October 23, 2017, Vancouver, Canada. DOI: 10.1145/3141865.3142467, ACM Digital Library 2017.
Download

The recording of the online seminar can now be found on the CoE RAISE YouTube channel:

HÍ eða HR, tölvunarfræði eða hugbúnaðarverkfræði / University of Iceland vs. Reykjavik University, Computer Science vs. Software Engineering

Helmut Neukirchen, 5. March 2021

HÍ eða HR / University of Iceland vs. Reykjavik University

Often, the question arises whether University of Iceland (Háskóli Ísland (HÍ)) or Reykjavik University (Háskólinn í Reykjavík (HR)) is better for studying Computer Science (tölvunarfræði) or Software Engineering (hugbúnaðarverkfræði).

In my experience both universities do not differ that much -- on the surface things might look different, but when you look closer, they are not that different. As an example: HR advertises 3 week intense courses to apply the theoretical foundations learned in earlier courses, whereas at HÍ, the application of the learned theory is built into the courses themselves: either as a project at the end of each course or a project running even throughout the whole course semester.

However, there is one difference (in addition to paying high tuition fees at HR): the diversity choice of courses from other disciplines. At HÍ, you can take non-CS or non-SE courses as part of your studies -- and these can not only be other STEM (Science, Technology, Engineering, and Mathematics) courses, but also, e.g., foreign languages. As HR is quite limited in the number of course due to their limited number of study programmes, HÍ has a big advantage there.

Tölvunarfræði eða Hugbúnaðarverkfræði / Computer Science (CS) vs. Software Engineering (SE)

Another question is about the difference between Computer Science (Tölvunarfræði) and Software Engineering (Hugbúnaðarverkfræði): while both are in essence about programming, Software Engineering goes beyond as it has the "big picture" in mind -- not only, e.g., the big picture of a software architecture, but also related to management, e.g. project management and quality management. For example, SE students take courses from Industrial Engineering on project management and quality management (in addition to software quality management offered by me). When it comes to stakeholder relations (one of the biggest problems in software project are unclear requirements where the developed software does not meet the needs of users) and to user experience, SE requires many soft skills -- including psychology (e.g. work psychology and human-computer interaction and usability).

One might be tempted to say that CS is maybe for the nerds and SE for those who can talk to people and lead projects. But in fact, SE is not solely about soft skills, but you need both: soft and hard skills. Being an Engineer is an officially licensed professional title and as such, the regulations that apply to the contents of any Engineering programme in Iceland apply as well to Software Engineering, e.g. taking a certain amount of Math and Science courses which is the exact opposite of soft skills. So, to be a good Software Engineer you need to have both talents: people and tech.

Note that even if you enroll in our Computer Science programme, it allows so much freedom in selection of courses that you could take the same courses that a Software Engineering student has to take. (However, in this case, you will not be entitled to apply for a license as professional Engineer as you did not study any Engineering, but a Science, namely Computer Science.)

Further information

If you want more information on our programmes:

Bachelor (B.Sc.)

Computer Science (Tölvunarfræði) -- we added recently the specialisation in Data Science

Software Engineering (Hugbúnaðarverkfræði)

Master (M.Sc.)

Computer Science (Tölvunarfræði)

Software Engineering (Hugbúnaðarverkfræði)

Computational Engineering (Reikniverkfræði)

Ph.D.

And of course, you can also do a PhD in any of these programmes. Before you apply, contact a professor: either by a personal visit or -- if you are located abroad -- by writing an old school paper letter (professors get hundreds of email with PhD applications where it is obvious that the same email was written to many professors and thus, these email are considered as spam -- but a paper mail makes an impress)!

Stafræni Háskóladagurinn 2021: Object detection using neural networks in your smartphone trained by a supercomputer

Helmut Neukirchen, 25. February 2021

The University of Iceland's Computer Science department is researching machine learning using the next generation's supercomputer DEEP-EST -- by the way: we are also offering a Data Science specialisation in our Computer Science programme, where, e.g., machine learning including deep neural networks is covered. To showcase what is possible if you have a supercomputer to train neural networks, we offer a web page that allows you to use the camera of your smartphone (or laptop) to detect objects in real-time.

https://nvndr.csb.app/

Just open the following web page and allow your browser to use the camera: https://nvndr.csb.app/
(Allow up to approx. 1 minute for loading the trained neural network and for initialisation. Web page works best in landscape orientation.)

While neural networks are still best trained on a supercomputer, such as DEEP-EST with its Data Analysis Module, the trained neural network even runs in the browser of a smartphone (purely running locally as Javascript in your browser without any connection to a supercomputer, i.e. completely offline after having downloaded the Javascript code and the trained neural network).

The used approach is Single Shot Detector (SSD) (the percentage shows how sure the neural network is about the classification) using the MobileNet neural network architecture. The dataset used for training is COCO (Common Objects in Context), i.e. only objects of the labeled object classes contained in COCO will get detected. The Javascript code that is running in your browser uses Tensorflow Lite and its Object Detection API.

Example object detection via a neural network

If you want learn more about the DEEP-EST project where the next generation supercomputer is developed, have a look at the poster below (click on the picture below for PDF version):

PDF of DEEP-EST poster

European Centre of Excellence RAISE (Research on AI- and Simulation-Based Engineering at Exascale)

Helmut Neukirchen, 11. February 2021

University of Iceland is part of the European Centre of Excellence RAISE (Research on AI- and Simulation-Based Engineering at Exascale) that has started in 1/2021 and will end 6/2024. It is funded by the European Commission's Horizon 2020 programme with an overall budget of € 4 969 347. The University of Iceland's team is lead by Morris Riedel together with Matthias Book and Helmut Neukirchen (all professors at the Faculty of Industrial Engineering, Mechanical Engineering and Computer Science) and several PhD students are funded by this project.

Compute- and data-driven research encompasses a broad spectrum of disciplines and is the key to Europe’s global success in various scientific and economic fields. The massive amount of data produced by such technologies demands novel methods to post-process, analyze, and to reveal valuable mechanisms. The development of artificial intelligence (AI) methods is rapidly proceeding and they are progressively applied to many stages of workflows to solve complex problems. Analyzing and processing big data require high computational power and scalable AI solutions. Therefore, it becomes mandatory to develop entirely new workflows from current applications that efficiently run on future high-performance computing architectures at Exascale. The RAISE Center of Excellence for Research on AI- and Simulation-Based Engineering at Exascale will be the excellent enabler for the advancement of such technologies in Europe on industrial and academic levels, and a driver for novel intertwined AI and HPC methods. These technologies will be advanced along representative use-cases, covering a wide spectrum of academic and industrial applications, e.g., coming from wind energy harvesting, wetting hydrodynamics, manufacturing, physics, turbomachinery, and aerospace. It aims at closing the gap in full loops using forward simulation models and AI-based inverse inference models, in conjunction with statistical methods to learn from current and historical data. In this context, novel hardware technologies, i.e., Modular Supercomputing Architectures, Quantum Annealing, and prototypes from the DEEP project series will be used for exploring unseen performance in data processing. Best practices, support, and education for industry, SMEs, academia, and HPC centers on Tier-2 level and below will be developed and provided in RAISE's European network attracting new user communities. This goes along with the development of a business providing new services to various user communities.