I'm dealing with benchmarking and reporting of the user community application, so. Thank you. So today I'm going to talk about the reporting we did of Quantum Espresso for GPU system. The work was done by myself, Everett and Josh that are with me and from Filippo that is now at ARM previously at University of Cambridge. So a quick outline, some introduction and objectives, what is Quantum Espresso you're probably more familiar than me about this and then some details on the implementation and then a lot of benchmarks and results. So first of all, the three of us that did all the work, we are outer space engineers, so we know very little about material science. But I was told that material science use principle simulations a lot to study the physical properties of materials. And when you want to study a large system or you want to reduce the time to solution, you need to use a high performance computing system. If you look at what's happening in the last six, 10 years in HPC there are now a lot of new technologies. Among all these new technologies, GPU are now very popular. There are mainly three reasons. They are many core processor and when I say many cores, we're talking about thousands of cores. Very simple cores that can give you a very high flow rate. Volta, the last generation, can perform DGM at almost seven teraflops. And you also have a lot of memory bandwidth. It's HPM2, it's stuck on the GPU and you can achieve more than 800 gigabyte per second. So you're talking about very interesting numbers. Also looking at exoscale, GPUs are very energy efficient. If you look at the last three, four, green 500, most of the time, all the top 15 system are all GPUs. So you can deliver right now almost 15, 16 gigabyte per watt. And together with the hardware, there is also a lot of software. If you want to port something like quantum espresso, you need math libraries, you need compilers, you want to have profilers and the bugger and so on. So there are several compilers you can use to program GPU. You can use programming languages like CUDA or like in this case CUDA Fortran. You can use compilers that are with directives like OpenACC. NVIDIA itself provided a bunch of math libraries but there are also open source projects like Magma that has a very nice collection of math libraries. And then there are profilers and the bugger, even like commercial one like TotalView and Aline DDTA. So we decided to port quantum espresso to the GPU. Quantum espresso, it's a huge code that are so many different things that can do. So at the beginning, we focus on PWSFC that is the main workhorse. We use CUDA Fortran but we have a single source code that can be compiled for CPU and GPU. We use extensively kernel loop directives.  We also spend a lot of time doing validation and performance study on a large variety of system, both x86 base and also power base. In particular, we use a lot of machine that is now a Chinega called a Davide. And I think Luca will talk about some other things. And all the software we ported, it's all open source. Right now, it's on a GitHub repo from Filippo but one of the objective was to have to show best practice. We did a lot of very detailed optimization and the other code can look at what we have done. So, as I told you before, you're probably more familiar than me with Quantum Espresso. It's a popular package that is widely used in the academic industry. We ported the PWSFCF, so this is computing the quantum orbitals and the energy of the material system. And it's using an iterative methods that is looking for a self-consistent input and output charge densities. So, if you look at what needs to be done, basically in each iteration, you need to diagonalize an Hamiltonian. This is done using a block Davidson methods and this is done for each of the K-points, the KS orbital. And then you have a computation of the output charge density using the results of the diagonalization and you do this multiple time until you reach the threshold that you decide. So, what we've done, we can use different parallelization strategies. These are the ones that are already in Quantum Espresso. So, you can parallelize across K-points. So, you distribute K-points into a pulse of processor. And then, only for the CPU version, you can actually use parallel libraries to do the block Davidson diagonalization. And this is done either with Scalapac or with Elpa. So, there have been in the past a plug-in done in CUDA-C that was done by Philippon and Ivan for Quantum Espresso. We decided to write everything from scratch using CUDA Fortran. The code is in Fortran. It's very easy to use CUDA Fortran and in this case, you can also have a single code base. We decided to use CUDA Fortran. You have more control than OpenACC. You still have some high-level programming directives and it's easier to maintain the dynamics language approach. CUDA Fortran require PGI compilers that in the past was a Quantum Espresso, it's open source and it will be nice to have an open source compiler. But now PGI has a free community edition, so you need to buy the compiler, you can just download it and use it to compile and run Quantum Espresso. So, at the beginning I was telling you that there are a lot of tools and profiling is very important when you're trying to get the best performance out of the system. And when you're dealing with CPU and GPU, you have more complexity than usual because you need to understand the interaction between the CPU and the GPU. I'm getting the right bandwidth from the PCI Espresso or the MV link. Can I add data moments between the GPU and the CPU? And then sometime also, you may find some spot in the profiler that you are not expecting. So, in particular, we heavily use these three tools that are coming with CUDA. MV prof can be used to generate kernel properties and time information. You generate a trace and then you can import in this MVVP and then you can also add these markers to the timeline. And what we did with Quantum Espresso, Quantum Espresso is a nice timing system already in place. So we actually modified the timing system to inject all the MVTX markers that we needed. In this way, you don't need to add extra code to Quantum Espresso. You just use the normal start time and time and everything is done for you. And this is just an example of the show This is a, actually, when you go on each one of this bar, there will be the name and you can find all the information about what is running. But in this situation, you can see, for example, that you have a bunch of copy back and forth. These are probably the FFTs and then there is some other things going on. And so the idea is that you start working and then you start attacking the larger bar and then trying to reduce the run time and then move to the next one and so on. So if you look at what are the main operation done in Quantum Espresso, you basically have three operation types. You have a lot of gem. Usually they are Z gem, level three blasts. You have a lot of FFT that are typically distributed. And then you have the dense matrix diagonalization that is done using either LaPak or ScalaPak or Elpa. So for the first one, the blast routine, they're very easy to port. We have a Kublas library. It's basically, you just need to link the direct library. The 3D FFT and the dense matrix diagonalization are required more work. And then once you start porting everything to the GPU, even something that in, at the beginning was not a bottleneck, at a certain point becomes a bottleneck. When you go very fast on all the other things, competition of stresses or forces becomes a real bottleneck. So at the end, we move all the code to the GPU. Basically once you start the CPU, it's utilized only in one part of the Eigen solver. I'll show you later. So for the 3D FFT, we use the 1D FFT that are coming from the NVIDIA library. They require a lot of transposition data communication. And in the current version, there are a lot of MPI all to all. And then you have many 3D FFT computation for each K point and one for each band index. So one thing we did, when you're dealing with the system with CPU and GPU, you want to overlap as much as possible computation and communication. And if you're using something like MPI all to all, that is difficult. So we change the scheme so that we can do more overlap. And so you can do some kind of pipelining of data movement. And so all 12 communication are now done with the non-blocking MPI as sent and I receive. And then there are, we run on a large variety of system and depending on the vendor, it's a crime machine, it's an IBM machine, it's a normal X86. You may have, there are things called CUDAware MPI and sometimes they are not very efficient. The implementation from that particular vendor is not that good. So we did a lot of tuning, for example, to use IPC interpreter communication to do, to get the best performance you can get. Now, when we start looking at the diagonalization, there is a library that is coming from Nvidia but the performance was very poor. There is also another library called Magma, the one coming from Jack Dongar's group. But they also rely heavily on the CPU and when you have a system with a lot of GPUs, you don't have a lot of CPU resources to use. So we brought a new, I can solve it from scratch. And so right now it's only working for a single GPU but it's pretty fast. So we usually are much faster than NKL and in most case we also beat Alpa. This is an example of, so this is NKL on 16 cores as well, this is Magma, this was the old library and this is the new library we did. So you can get a decent speedup and I'll show you later on on the results that we actually are usually faster than Alpa even using a very high end system with a lot of cores. So going to the benchmarking results. So for this presentation, we are going to talk about three different benchmarks but we run a lot of them to be sure that we are getting the right results and also to find the hotspot in the code. The reference system is a system that Philippos has access to. It's a very high end cluster with like two top of the line Broadwell with like 18 or even more cores each. And when he did the run, he really tried out all the possible combination of Alpa, NKL, changing the number of OpenMP and MPI thread. So when you will see the results, each one of the points is actually the best configuration he found out of 50 for each one of the run. The GPU system, the Eigen solver is always serial. We use kublas for plus and then we use NKL or ESSL depending on the host for the CPU routine. And then on certain system we use to improve the bandwidth between GPU. We use this Kudahware MPI and custom IPC. Now on OpenMP, on Intel system we also enable OpenMP. You cannot do that on IBM system because the OpenMP is incompatible with the multi-threaded ESSL. So you have to decide either using the IBM ESSL multi-threaded or using OpenMP in the rest of the code. And we found out that using the multi-threaded was faster. So all the rest is not used in the stuff. Just to give you an idea of how different this system can be. So for example over here, you have Pitstain, the biggest machine in Europe. It's a very simple design. You have one CPU, one GPU in this case it's a Pascal and this is a Cray Aries network. This is a machine at Cambridge, Wilkes II. You have one CPU and then you have four GPUs connected through a PLX switch. You can see over here that this is a real bottleneck. You need to work around it. This is an NVIDIA DGX1, it's a very dense system. You have eight GPUs, you have four NICs. You have this MBLINK, it's a new technology that is a very fast bus. And this is the machine that it's either both at Cineca, it's called a Davide and there is also a small machine at Oak Ridge. This is a power system. So you have two power eight GPUs in this case, two Pascal, power as a MBLINK connection to the CPU. So you can move data very fast. It's more than twice as fast as PCI Express and then you have PLX and switches. So we really try to cover a wide range of configuration. So the benchmark case we use is, the first one is a very popular one is coming from, I think, Brace. It's a golden surface with 112 atoms and 2K points. The other one is tantalum pentoxide and this one has a lot of K-points, 26. And then we also add to compare against KNL and also Sirius, the presentation will come after me, this silicon germanium something. And this is a VC-Relax.  So on the top of the line, you can see the result from Philippo's effort. And over here, you can see a bunch of, this is pitstained, this is the NVIDIA-DGX. And when you see GDR, means that we took advantage, for example, of this, in this case of NB-Link to communicate. And also Wilkes too, we try to avoid going to the CPU but we try to stay as much as possible on the other side of the PLX. So you can see that in this case, usually increasing the number of pools give you a better speedup. You can see you almost have a linear speedup on both simulation. When you just increase the number of resources for with a fixed number of pool, the scaling is less. But nevertheless, you can see, you have AGPUs that are faster than 32 sockets. So this is 16 nodes and this is a single machine. So you can get probably a factor of two, three speedup depending on the system. We actually improve a little bit more the code but we don't have time to rerun on all these possible configurations. So we just fix, for example, the AGPU, that means the AGPU, ACPU case. So over here you can see FFT, Eigen Solver and the other. So you can see that for this particular case, our single Eigen Solver is much faster than ELPA. The FFT performance are improving using GDR. You can see over here, the FFT can shrink if you can use this extra bandwit on the GPU. The Eigen Solver on Summit Dev and Davide is slower. One of the reasons is that ESSL is not exposing an internal library that we need. They only have a very high level. We need a solver for a triangular system. Three diagonal system. This is for TA 205, you see a similar number. In this case, you have a large number of K-points so you can scale all the way up to 128 GPUs. And also over here you can see that usually increasing the number of pools give you a better speedup, keeping the resource constant, the number of pool constant and increasing the resource will give you less. Like before, let's just focus on the 104 GPU. So in this case, for example, we also have number for Volta. So you can see that basically without changing your code, what used to be in the Intel world 15 years ago, new CPU, new boot speedup is now happening on the GPU. So you go from 290 down to like 197. For example, Summit Dev and Summit, because they have also device NB link, they actually have faster performance for the FFTs, but they are slower on the Eigen solver. Moving to the last case, this is the VC Relax. So we use this case also to show accuracy. So in this, this is a repo from Pietro and Anton. So they have a large case of benchmarks and they have data from, for example, running the standard quantum express on the Broadwell node at CCS. So these are 10 nodes and these are 10 nodes of Pistate. And then there are also some number from Chinaka using KNL. So you can see that 10 P100 are more than twice as fast, almost three times the performance. So this is the same number of nodes in Cray and they are much faster than KNL. And if you look at the energy, you can see that the results are pretty much spot on.  And over here, there is a breakdown to see exactly which part is going faster. We also did some comparison with Seedust GPU. Seedust also is pretty fast, but our implementation right now, it's a little faster, this should be a 10. So this is exactly the same situation. And once again, I did a quick test on a Volta and you can see that basically, the code is going 50% faster just putting a new GPU. So conclusion, the new GPU implementation can give you a speed up of a factor of two and three. And it's also, you can go to access scale, but you can also bring a lot of competition of power to your workstation. You can have a workstation with four GPUs and you can be as effective as with a small cluster and you don't have to manage the power and so on. The code is running on both x86 and power and if there is compiler support for any other architecture, it will work. The custom Seedust GPU is pretty competitive and with all the other things out there, it's all open source so you can go to GitHub and download it. I think Anton was trying to implement it in Seedust. Depending on the topology of the system, sometimes you need to do a little bit more of extra work to do like P2P and other things. And everything is open source and available on this GitHub. I know that there are plans to actually merge with the main trunk. Right now, this code is only working for Quantum Express of 6.1. We didn't put in all the change for 6.2, but it's pretty easy. I believe. Thank you almost for your help.


All right, so we have a recording, now minimize this and hopefully this is shared on Zoom. So we've got a great agenda today. I'm going to kick it off with discussion a little bit on tokenization and interoperability and Web3 based on a lot of work that we have done at Oracle in that area, right? We've always been about enterprises and enterprise blockchain, of course, since 2018 when we launched our Hyperlegia Fabric based blockchain platform, but the last couple of years we've really been pushing the envelope and taking it into the Web3 space is tokenization and Web3 integration and the centralized identity and you name it, right? We're trying to be as good of a Web3 citizen as we can, given that we are permissioned blockchains, there is always a certain limitations, but also certain attraction from an enterprise customer community, I think, so I'll share some of that with you. And then we'll have Peter from Accenture talk about Hyperlegia Cactus, a cacti, I keep going back and forth cacti now on interoperability and heart will talk about Hyperlegia Firefly. So we've got a really cool agenda. Let me bring up my deck and put it in representation mode here. Okay, I think that's good. I should point out by the way that Oracle has been selected for the third year in a row in Forbes blockchain 50. One of the very few large scale tech companies actually that's been in that Forbes list for three years in a row now, that's kind of neat. My role quickly is I'm responsible for product management of blockchain technology and strategy. In addition to our blockchain platform, we have a couple of other blockchain related solutions and products which I can tell you about afterwards if you want to come by and say hello. But primarily today we'll talk about the Hyperlegia based capabilities that we provide and what I'm going to try to do is quickly talk about my view of Web 3 world and what does it really mean? Because people throw the term around loosely and everybody means whatever it is I've got to sell today. Whatever is on my truck is Web 3. I'm going to try to give it some structure and then we'll talk about specifically tokenization and decentralized identity and the capabilities that we have developed on top of Hyperlegia Fabric specifically with Oracle Blockchain platform to do that and some customer use cases. I will show you some really good examples of how customers are using some of these capabilities, particularly tokenization. Centralized identity is still a little bit experimental and early there's a few opportunities that we're involved in but not really production but many others are tokenization use cases in production and then just share a bunch of additional materials. So I'd like to start with this question that one of my colleagues actually asked a while back out on Twitter to describe Web 3 in one world and people came up with all kinds of interesting answers all over the place. What does Web 3 really mean? Self sovereignty, community or identity, transactional, delusional, grift, exit liquidity and so on. So since we are in some sense driving this train forward from a blockchain perspective I think it behooves us to talk a little bit about our views. My view in particular is that we have two forces or two sets of forces if you will that are helping to define Web 3. One of them is the general sort of a desire to decentralize things, just intermediate things and move from a sort of internet consumer and browser to a publisher and creator world right where people can create things, they can own things, they create, they can monetize them and perhaps avoid some of the intermediate, some of the large platforms that have been taking advantage of what content people create and monetizing it for them. But then from the bottom up there's also a bunch of technologies that have been maturing in the last few years. Certainly the organization or portable digital assets for those who don't like the organization term because when I talk to the organization to some of our customers I think we're talking about credit card number tokenization, right? Very different use of that term. So I've started talking about portable digital assets. The centralized identities that's maturing particularly with W3C standards. The centralized identity verified credentials and there is now quite a momentum in that space we're seeing in the last year actual real world use cases. The centralized storage that's another big area and the centralized governance, right? There is a bunch of things that are happening in that space that I think is still emerging from an enterprise perspective because enterprise is all about centralized governance but you're beginning to see in the context of consortia and ecosystems emergence of desire to adopt some of the centralized governance capabilities. So you bring that together and I think what we're going to see is sort of a next generation of a lot of person to person business to business, government to person, government to business interactions that are powered by these technologies. Certainly there is some amplification from immersive technologies in a virtual reality, meta versus whatever term you want to apply there. And we're going to see this combination show up essentially as a set of complex services and non-demand capabilities with digital identities wallets, smart contracts, off-chain edge computing and Web3 will be kind of the large envelope into which all of us get stuff. So when people talk about Web3, it's going to be all of those things but there is going to be the score driver for decentralization as a North Star guiding principle and there's going to be this underlying technologies I think from the bottom up trying to actually help make this real. So drilling down on this, right? I try to put together a little bit of a table here that shows what are the relevant technologies in each of the series. Certainly from a tokenization perspective the standards, ERC standards of course, but also token taxonomy framework which is now owned by IWA came out of Ethereum Enterprise Alliance and I think here's some potential future because it provides a more general meta framework around which different tokenization standards can coalesce and we can create not just different standards but a structure of standards or family of standards. In centralized data storage of course you know IPFS everybody knows about IPFS but there are other solutions. We have an Oracle cloud department called Zero Chain which provides similar capabilities that are quite advanced. In the centralized identity you have DITs or DADs and DAD documents, verified credentials and this whole concept of what's called this issue holder and verify a triangle and the capability is that we probably know best from Hyperledge Indie and Hyperledge Aries Volo Technology. And then the centralized governance, right? If you think about the consensus mechanisms, particularly in the permission blockchain that's a model of governance, but also DAOs and how those DAOs are beginning to be used in variety of ways. One of the really interesting things I've heard recently in Oracle has been known to sponsor some sports leagues and teams and facilities. Larry Ellison, our chairman in particular is a great fan of sailing. He was a sponsor of America's Cup for a number of years but recently moved away from that to a new league called Sale GP. Sale GP is an international league. They'll be here in San Francisco Bay in May. They run catamarans on foils that go about 50 knots over 50 miles an hour on water. It's amazing stuff. I mean I'm a sailor myself, so it's what you know. Anyway, so I've been talking to them about some of the things I've been doing with near blockchains. I've been partnering with near for some time and they're talking about having individual teams convert into a DAO-based organizations where people and sponsors can buy into the DAO as stakeholders and through the DAO mechanism actually controls the decision-making process of that particular team. So this is a really interesting example of how those DAOs beyond just some financial significance that are going on and all of that people are thinking about using them. I talk mostly to our customers for enterprises, government organizations and they really want to know what's in it for them. Is this all stuff out there in crypto world that they don't want to touch or is there something real there? So I think there is a lot of real capabilities here that can be beneficial in an enterprise space, in business space, certainly for tokenization, protecting IP ownership to run FTs, traceable history of life cycle transactions that you get and the ability to do all sort of really interesting payments, B2B payments, micro payments and other kind of things, including most recently we started getting involved in central bank digital currencies around tokenization space. Verified credentials, the documents, there is a lot of value actually some companies are beginning to think they spend so much time and resources from a security perspective, managing their identity management ensures that that doesn't get breached. If all of a sudden a lot of it moves out to individual user wallets there's nothing to breach. It saves them so much from a risk perspective and cost perspective that they're beginning to think the centralized identity actually has something to offer to enterprises. And then you know centralized governance that's a harder sell to companies but I think if you work in a consortium setting where companies are working together and you have you know leagues, sports leagues and other things like that I think there may be something there as well. So they're just you know my thoughts on why that matters. Now drilling down on tokenization a little bit right I mean obviously you've been seeing adoption of this in enterprise use cases, you know ownership transfer or not ownership but just usage rights right you might have specific license rights that you want to be able to offer ability to verify ownership history allow fractional ownership to help increase liquidity. You can track digital assets of you know actual you know online only tokens but also digital trains of physical assets which is quite important in the number of companies that deal with high value assets for B2B transactions but also in BTC engagements and you can use a token mechanism and smart contracts to control the operations that your enterprise systems perform on those assets which is quite important right so you have agreed rules you know who's trying to make a particular state transition or state change and you can determine if that's you know going to be allowed or not and so on. So there is a lot of potential interest there in creating a bit more of a standardized mechanism for enterprise systems to manage it right of course you know we know the history probably everybody's familiar with the history of tokenization from bitcoin to NFTs but what we're beginning to see is emerging interest from enterprises for using fungible tokens and rewards and loyalty programs, royalty tracking, cross-border funds transfers, CBDC and other digital currency applications and NFTs as well in reward systems, component traceability and regulated supply chains and regulated production environments. We have some companies that are doing electric vehicle battery passports. A German government has created a coalition of local vendors that one of our partners in Oracle Blockchain is actually implementing a battery passport for a lot of German automakers and another one recently implemented the same single Oracle Blockchain for Ford where Ford electric vehicle batteries are actually in you know tracking the batteries with a passport identifier that has unique capabilities to identify not just a battery but certain components and as it's going through repair, reuse because batteries at some point not good enough to drive the car but it's good enough for other things that can be reused, repurposed and then ultimately recycled and so on. Electronic bill of lading, one of our consortium companies that we've been working with global shipping business network JSBN which is in this maritime shipping world that have contained the shipping company, sports, terminal operators of you know logistics and shipping started putting on electronic bill of lading capabilities on top of the blockchain to be able to provide essentially this negotiable document and transfer it electronically without anybody having to print it, courier and so on which is a really big thing and there is a lot of standardization effort happening around that as well. So just a bunch of examples, I think those are questions there. Just two line context, I've been working on Rewards Royal PR line program for 25 years and one of my new companies attempting to do loyalty and rewards using the blockchain at different tokens and all of that and the number one problem we've run across in the enterprise and we're so fighting is a miscrust of the regular blockchain and crypto and complaining about you know all the stuff that's going on, is that kind of you guys who define it and you're working here? Yeah absolutely, we don't see that as much in the last couple years as it's been prevalent in the past so we often have to explain the difference and we often, well sometimes cautioned or advised by you know the people who's in enterprise that want to promote this to use the term distributed ledger rather than blockchain, that seems to go easier sometimes but definitely we have to do some education because for some people you know they read every day about cryptos, they read about you know FTX and everybody who is you know taking advantage of people there and they have questions right, I mean how is it related, how security is and so on so there is always some education that we have to do you know as we go into some of those opportunities with customers. And I'll share maybe a few examples but just a little bit to drill down on tokenization right, so our platform started in 2017 and we released it in 2018 is Oracle Blockchain Platform based on Hyperledger Fabric, we felt that this was the strongest and best permissioned enterprise blockchain technology out there and five years later we still believe that's the case but you've done a lot of work of course to extend this as well for enterprise customer needs. Now it does not have native token support but nevertheless we had you know a number of situations where customers, partners build application chain codes, more contracts to emulate years to 20, years to 721 and the like in order to provide the organization support and we said look why you know have everybody built it every single time from scratch, they can provide out of the box libraries that implement that and they have this cool local development tool, the build called blockchain upbuilder which generates code automatically from templates and specifications and so we said we create specifications for years to 20 or GTF based tokens years to 721 and the like and that's what you've done, it's basically started with token taxonomy framework structure, we created a meta model, we created the templates and then we automatically generate all of the lifecycle methods from that template based on the behaviors that you specify, vulnerable, mintable, transformable all of those things so that you could deploy them automatically and you know you can build on top of that if you want. I'm also here to do some optimization inside Hyperledge Fabric Peers to avoid MVCC conflicts which we've done so we can now do multiple token transactions per block at high speed and so on and we've added support for NFT of course years to 721 and the RSE 1155 over time as well so we have you know a lot of different tokenization engines now available just a little bit in a platform to give you a sense of how that was built right so in a standard Hyperledge Fabric you have PNodes, you have copies of Zellager, you have you know the running smart contracts as well, then ordering service nodes which are responsible for creating blocks from transactions through the rough consensus mechanism and then sending them back to the peers to be verified and appended to Zellager, there's membership service which basically is a Fabric CA that creates X59 certificates for identity management towards the components and all of those organizations and so on. We've added a bunch of things from an Oracle perspective such as operation storing, API gateway for REST API integration and event callbacks, we're looking at a builder which is a local developer tool to build smart contracts you know we're to operate with other capability public nodes so we have customers running across multiple clouds and multiple providers as well as on-premises version as well as it's available outside of Oracle Cloud integrated into Oracle database so they can feed the legend data in increasingly so you could do analytics, machine learning and other things and on the left-hand side you know provided a lot of integration capabilities through the same REST APIs as well as integration adapters to make it easy to integrate applications back off the systems of records that everybody kind of depends on so they're so pre-assembled managed service you know there is one screen, three or four fields you need to fill out to provision it 10-15 minutes later everything is there and ready to go and so you know very easy to use we've done a lot of work to add to the core community edition of Hyperledger Fabric around you know cloud provisioning and management, zero downtime patching, operations tooling we've extended a lot of security and variability features as well finding a master's control, launching audit log, integrity of auditation, you know block integrity of auditation, identity management implication and some of the things I talked about already terms of the local tuning, code generation but most recently atomic updates as well this is something that many of our customers really needed to be able to integrate blockchain with other resources or complex applications where you have transactions spending multiple channels, multiple chain codes on a blockchain in Fabric natively today you cannot commit them with the same atomic transactions actually overcome the issues to face commit and recently added Ethereum interoperability as well so you can now do atomic transaction across Fabric and Ethereum in the same basically location and some data management and other things so but as part of that you know this is just where to find it if you have some interest in playing with it you can go into Oracle cloud cloud.oracle.com is a set up an account there is a menu here you call a hamburger menu just those three lines and that gives you access to drop down into all of the different services under developer services you'll find blockchain platform a simple menu to provision it select the different shapes and the version and a couple other things and then it goes off and creates it and all of the infrastructure resources all of the nodes for Fabric itself all of the other components to mention are there in 10-15 minutes that you can go ahead and yes yes yeah absolutely I'll come to that I have a couple slides on that and I can I can share with that yeah this was the on-premise version that runs in VMware or virtual box it's basically virtual machine but the same package the same software pretty much all the same capability just for customers who various reasons want to run outside of Oracle cloud or in the third party cloud monitor and also build hybrid networks some of our customers want to run on-premise and in the cloud at the same time or the ecosystems rather there is a management operations console that makes it very easy to do the configuration management administration adding extending different nodes creating channels deploying chain codes all of that life cycle management of smart contracts as well either through the blockchain up builder which is a downloadable tool or directly through this web console and then you know monitoring troubleshooting here you can see the relationships of peer nodes different channels there is a lot of dashboards and ledger browser to be able to drill down on a particular channel to blocks to the blocks section inside the blocks and all of that kind of an admin view of course for applications you would build something very specific so you know this has been the words we've done to make it easy for enterprises to adopt that's why many enterprises have chosen Oracle platform but beyond the infrastructure there is also requirements around the applications themselves right the platform itself is going to platform so we have two things one is a portfolio of partners with industry solutions across many verticals and also the slow code dev tool called blockchain up builder and this is really a neat tool because it can automatically generate smart contracts from templates you can take existing templates and tailor them or you can create new ones there it in enamel adjacent were easy to use and we now extended that with templates for tokenization so you can create fungible token non fungible token chain codes as well in that environment it's a tool that you can download from the platform it runs in visual studio code as an extension so you can bring it up in a good environment there's also a command line version for CI CD and it manages entire process from editing the templates to scaffolding and creating the chain code regenerating TypeScript will go and then testing there is a built-in version of fabric for local testing deployment and then also deployment to the blockchain platform in the cloud for actual you know nodes in test or production environment as well kind of a simple flow here you start with a specification file that's a set of yamal adjacent file and once you tailor it you can generate the scaffold and the chain code and this will generate basically the crowd methods or if it's a token template it will generate all of the lifecycle operations necessary all the chain code methods for the lifecycle of the token you can extend it as custom methods if you want to or you could use it as is and deploy it directly you can deploy and test it locally there is a drop-down menu to execute all of the methods that we generate and then you have ability to package and deploy directly to Oracle Cloud environment so what is it to use tool and if you're not a blockchain developer and you've never eaten chain code this is a good place to start because it will generate basic stuff for you and you can run it directly through the rest APIs and then you can play around and extend it if you want to modify it because it's all in source code so we use this for tokenization support and this is how we started introducing tokenization to our enterprise customers initially with fungible tokens based on TTF model and later on with NFTs as well we have added support in the recent release to do liquidity pool exchanges for cross-currency or you have fungible tokens for example in the multi-brand loyalty program and they have different weights and you need to exchange so just this methodology called exchange pools or liquidity pools that here's somebody who has accounts on multiple token IDs and exchange rates that can be set by APIs so this is something that we've added recently but the basic mechanism is essentially you start with example KAC which is a fungible token example we define for not only motivators and parameters of custom properties you can add and then we'll generate account-based setup environment, role-based security as well and then the lifecycle message necessary to create you know mint transfer and born and so on those tokens so this is pretty straightforward environment this tokenization engine here's basically three layers there is an SDK layer for each of the different token types there is a set of wrapper functions that can unify it and provide all the management setup querying and so on as it can be customized functions and then role-based security added in there as well so you can specify the roles for who can mint who can burn and so on you can take all of this and run it directly expose through the recipes or you can extend it with your own custom code and you can essentially invoke those functions if you need more complex business logic or you can leave that chain code alone and create another chain code for your business functions that use cross chain code invocation to call the token chain code as well and this is what some of our customers have been doing last release we've added ERC 1155 this is a new standard for those who are familiar that combines fungible and non fungible tokens so you could have a single chain code now that allows you to manage both fungible and non fun and NFTs you could do batch operation so you could do batch minting batch transfers and so on and you can exchange fungible tokens for non fungibles and vice versa so some of the key capabilities are so we generate all of those methods from a description this is an example you have a demo actually of using this where you can buy an FT actually integrated with Ethereum so you could buy it with an ERC 20 coin and you know this is a mechanism that we're seeing many of customers going forward will start using because in many NFT applications there is also a need for fungible tokens as well and dynamic NFTs as well so this is the solicitation of liquidity pools where you have ability let's say you're doing multi-currency CBDC central bank digital currency so you need to be able to do exchange between multiple currencies so you have somebody which owns exchange pool accounts you have multiple tokens and balances there is a transaction request to set it up initialize at conversion rates etc you can then fund the balances in here either as percentage of the minting function you can put in a percentage of what you minted or just regular transfer methods from other liquidity providers and then you just call token conversion method and this is atomically going to exchange one currency for another using the swap basically separate and then pay out the other account in the closet currency comes in really handy so this is basically set by apis so in an enterprise setting you set whatever rates you want to set and if you want to introduce you know some delta factors as that's up to you the enterprise currently is accepting each side yeah you can change yeah it's an api base so you can change it any minute you want right yeah exactly yeah so one of the things I mentioned earlier that we did also was important is the concept of atomic transactions right so how many of you are familiar with some of the marble samples couple of the fabric samples right marbles everybody anybody play with that everybody it's basically shows an example for you have an object if you have some properties that color size etc and or no so you can transfer them so there is another sample sample called example zero two where you have transfer of some numeric value right from account eight or count b so let's say you actually want to deploy an application where somebody buys marbles and pays for them using the example tokens but you have marbles running on one channel you have a payment running on a different channel for scalability right when separate them out in fabric and you want to make sure that the payment and the transfer of ownership is done atomically right it was happen or nothing happens so we created the atomic transaction API if you can walk through our restaurant and gateway and you're basically specifying that any transactions with a chain code name parameters and the channel name and using two phase commit mechanism where we actually first do a prepare where transactions are stored as pending in the ledger with a pending flag and then if everybody agrees that you know prepare has completed then we do a commit and we then can commit it to the actual state world state so then or we can do rollback if somebody fails so this was kind of the capabilities that started us on the path of atomic transaction support where we said initially we had customers who needed to do this complex stuff across multiple channels all right so that was great uh the Zen said why don't we extend that by uh including other blockchains in that right so you know of course everybody wants to play with the theorem so we in our gateway here added support the database commit added yes client right this is a complementation of the theorem client that allows us to talk to any VM or a theorem based network and then we've orchestrated essentially what we call a two phase commit with a last last resource commit optimization the way this work because of the theorem side you don't have to face them it's not an xr resource so essentially we'll do a transaction atomic transaction we will do a prepare phase on our blockchain course we will then go and use the theorem client to make a call to do a transaction involved smart contract and in there we specify certain finality criteria so how many blocks to wait how long to wait time etc and verify and if that happens let me come back here and we don't commit and if this fails then we'll do a rollback this allows us to do without any bridging essentially atomic operations across multiple chains and uh since someone was asking you know what are some of the use cases i'll show you in a second but this is what it looks like from an api perspective where it gives us a quest in transactions so you're specifying on those in white this our calculator public transaction there's a ft need to see what that was that chain code is and then here the seller sees the theorem request and you can specify assigned to unsigned request you can specify the finality parameters check finality through or false blocks to wait all of that and then go ahead and do prepare execute this do the verification and then if everything's good we will go ahead and commit on the oracle side and you get a response back that shows you the transaction that you prepare transaction commit and then the transaction idea as well on the theorem side and if you were to go and look up the ether scan for that transaction you will actually find this transaction here as well because it happened in our case with test net using gory for that example here but this is essentially the mechanisms that allow us to do atomic transactions and those atomic transactions support things like atomic atomic asset exchanges so you know you might have a custodial wallet now tokenization system and you need to fund it and you can pre-fund it with ethereum transfer ethereum payment right or some other payment here's a 20 you might have an nft or oracle blockchain and to buy it you're paying with ethereum ethcoin or you're a 20 you know or you want to maintain an nft or oracle blockchain for confidentiality et cetera but then if somebody buys it you want to enable them to transfer it to a public chain like polygon which is an nvm chain for liquidity on the secondary market and so this allows you to do all of those things i think there's a bunch of other examples sometimes customers want to have a public proof of something private that happened on hyperledger fabric network which involves confidential data but then the actual proof the hacks of that transaction can be published because it's one like yes it doesn't disclose any data on public ethereum network for example so a couple things one is there's nothing to hack bridges are hacked frequently there is a time window where that asset does not exist on isa blockchain if you're using a bridge all right so whoever's operating a bridge it's more or less centralized all right it's under control of that entity and whether it's milliseconds or seconds or hours i don't know but you know we hear about bridges being hacked all the time this way it always exists either on one blockchain or another blockchain what is known between okay yeah okay sure yeah absolutely so let me wrap up here there's other things we've done as you know we do hear people that come to us from a ethereum solidity background and want to reuse those contracts so we actually provide the support to be able to run evm chain code on hyperledger fabric node with solidity chain codes and this is an example of a mixed idea where you can talk to Oracle blockchain and deploy solidity chain code but the next step was and this is what important because people want to connect wallets so we use the fab3 provider to actually publish the web3 apis ijs and apis apis and then be able to talk to you know hyperledger fabric peer running evm and this is now uh something that make a partner's customers taking advantage of in fact one of the companies will show an example liveplex sitting behind there using this so just a couple of chords on the centralized identity because we're beginning to see that as well that's an important part of web3 people are beginning to think about it from a variety of interesting use cases they had a call with some folks in japan because they're thinking about driver licenses potentially having the ad's associated with them some folks in us in one of the state governments where there is a lot of activity things being issued left and right by counties and they want to create a basically statewide account across all counties and state agencies backbone d ad registry so that everybody goes to the same registry for the ad's so we see a bunch of that there is a lot of value to actually provide identity back in the hands of the users right with wallets and so on an interoperability transparency and for organizations that manage identity it's really something that can save a lot of headaches compared to how they manage identity today so there's a whole bunch of use cases that w3c popularized you know if you're into the space probably familiar with them but what we've done is we've actually implemented a mechanism that allows us to implement gg registry on our blockchain on fabric with the front end servers that provides a standard verifier and issue of functions of colder and then the variety of integrations here was a wallet right so there's the studio wallet integrations as well as hyperlegia areas that can be used to integrate with that environment as well and this is the centralized identity thing is getting to be more popular from conversations that we're seeing so just very quickly a few examples here of actual enterprise customers we see a bunch of categories here we've worked in financial services retail supply chain manufacturing logistics web 3n kind of overlaid where tokens come in in some of those use cases right some fungible some non fungible but we're beginning to see you know that many applications that would have been implemented last couple years you know a couple years ago in a more custom manner and are gravitating towards using tokens as a standardized kind of framework for implementing right and so here's some examples of partners that implement ticketing application using our fungible tokens um we implemented a cbdc central bank digital currency sandbox it's actually running right now in a p o c in one of the larger countries in asia and this is using our blockchain our tokenization engine and then an application built on top for interbank transfers issue and so on so there's different roles for central bank and for the various financial institutions at the part of this environment and there's quite a bit of interest I think it might go into a more live pilot later this year we have a partner here live plaques sitting in the back of the room guys wave if you want to talk to them a little bit more they're providing a few marketplace solutions and this is essentially creating a web three framework with an infrastructure onboarding you know wallet management wallet custodial wallet generation and all of their governance on top of work on blockchain platform but also supporting other chains so you could do you know cross chain operations through that mechanism as well and they do a lot of work with you know immersive capabilities as well to actually integrate nft into all kinds of you know onboarding and education environments and fan engagement and so on another one also nft marketplace in europe being worked on around nfts as investments so this is basically taking kpi data fields that's coming from blockchain nodes or various partner companies creating through the nft generator factory is actually on nfts dynamically that he has relevant kpi data and turning them into alternate investments which is kind of interesting this was a product based nft so this is a company that does textiles but they don't do any works actually have materials and then everybody else does outsource manufacturing intermediate products fiber yarn fabric and then ultimately garments and so on such 7.5 they maintain constant body temperature and stuff you might have seen them in stores and they wanted to track they used to do all of the striking of inventory intermediate products and royalties that they collect using spreadsheets and we basically put them on a blockchain to provide real-time visibility instead of end of the month spreadsheets for this government grants program this is something interesting national science foundation issues a lot of grants and then those grants turn into sub-grants and sub-grants and they lose strikes they cannot follow more than one tier and then people have a hell of a time spending a lot of energy and resources and actually spending a lot of research time responding to all kind of data requests to provide reports on where to spend the money so we provided a demo for them it's currently in another stage of multi-tier grant management using fungible tokens with nfts for the grant letter awards but then the disbursements are down to fungible tokens and then a bunch of other things we've announced world of group recently transportation management basically freight transportation management the one in the middle is in india which is around basically a trade document so export import you know related documents and then on the right is the one I mentioned in europe which is this alternate investments nft marketplace right up i'll skip that this is just junior poor so just some concluding thoughts here i'll wrap up because we'll to give people a hard time as well to talk about their projects but I think we're going to see a lot more of absolute technologies permeating into enterprises there is values there if you can package it properly if you can position it and if you can provide it in an enterprise great framework right you know it's not going to go into things on public chains because there is always a lot of concern about security confidentiality scale performance all of those things throughput but in a permission blockchain it has the same capabilities they feel more comfortable so beginning to see you know technologies is just tokenization the centralized identity and so on actually getting some hearing and getting some adherence as long as they're being done in a kind of enterprise framework so I think there is a lot of potentials there I think we need to continue to provide in an enterprise great environment those capabilities as they continue to emerge understand what's happening in public chains but also then adopted into the permission chains all right we'll you know we're looking at a couple other hyperledger projects actually so we'll talk about tactile and firefly I just wanted to mention this obses C operations more contract hyperledger lab which is a governance project and I think this is going to be really interesting we're thinking about extending that beyond the chain code management so today when you deploy chain code you have to go through approval and commit process and that's what the current implementation focuses on we think it can go beyond and become a governance engine around who can join the chain who can create channels who can join the channel with voting and all of those things so that's going to be really interesting as we get to it in our roadmap looking at integration of hyperledger cocktail hyperledger firefly as well some of the web three stuff and there's a bunch of info there you know we have a lot of blogs published the resolution playbook for NFT marketplace you can scan that code we'll make the deck available as well we have the recording we have an e-book also that talks a lot about enterprise use cases so if you're interested to go into a bit depths of where this is being used in different industries take a look at that a bit link oracle underscore blockchain underscore e-book and then just you know if you want to play with it you can go get some free credits so there is I think an option to do $300 30 days pre-credit an Oracle cloud so you can easily provision and you can be within 30 minutes playing with this organization support all right I'll stop here and ask Peter to come up and while he's setting up I can take a few questions there was some work there was a project that I haven't heard much about lately so it's called but I think we need to check what happened it's been it's been at least six months since I've seen any updates from the hyperledger yeah from a hyperlogic community so I'm not sure if it's still going strong enough I think the whole industry on the non public change side is moving forward that one so we had one but I think we tried and it did not it didn't work right Wi-Fi password still did not work for you yeah and I was supposed to be sending like individual emails to everybody for thumbs up but since I did not have emails for everybody didn't get that so I tried to get a couple but for some reasons it didn't work oh um so zoom I uh let me see how can I do that you can connect to my zoom because you're not on my phone so what can you can you do your own start a zoom session and just record your session I can't yeah can you do it and then we'll just stitch the files okay join the same swimming as you used and then yeah but that's the problem is again join on the network it's going to get the wi-fi to work yeah transact is probably going to be end of life soon just a lot of people have a bit used to that being said wasm is permeating a number of different projects


Hi, this is your host of the party and today we have with us once again, Alexis Richardson CEO at we've works Alexis great to have you back on the show after a very long time great to be back. So up nil nice to see you again And today we are going to talk about flux graduation But before we talk about graduation itself what it means I will talk a bit about or tell our viewers a bit about What is flux get ops? And talk a bit about a stool in the modern quality word get ops is Automation automated IT powered by agents that run in your runtime environments based on Configuration plans that you supply separately and we say get ops because often we keep those config plans or config files and get There are other idempotent Immutable artifacts that people run Like container images signed images other artifacts as well as config files when we talk about get ops We really mean Taking all of those immutable things running them for you automatically in in your runtime So that you don't have to have a human being or a system programmatically touching the runtime When you're not supposed to so it can be separated from you for example We use get ops with Deutsche telecom To manage thousands of telco towers running 5g in kubernetes clusters lots per tower and wouldn't it be nice if you could update that software Make sure that it's running correctly Without having any insecure connection to the to the tower or sending an engineer and that's really what get ops lets you do Flux CD is a continuous deployment tool based on get ops Which is used to power kubernetes clusters application deployment So if you want to use Jenkins with kubernetes or github actions or git lab with kubernetes Just get flux and flux will glue them together and give you CD. So now you have CI CD for kubernetes The other thing that people are using this for is what people are calling now platform engineering So you've heard of paths. So you have infrastructure paths and then apps Where CI CD is about app deployment platform engineering is about platform deployment Creating your own custom environments Usually for enterprises like fidelity or Deutsche telecom to run applications and you can use flux with kubernetes and cappy to do this now You just specify what components you want to run in kubernetes and then you have your platform Obviously, there's a bit more to it than that That's the core idea and then finally the other thing you can do that's called flux is manage infrastructure So you can use the flux terraform integration or the flux polumi integration and Other integrations and that will let you coordinate between kubernetes applications and clusters and Infrastructure using terraform or polumi or crossplane or one of those tools So really what's emerging is an automated stack for IT based on cloud native and that is pretty cool I talk a bit about the progress within the Flux project and also you talk about that we're talking about platform engineering now So also talk about the evolution of the cultural aspect as well and how flux guitars fit into the picture So flux came into the picture Five or six years ago. We've works originally wrote some open-source technology And created a SAS product running on Amazon EC2 To make it easy to manage and monitor applications running in the cloud that were based on containers What we got right about that Was people do need management and they do need monitoring But it was very early times in the market and many people came to us and said we love your SAS tool We love the idea of deploying and managing applications this way, but right now. We're still trying to get our first cluster set up Can you help us with this and what we had done in building this SAS as we had built it on top of Kubernetes So our engineering team had greatly had a Kubernetes based stack for deploying a SAS in multiple locations on Amazon So we've had redundancy 24-7 we could do, you know continuous delivery of rollouts and patches all of this cool stuff securely With automation and people said well actually what we're really interested in is how do you're doing that? Because we want to do that too And we had written several tools some of which you've seen in the CNCF to do different parts of this And the one that did the deployment piece for deploying the apps and clusters was called flux And so we open-sourced this and started working on it as a collaborative project Across different use cases and customers and then later on we integrated it with things like, you know Kubernetes cappy Terraform and Pulumi as I mentioned a few minutes ago, but in the beginning it was really an app deployment tool and Then we applied to move it into the CNCF where it became Sandboxed and incubated then graduated yesterday, which is that, you know, a long journey The graduation process is very intensive with a lot of tests of security enterprise use Community usability so it's it's it's really battle-hardened at this point But I think from a social perspective what's interesting is the ecosystem side, you know You would never quite know how people are going to use these technologies and that's one for me That's one of the great benefits of open-source, especially in a foundation environment So Amazon, Microsoft and VMware to name three really big companies have all put flux at the heart of their businesses It's running EKS anywhere It's running the as your cloud for a Amazon Sorry for as your Kubernetes and arc and it's running Tanzu application platform That's incredible and then you hold the other people doing other integrations, too We've works have released something called we've get ups that integrates it with Kubernetes and adds features like Developer on ramps and GUIs and so on so everybody's used it in a different way and for me That's the most exciting part is watching this this explosion of innovation around CICD platform Who's using it? I mean, of course There's a large ecosystem community But when I say who's using is I want to know a bit about the specific use cases that either you are interested in and you're like Hey, this is very do is driving some of that option. So obviously I mentioned Amazon Microsoft Tanzu are using it at scale along with messes fear Ali Baba, then you have the enterprise users People like fidelity. I love the Deutsche telecom use case of rolling out 5g That was one of the first global rollouts of 5g Took much less time than people expected. It was super exciting. We even had an HA event during the process Which was unexpected get ops Which is what we call this whole technology pattern fixed the HA for us when a node went down the good ops process is just brought it back up again One other cool project Kubernetes at home Is using flux very very much and a great high scale People who've spoken at recent conferences if you look at get ops con and get upstays, you'll see all sorts of examples State farm using flux or terraform Volvo What are they called Luna way Casper is always talking at the conferences quite a few different people in terms of interesting use cases The ones I'm fondest of are the ones where there's high-scale involved people pushing the envelope So for example managing thousands of clusters or doing Very large numbers of deployments. These are the ones that are the most exciting Can you also talk about sometime what happens with a lot of project that come into existence? You know as you know Emerge from the work you folks are doing there You are solving a specific problem internally and that's why you created, you know a specific technology project But sometimes you know when you put it out and folks start using it for use cases I mean Linux is a very good example Kubernetes itself is a good example Well, we are not writing our toasters on Kubernetes yet, but maybe one day But so talk a bit about the flux itself where you have seen Yes, so one surprising use case that I like talk about because it's public and easy to read about is the United States Air Force so This is documented on the CNCF website people are using flux and Kubernetes to manage in-flight systems for jets in the in the Air Force And I believe that the role of flux is to synchronize The right software inside Kubernetes make sure the apps are up to date and Periodically when there's a connection obviously in a plane the connection is intermittent You get the software will correct itself and load you version So it's great to feel that a tool like flux is part of helping for example The Ukrainians in their current situation because you know It's difficult for us in tech to talk about military applications Many people feel uncomfortable talking about that But I think you know the force of the military can be part of defense as well as some of its other uses too So I think that's great What else can I say Kubernetes at home is another interesting and surprising example Telco Taz is another one we certainly didn't expect now. Let's talk about graduation What does it mean for the project for the community and for the larger ecosystem? So graduation is like getting a PhD they can't take it away from you once you got it. So that's great I think it's it's become so intense now that it is like getting a PhD in being a good project This means that flux is now among the elite of proven Security audited Verified projects use that as efficient scale scope and duration Longevity that it's safe to consider them here to stay. I think that's the key point about graduation It's also a way of measuring health in terms of the production processes the sponsorship processes the community processes The quality of the code the quality of the processes all of these things are so so important to to the maintainers of flux I just can't tell you how important it is to them that this is seen in that way And so for them it's a validation of years and years and years of work So I want to say thank you to them right now. Thank you Let's talk a bit about of course, this is an open source project people are involved But what are things that are in the pipeline that that you folks are working on that? Hey, these are the either problem that you're trying to solve or this is the improvement that you want to make So the big thing with GitOps is how do you scale it beyond one cluster one repo? And there's lots of different ways of doing that. So we've seen early tools like flagger, which is about progressive rollouts We're seeing things like policy policy as code be integrated with GitOps Flux has a particularly cool feature using caverno for multi tenancy or you can see look at the OCI support for flux Now that we have OCI as a standard image format that gives us a scalable way to distribute secure images through CDNs That's just incredibly powerful and you then you have fleet scale management as well. So all of these things packaging Pipelining policy ill begin with PE apart from fleets are all ways of scaling GitOps that I think of the next phase What else can I say the extension beyond Kubernetes is fundamental You know, GitOps has proven to be the operating model for deployment and management of Kubernetes stacks People are agreeing on this now tell me we do platform engineering. What about all of those? non-Kubernetes based applications VMs databases machines On-prem hybrid legacy services all of this stuff What we're finding is if you integrate Kubernetes and flux with other orchestration tools like crossplane Terraform Pulumi telco tools, you can have a cross-data center Integration for GitOps for everything. So that's really really great. We love that Those are all new things at Weaveworks The way that you should look at this is through the lens of weave GitOps We've GitOps is an open-source developer platform tool Based on flux and Kubernetes which gives you a really easy developer studying experience and on-ramp Get rid of all kinds of application development pain points gives you a nice GUI is incredibly extensible and from for a business point of view We extend it by adding commercial extensions. So you pay for those. It's very similar to using Grafana You can have a great time using free Grafana or you can pay and have extra Grafana plugins Alexis once again thank you so much for taking time out today and of course talk about flux GitOps and Some of the exciting use cases. Thanks for all those, you know gradient sites and as is all I would love to sit down and chat with you again Thank you. Thank you so up nil so nice to see you again


Planet is all about empowering sustainable business and we do that through consulting, connecting and co-working. He combines building a profitable business with having positive impact on the world. Helping companies are serious about contributing to sustainable development goals. Because the word impossible doesn't exist in his mind. Case is inspiring with his energy. And he had the courage to make the decision not to go for the usual pathway but actually to go against the stream and start his own initiative and company and he's really courageous in that sense. You can bring the energy across and you can make people believe what you believe then they eventually join your idea or concept or product. So he's really connecting all the learning and the ideas that people have with the initiatives into a coherent system and I believe that's really the strength of this initiative. We connect people and make them more responsible. Case is really a responsible entrepreneur because he focuses his activities not just on collaboration, not just of making companies successful but making them collaborating and successful towards the sustainable development goals. And we want to bring those goals on a local level so people get acquainted with it, we create awareness and eventually awareness should lead to commitment towards those goals. Planet is not just focusing on helping one company or the other company but connecting them towards reaching these sustainable development goals. Believe in collaboration instead of competition. Because it's the first community I know that is focusing specifically on the sustainability goals. It's collecting this knowledge and sharing this knowledge is key to reaching these goals together. And eventually by helping the businesses create more sustainable and circular products eventually that leads to a better society, to better clients. That's why I think he is a winner already.


Hello, my name is Marek and in the next 20 minutes or so, I will show you the main ideas behind our tool symbiotic and hopefully I will also show you how you can use it. Nowadays, the main method that we use to find bugs in software is to use testing. But you surely know that writing tests by hand is tedious work and usually it doesn't work that well, so we would like to generate the test automatically. In the first talk today, we saw that we can use for example fuzzing to generate tests, but one other method that you have probably already seen and that I would like to show you now, we kept now, is to use symbolic execution. Symbolic execution is in principle quite simple method where you instead of the inputs, of the concrete inputs, you use symbols. Symbols represent arbitrary value that the variable or the input variable can have. And with these symbols, you just execute the program. And as the program runs, the instructions in the numbers generate some expressions over these input symbols and the interesting part comes when you run into branching in the program where if you would have numbers, then you would know which branch you should take. But when you have the symbols that represent a set of numbers, then it is possible that you can go both ways. And if it is really possible, then in this case you need to work the execution and follow both paths. This way you can explore all paths in the program, of course if there is finally many of them, and generate test cases for any path in the program. Better to show on an example, there is some function that takes three inputs. The function where it does nothing is just to demonstrate the symbol execution. At the end it checks where the sum of the inputs is equal to zero. And so the symbol execution, it will assign symbols to the input variables, let's say alpha, beta and gamma, and starts the execution. And right at the first instruction, which is the if statement, then a is alpha, so it tries to find out where alpha can be less or zero or greater than zero, just the one branch that it can go and this the other branch that it can go. And since alpha is an arbitrary value, it is possible to go both ways in the symbol execution of branch. And this way it proceeds further and further, and for example here it collects the constraints that it finds on the branching, so for example here it tries to execute this statement where a is alpha, b is beta, and c is two because it was assigned to zero. So it tries to check where alpha plus beta plus two is less or equal to zero, given that alpha is greater than zero, beta is greater or equal to zero. And it finds out that there is only one way it can go, because one of the branches is invisible in this case. And this way we can try to explore every path in the program and if there is fine too many of them and we have enough resources, enough time, we actually succeed. What about integer overclock? Overclock in the variable is undefined, but the overclock on unsigned int is possible. Okay, it depends on the theory that you use to decide these constraints. The point is that if you use the function and it has unsigned int numbers, then basically they can overclock. Yes, what is the theory that you use to decide these constraints? It's usually you use the bitvector theory, which means that you really model the numbers as bitvectors. We model numbers as natural numbers in mathematics. Sorry? So you model numbers as... No, no, we model numbers as bitvectors. It's really the fixed size bitvectors that you find in computers. In this case, you find the overflows. If you model them as natural numbers, then you do not find the overflows. And of course, then you can get infinite paths, even in the bitvector aspect. You can find overflows this way. It just depends on what you want to find them. Okay. Okay, and this way we can basically partition the inputs into sets where each input from the given set will drive the program a particular path in the... execute the particular path in the program. One of the tools that we can use to perform simple execution is called Cree, which is an open source tool that runs over LLM bitcode. And since it runs over the LLM bitcode, then we first need to take sources, compile them into LLM, then we can put them to Cree. So here comes the first just short demo. I have the function from the slides. And the error function is defined as assertion. And what I need to do to use Cree is to annotate the program to say which variables are symbolic. I do that with this CreeMakeSymbolic function, and then I can compile it and run it. So I can use Clank to compile it into LLM. Maybe get some warnings. I can run Cree on the generated bitcode. It will show me that it found three paths in the program out of six that valid the assertion. And this is how we can use Cree, and we actually use Cree in our tool too, but we use it after some transformations of the program. Where's the problem with this approach? First, you need to annotate the program. And second, the symbolic execution is computationally very demanding. In the program, you can have many paths, a large amount of paths. You can have infinite number of paths. And there are some techniques that we can elevate this program a bit. And what we do is that we try to pre-process the code somehow before passing to Cree. And we try to pre-process it such that the symbolic execution is faster. So one of the quite obvious things that we use is to use code optimizations. That's the first step, but nothing surprising. The next step that we do is that we use program slicing. Program slicing is technique that can somehow remove from the program the parts or the instructions that are not in our interest. How we do that? We need to compute dependencies between instructions where the instruction A depends on instruction B if A consumes some values that B generates. Or when B controls the execution of the instruction A. And once we compute the dependencies between instructions, we can slice the program, which means basically that we keep only the instructions that can somehow influence the values at their error location and the reachability of the error location. And yes, just a small example. This is some short code where when we have some cycle that zeroes the buffer and if you are interested in this assertion that checks that there is no auto bound error, then we can remove completely the buffer and when we have the dependencies in the code computed, we can do it automatically. Okay, we removed basically one or two instructions, but the main point is that, for example, this instruction has access to memory and it is in cycle, so it can have quite good effect to remove this instruction. And of course, when you have bigger program, you can remove more. Okay, so this is program slicing and it works well when you have the assertions in the code and if you are interested in the assertions. But we try to look also for other types of errors like dangling pointer-deference and this. And there is a problem that in this case, we do not know the targets of the slicing, so-called slicing parts here. Because we could take every pointer-deference and set it as the slicing criteria, but then the slicing wouldn't help much because we wouldn't slice anything away. So what we do is that we run some fast static analysis that tries to find possible errors in the program and that just looks at the program, processes it, and divides the instructions into two types. One type is the safe instructions that cannot lead to the error that we are interested in and the other that may possibly exhibit the error. This is our approximation, so it is possible that the instructions that just may exhibit the error are actually safe during runtime. But we do not know, so we take them as potentially unsafe and we set them as slicing criteria. And now we know which instructions are interesting for us with respect to the error we are looking for and can slice with respect to these instructions. After these three steps, we can again perform code optimizations because the program slicing and the first code optimizations mainly the program slicing can enable some more aggressive optimizations of the code and the code may change again. Okay, and apart from this transformation that I just mentioned, the symbiotic automatically marks the memory symbolic so we do not need to manually annotate the program with Climax Symbolic and replace these undefined functions with some symbolic steps. That's just because we do not want the user to somehow change the program before passing the symbiotic. What are our limits now is that we do not support C++ mainly because of exceptions and we do not run on parallel programs yet. And of course there are problems with scaling because the program transformations cannot solve the problem of the scalability of symbolic execution and it can just help in some cases. So short demo. Okay, just to see that this is the same code as before, just we omitted the annotation with Climax Symbolic. So in this case, the default mode of symbiotic is to take uninsured variables as symbolic. It's a bit problematic because in this case it's actually undefined behavior, but the user usually wants something like this. Okay, so we can have a symbiotic on this program. The default mode is to look for assertion violations and we get some messages that start slicing, blah, blah, blah. And it found an error here in men with these values of variables. Okay, that's the same example as before. Or I can show you this example. There's some singly linked lists. It creates two elements in the list. There's some assertion. Okay, and we can try to run symbiotic on this code and it says that no error found, which means that the assertion is not violated. That was the default mode of symbiotic that looks for assertions, but if you want to look for memory safety errors, we need to sell it to symbiotic. So we sell it to look for property memsafety. In this case, when you run it, it finds that there is memory leak in the program. And the memory leak is that we haven't freed the middle element, so we can fill it in, try to write once more, and now it works. So no error there. The last example, I have here the code of valent, which is an inter-processed communication library. I guess you know it. And just out of the file, I filled in this main, where there is some structure that represents a circle buffer. And this structure, it has some data at the tail. And there is some function real buffer puts that just copies data into the buffer. So if we try to create a buffer, copy this hello world string into the buffer and assert that the buffer size is the same as the string, we would explain that that's true. So we can run symbiotic on that. And it repels an error because of compilation that it cannot find the FFI header file, which is quite usual problem with compilation. So we can fix it, I hope. I have it somewhere. So I just will put it to work now. Okay, and we saw that it works now. It optimized the code, sized it in some time. And it found that the assertion is violated. What's the problem? The problem is that the buffer was initialized. So the model that symbiotic found for this, or this case that it found, was that the buffer was initialized to zeros.  So okay, we can fix it. Okay, let's see where it works now. Yes, now it works. And just to show how it would look without... without slicing and optimizations. So now it took like seven seconds. Alright, now without slicing and optimizations, well first we see that much more parts of the code needs to be somehow modelled by the symbiotic. And now it takes like 18 seconds. It's not that big difference, but on bigger programs it can be more significant. Okay, so that's basically how you can use symbiotic. So in the future we would like to somehow solve the issues with scalability, which in some cases there can be also problem in slicing. So we would like to employ faster analysis to slice the code faster. There's the inherent problem of symbolic execution, which can be somehow fought by, for example, abstraction or we could instead of symbolic execution use some different tool, something like claims static analyzer, which actually cannot be used for this purpose, but something like that, which is less precise, so it can give some errors that are not real, but it is faster and is able to run on bigger programs. Then we would like to model the mainly the post-ex environment better. I mean it works somehow now, but it's not perfect. And of course we would like to fill in C++ and threads because once symbiotic supports C++ then we can run symbiotic on symbiotic is written in C++ and to conclude, just symbiotic is a tool for finding or faster finding bugs in C programs and it does it by combining static analysis with program sizing and symbolic execution. After this now it runs only on sequential C code and still has some scalability issues. That is all from me and thank you for your attention. Of course I will have to answer your questions. You, I mean the condition is like calling a library function and you don't really want to add the whole library to the analysis, right? Can you somehow define what's possible there? Yes, a good question. I actually saw that here, I think, yes. This is called, it's all the same, like a black box. Yeah, if you don't anyhow limit the output of this thing then everything is possible basically and you can find some kind of bugs which don't really exist and if you look at the function it's written that it can return like 0 or minus 1 only. For example, something like that but it can return like in Max, for example. Yes, you can do that and it is quite easy to integrate it can be integrated into symbolic quite easily because it just, you can just add a model in the C program language or in the element code it somehow tells how the function behaves. So instead of the whole function you would just write short stuff and then there are some, like, assume that if this if the input is such and such then the output is going to be such and such and assume that this cannot happen and so on. So I think this model of function and adding it into appropriate directory symbolic would look it up and try to link it to the program once it finds it is in the program. You can do that at present we do not do that we do, as you said, we assume that anything is possible. Can you actually scale horizontally by adding more servers? Can you do it like on Amazon with, for instance, RAM on your servers and then we will analyze the whole new term? In principle yes because we can, during the slicing we can generate different slices that represent different parts of the program and then you can distribute the work among computers but we don't do that. But yes, in principle yes. So the algorithm allows that? Yes. Okay, I'm out of time so thank you for your attention.


The paper proposes a deep learning framework called GTLSTM for predicting various air pollutants in urban areas. The model combines graph convolutional networks and long short-term memory networks based on a strategy with temporal sliding to capture spatial and temporal dependencies of different types of air pollution. Experiments show that the proposed GTLSTM model can achieve higher accuracy and stability than state-of-the-art baselines, providing decision support capabilities for mitigating air quality issues. This article was authored by Wenjing Mao, Lamine Zhao, Wei Lin Wang, and others.