 So, welcome to my second content that I will talk about in part of our publications, which is about being where I can improve in the last couple of months. And, you know, I see a lot of this, so I don't know much about the interaction I need to do, but just in case everybody here comes to talk as well, I didn't know before I stopped it. So, basically, if you have a panel, the usual format for a panel is that you have many rows, which are all about some item, and then the formulas, which are new columns. And each of the columns is called a formal group, which is exactly the same format, just with a different concept, and each row is pretty much independent, which if you think about it as a parallel, parallelism of a random law, it's, in some ways, basically a complex to be computed in parallel. So, there has been a requirement in the last couple of years, and basically it makes sense to improve this a little more, because CPUs for the last couple of years, they haven't been getting that much faster about they have been, and they will still get more and more copies, so it makes more sense tomorrow. And, yeah, also, since the data is separate, it should be a parallelism. I think all of you have heard of the history of random device problems with threads, like blocking problems and so on, but since Intel is crazy about independent, it shouldn't be too bad. So, as far as the implementation, each cell has its cost, which has definitely had to form each cell, and the result, and so on. And there is a formal sum of groups, which, like groups, all come together once the code is the same, just with a different offset, and then the implementation starts with each form of CPU core, and they each compute different cells with different data. And that's about the advantages with threads, most important, because you don't really need a character, you have different data, you need to block everything, so it should be safe. I don't think it's friendly, right? So, I suppose that there are generally many things, there are many functions which just work as they are, because this has worked with data and several parts, each of them has a different data. There are some cases, like the number for network, which is not so safe, but some of the problems can be solved by shifting the bike away from shopping for this event. And the implementation goes away, and sometimes you do need to block, if there is just one point, the last mention is to share the data, in case if you have to block and force it along, it will hurt the parallelism, but it is a solution for your problem, and if you plan for a nice person, it's going to be a lot easier for you. So, that's for the introduction. Don't always talk about this last year, so I don't know much into this career, and I will just, basically, just in case you want to do some of the problems, here are some of the problems I have seen, some of the problems I have faced, and I will also some of the ideas that I want to do in my experiments, which I show off. How many problems have actually worked with COMP recently? If I tell you stuff like, don't please the big variables, is it boring? Problems are just sort of up, and what goes up is that it simply crashes someday. And in many cases, we have things like static variables. It seems in the past it used to be a common common usage pattern, just uses static variables, just if you would be entering something from a function. So, in many cases, it's just don't do anything. Like, doing a static string or anything for an interval doesn't really make sense nowadays. Like when it's in a class, it's very weird. It's just an index inside of it, so you could have just one point inside of the container. It's very bad, I still found cases like this, so it's just, if there is something like, this option is just a common class, which will keep you static, and then you can have it static for each event. But in some cases, I just found that whoever developed their class most was static or something, and just included very low data in the class, because it was probably too much work as a class in this environment or something like that. And in some cases, where it doesn't make sense, it's cashing it, like, out of the code, so it makes sense to cache it. In that case, it makes sense to sometimes it was necessary to split the cache for use back or if it's locked in, it depends on the user's case. But in many cases, there are rules with functionality, and it's great for a new month, and you can just create everything at the beginning, because it would be so much not just spend just initializing all the classes, like the SC global class, it has like several bands of various different classes that you could use. And some of the initializations, maybe more cases on this, so it was quite common. So, first of all, which I've got is that fast on the same page, so if you don't care, you will do many, many times, you can just, maybe it's very common to get initialization, uses the data checking, it's nothing, which actually is safe, it's impossible. You may have it, but it's impossible to do. I should spend some time really early in the class, which can be initialization, probably for the most possible, it seems to work. Because, like, the basic problem is that you are never, when a person should connect with you, just some of the problems can show up only if you can do it in a larger group, so that because you're kind of ready to access to some really big machine, that I don't have, and since it was very important in the class, it was more likely to run into in the college in the community, that kind of a group. But, it doesn't sound the same. Even though the graph is used just in some places, all of the library code is not safe. So, sometimes, for some of the groups, they're probably because, again, sometimes, it's actually something stupid, like I said, they're static, static variables, or something which simply can't be written. But, safe, which is, which may not be allowed to some library class, use the library thing, it may possibly have to performance. In some places, you may probably go just for the time itself. There is this special time in the text, the big, or sort of text, I expect everybody to have, probably have heard of it, where, out of the population, the manifest still keeps the sort of text locked, which means the population threads cannot use it, which means, if, for example, I do, Europe calls from the population threads. And, if I just start, there will be a bit more macOS, which is, by the byte, internal threads of the graph is, and it can just behave everything. Which I would say, but because of this, if it turns out to be, maybe this, maybe, there is a way to manage this, right? If the manifest just keeps the, keeps it in there, it's maybe it's going to be a version for the complex of that, or maybe it will change that but so far, as it is, it kind of works. And, quite often, it's the address, some code, which is developed, and to be run with threads is very small. And, the racism can't so, to run with threads, maybe there is a proper function for it. A special case is, the complex of threads are meant to be quite limited to what they do. Like, basically, they just give developers a result, and that's it. And, they should know, for example, what we find in the current search. So, they have checked for days, because the cart originally wasn't ready for it, so they might discuss with them. Sometimes there will be constant days if, it must be before yet. The cart version of threads should get the result immediately. So, a specific solution is just saying, it can work. There are some places, which are just too complicated. For example, even some of the type functions, like, as I showed, each of them, there are some operations, which you can add data in that process. It's really difficult for the code to ensure that the part of the project is not 100% data. So, like, keeping that in that function, it's hard to find out where the code is so just it doesn't work. It's like this. If you experiment functionally, it's the SC model, it's all, you know, calls, that works. For example, because of solid interest, and there are some big, big causes, which use a sense of question, and maybe it's essential, but for now, it's like this. So, if you did the data that we shared, and if you did the data that we shared, then really it's enough to have one instance for every part of this, every single thread. Sometimes after the number from the other class, we just create one for this thread, and then just if more threads need to form out the number, then they manage each of their class. So, if you don't have a new file, and you just need to have a different text, because this needs to be passed around, so that the function that we shared is using the context that we use also for other interesting problems, like this is one that I have used, this one is very new. You have your new function, which is normally used for the way that this the same row looks up in the same number, and the same row runs there, but each column needs a new one. It needs to survive every computation, because the each column is a separate run, and the context goes away. So, there are some functions for selling the data, and storing it. So, in this case, for example, we have to do a parallel analysis to see how it works. As I said, there are several functions that we can use for selling the data. So, for example, computing the result and setting the result and setting it and setting it for a formal image. This is simply not a failure, it was difficult, but it was nice that it could be postponed, so just it's possible in some cases just to save the data in the context, in the main context. We'll just go clean up at the end. Yeah, if I'm not sure if it works or not, we'll just go ahead and start, and if some later it shows up, it will not necessarily say that okay, you've got something which I'm not supposed to call. So, if you've got the ideas that you need to come, don't be afraid to add them ourselves. I mean, it's better for some change, but sometimes the code change I don't even really need it. So, if you make an assumption just to make an assumption by the asset and if it makes it in the future, it will be easier to find out where or you know the project in general, right? Is there something that doesn't work? It's a really useful tool. So, it's actually not just a bad tool. It has a lot of tools. I've got a tool which is for benchmarking, but one of the tools which is useful now is hardware coverage. Basically, there are a lot of things like you are accessing this data, and you are using this new things here, but you are not using it here. Of course, since it's a physical game, it's based on the combination with the barrel phase, such as, take one out, but still, finding some problems is really difficult. Looking for a problem, which perhaps will be some study where I look at some module and some library with barrel phase. So, I need to be done and I need to find it. And so, if you want to navigate, you need to be done and you need to find it. So, if you struggle, this is your ultimate solution, so far. It can be often a problem. Basically, you can ask the question, as far as I know, I can ask them, code tries to be smart, but when do you spend it? Well, I think I just do so, it doesn't make sense to use that because just to set it up, they'll need more time than they actually receive it. So, there is a test, do not always test it. And they're actually distributed to the group because, for example, it's best to have a calculation of some basic operations. And I'm going to find out some potential problems which will be the same, mainly for size. But this is a too many slides. I'm going to do a scratch test. Documents around what it actually works. And also, the latest stability release, I think, I think, yeah, confident in the stability release and so far, I've never found any problems. I'm spending a lot of time.