From ??? TFlops HPL to ASC'18 Application Innovation

Hello, Habr! We continue the series of articles about the participation of the team from St. Petersburg State University (we call ourselves EnterTildeDot) on the world's largest student supercomputer competitions.
 
From ??? TFlops HPL to ASC'18 Application Innovation
 
In this article we will look at the way to ASC'18 on the example of one team member, paying special attention to the business card of the competitions and modern supercomputers in general - Linpack. Well, let's look at the secret of achieving a record and antirecord of the performance of the computing system.
articles , including ...
+ 0 -

Basics of working with futés

Basics of working with futés<{full}>
Futex (futex - short for Fast Userspace mutex) is a mechanism proposed by Linux developers from IBM in 2002 and included in the kernel at the end of 2003. The main idea was to provide a more efficient way to synchronize user threads with a minimal number of calls to the OS kernel.
 
 
In this article, we will review the futures, try to understand the principles of their operation, and also use them as bricks to build higher-level (and familiar) synchronization objects.
 
 
An important point: futexes are a fairly low-level tool, it's worth using it directly when developing fundamental libraries...
+ 0 -

Creating a bot to participate in the AI ​​mini cup. experience using GPU

Creating a bot to participate in the AI ​​mini cup. experience using GPU  
continuation article1 and article 2 .
 
Below, I will talk about the author's experience in using the GPU for calculations, including the creation of a bot to participate in the AI ​​mini cup. But rather it is essay on the GPU theme.
 
-The name is magical
 
-You know what, Joel? The magic goes
quintessence
 
parallel computing.
 
int tid = blockIdx.x * blockDim.x + threadIdx.x;
int threadN = gridDim.x * blockDim.x;
for (int pos = tid; pos < numElements; ...
+ 0 -

Heterogeneous competitive data processing in real time is strictly one time

Heterogeneous competitive data processing in real time is strictly one time
 
Abstract
 
Real-time data processing exactly once (
exactly-once
) - the task is extremely non-trivial and requires a serious and thoughtful approach throughout the entire calculation chain. Some even believe that such a problem is impossible. . In reality, one wants to have an approach that ensures fault-tolerant processing in general without any delays and the use of various data stores, which puts forward even more stringent requirements for the system:
concurrent exactly-once
and the heterogeneity of the persistent layer. To date, this requirement does not support any of the existing systems.
 
The p...
+ 0 -

We study multi-threaded programming in Go through pictures

We study multi-threaded programming in Go through pictures  
Most likely, you've already heard about the Go programming language, its popularity is constantly growing, which is quite reasonable. This language is simple, fast and relies on a wonderful community. One of the most interesting aspects of the language is the multithreaded programming model. Primitives, based on it, allow you to create multi-threaded programs easily and simply. This article is intended for those who want to study these primitives: gorutins and channels. And, through the illustrations, I will show how to work with them. I hope this will be of great help to you in further study.
 
...
+ 0 -

Java and Project Reactor. Episode 2

Java and Project Reactor. Episode 2
 
Hello! It's amazing, but the first part of Article even someone liked it.
 
Special thanks for your feedback and comments. I have for you
bad
good news: we still have something to talk about! And more precisely, about some details of the work of Reactor.
Inside the Docker, this method can easily lie to you.
 
 
It should be noted that the boxed Schedulers.single () and Schedulers.parallel () throw an IllegalStateException when they try to start a blocking statement in them:
block (), blockLast (), toIterable (), toStream ()
. This innovation appeared in the release
???.
 
If you still want to ...
+ 0 -

Multi-agent system for parallel programming (Java, C ++)

Agent-oriented programming


 
Multi-agent system for parallel programming (Java, C ++)
 
 
The subject of the thesis at the university was "Multi-agent systems for processing knowledge bases". Connecting the Jade multi-agent system to the Protege knowledge base was not difficult and the diploma is ready. Now you can simulate abstract learning tasks, swarms of agents, and so on and so forth. But the question arose, but how to apply knowledge in practice? The case of completing R & D was turned up when working on the "smart house" system. It took a small multi-purpose application to transfer data from the "smart home" to a third-party web interface developer...[/h]
+ 0 -

Its asynchronous tcp-server in 15 minutes with a detailed analysis of

Its asynchronous tcp-server in 15 minutes with a detailed analysis of
 
Earlier I introduced a couple of small posts about the potential role of Spring Boot 2 in reactive programming. After that, I got a number of questions about how the asynchronous operations work in programming in general. Today I want to make out what is Non-blocking I /O and how to apply this knowledge to create a small tcp Server on python which can handle a lot of open and heavy (long) connections in one thread. Knowledge python It is not required: everything will be extremely simple with a lot of comments. I invite all comers!
 
...
+ 0 -

Clojure application in the style of Erlang &lt;{short}&gt; &lt;{full}&gt; <div class="post__text post__text-html js-mediator-article"> <p> As is known in the circle of Erlang developers: only Erlang developers know how to "live" correctly <del> and al

<{full}>
As is known in the circle of Erlang developers: only Erlang developers know how to "live" correctly
and all the rest "live" - ​​wrong
.
 
Without attempting to dispute this fact, let's give an example of Clojure application in the Erlang style, using the library
Otplike
.
 
For understanding the article, the reader may need to know the basics of Clojure
(and unless there are people who do not know Clojure? )
and the Erlang /OTP basic principles (processes, sending messages, <{short}>As is known in the circle of Erlang developers: only Erlang developers know how to "live" correctlyand all the rest "live" - ​​wrong. Without attempting to dispute this fact, let's give an example of Clojure application in the Erlang style, using the library Otplike . Otplike . , supervisor behaviours). In order to deal with everything else, the average Clojure developer has everything you need: code with examples , REPL and "tambourine". Why Clojure? In fact, there are many answers to the question "why Clojure". Here are our favorites: №1. Clojure is a very effective ...
+ 0 -

Management of queues in Laravel

Management of queues in Laravel
 
 
In my current project, there are many tasks that are performed in the background. Data comes from an external service and passes several stages of processing. Processing is implemented through the queuing mechanism. This is convenient, you can vary the number of vorkers for each type of process. And in the event that something falls, the queue will be copied, and the data will not be lost - will be processed once the problem is eliminated.
 
 
In order to create a task from the same process for the next stage of processing, we just called at the end of processing. dispatch () , approximately ...
+ 0 -