Arithmetic operations defined in Julia do not modify their arguments. However, in many situations, a variable represents an ac-cumulator that can be modified in-place to contain the result, e.g., when summing the elements of an array. Moreover, for types that support mutation, mutating the value may have a significant performance benefit over creating a new instance. This paper presents an interface that allows algorithms to exploit mutability in arithmetic operations in a generic manner.
Julia 中定义的算术运算不会修改参数。然而,在许多情况下,变量代表一个累加器,可以就地修改累加器以包含结果,例如,在求数组元素的总和时。此外,对于支持突变的类型,与创建新实例相比,突变值可能会带来显著的性能优势。本文提出了一种接口,允许算法以通用方式利用算术运算中的可变性。
{"title":"MutableArithmetics: An API for mutable operations","authors":"Benoît Legat","doi":"10.21105/jcon.00093","DOIUrl":"https://doi.org/10.21105/jcon.00093","url":null,"abstract":"Arithmetic operations defined in Julia do not modify their arguments. However, in many situations, a variable represents an ac-cumulator that can be modified in-place to contain the result, e.g., when summing the elements of an array. Moreover, for types that support mutation, mutating the value may have a significant performance benefit over creating a new instance. This paper presents an interface that allows algorithms to exploit mutability in arithmetic operations in a generic manner.","PeriodicalId":443465,"journal":{"name":"JuliaCon Proceedings","volume":" 12","pages":""},"PeriodicalIF":0.0,"publicationDate":"2024-04-18","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"140688687","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
G. Zagatti, Samuel Isaacson, Christopher Rackauckas, Vasily Ilin, See-Kiong Ng, Stéphane Bressan
{"title":"Extending JumpProcesses.jl for fast point process simulation with time-varying intensities","authors":"G. Zagatti, Samuel Isaacson, Christopher Rackauckas, Vasily Ilin, See-Kiong Ng, Stéphane Bressan","doi":"10.21105/jcon.00133","DOIUrl":"https://doi.org/10.21105/jcon.00133","url":null,"abstract":"","PeriodicalId":443465,"journal":{"name":"JuliaCon Proceedings","volume":"11 17","pages":""},"PeriodicalIF":0.0,"publicationDate":"2024-04-04","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"140745581","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Computing the range of a function is needed in several application domains. During the past decades, several algorithms to compute or approximate the range have been developed, each with its own merits and limitations. Motivated by this, we introduce RangeEnclosures.jl , a unified framework to bound the range of univariate and multivariate functions. In addition to its own algorithms, the package allows to easily integrate third-party algorithms, offering a unified interface that can be used across different domains and allows to easily benchmark different approaches.
{"title":"RangeEnclosures.jl: A framework to bound function ranges","authors":"Luca Ferranti, M. Forets, Christian Schilling","doi":"10.21105/jcon.00122","DOIUrl":"https://doi.org/10.21105/jcon.00122","url":null,"abstract":"Computing the range of a function is needed in several application domains. During the past decades, several algorithms to compute or approximate the range have been developed, each with its own merits and limitations. Motivated by this, we introduce RangeEnclosures.jl , a unified framework to bound the range of univariate and multivariate functions. In addition to its own algorithms, the package allows to easily integrate third-party algorithms, offering a unified interface that can be used across different domains and allows to easily benchmark different approaches.","PeriodicalId":443465,"journal":{"name":"JuliaCon Proceedings","volume":"83 2","pages":""},"PeriodicalIF":0.0,"publicationDate":"2024-01-14","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"139530502","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Deconvolution is a versatile method to enhance the quality of signals measured with systems which can be expressed mathematically as a convolution of a system’s response function with a signal. In this paper, we present DeconvOptim.jl , a flexible toolbox written in Julia to deconvolve one or multiple multi-dimensional signals which have been degraded by a multi-dimensional signal response function. DeconvOptim.jl works both on CPUs and GPUs and utilizes recent advancements in Julias automatic differentiation ecosystem. In this work we demonstrate that DeconvOptim.jl surpasses the performance of existing open source libraries clearly and is applicable to one dimensional time series datasets but also to multi-dimensional microscopical imaging datasets.
{"title":"DeconvOptim.jl - Signal Deconvolution with Julia","authors":"Felix Wechsler, Rainer Heintzmann","doi":"10.21105/jcon.00099","DOIUrl":"https://doi.org/10.21105/jcon.00099","url":null,"abstract":"Deconvolution is a versatile method to enhance the quality of signals measured with systems which can be expressed mathematically as a convolution of a system’s response function with a signal. In this paper, we present DeconvOptim.jl , a flexible toolbox written in Julia to deconvolve one or multiple multi-dimensional signals which have been degraded by a multi-dimensional signal response function. DeconvOptim.jl works both on CPUs and GPUs and utilizes recent advancements in Julias automatic differentiation ecosystem. In this work we demonstrate that DeconvOptim.jl surpasses the performance of existing open source libraries clearly and is applicable to one dimensional time series datasets but also to multi-dimensional microscopical imaging datasets.","PeriodicalId":443465,"journal":{"name":"JuliaCon Proceedings","volume":"40 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2023-09-04","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121467729","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
J. M. P. Zerpa, Marcelo Forets, Daniel Freire Caporale
Set-Based Solid Dynamics. When uncertainty is present, the initial displacements x(0) and the initial velocities x′(0) belong to the feasible sets X0 and V0, respectively. In [6] a novel approach for time integration of solid dynamics equations based on set-based techniques was presented. The approach allows to compute, in a single integration, the solution sets (or flowpipes) that include all exact trajectories under uncertainties in the initial conditions and applied loads. Such solution sets cannot be obtained using standard numerical integrators, since they are designed to propagate initial points, not sets.
{"title":"Computing Reachable Sets of Semi-Discrete Solid Dynamics Equations with ReachabilityAnalysis.jl","authors":"J. M. P. Zerpa, Marcelo Forets, Daniel Freire Caporale","doi":"10.21105/jcon.00095","DOIUrl":"https://doi.org/10.21105/jcon.00095","url":null,"abstract":"Set-Based Solid Dynamics. When uncertainty is present, the initial displacements x(0) and the initial velocities x′(0) belong to the feasible sets X0 and V0, respectively. In [6] a novel approach for time integration of solid dynamics equations based on set-based techniques was presented. The approach allows to compute, in a single integration, the solution sets (or flowpipes) that include all exact trajectories under uncertainties in the initial conditions and applied loads. Such solution sets cannot be obtained using standard numerical integrators, since they are designed to propagate initial points, not sets.","PeriodicalId":443465,"journal":{"name":"JuliaCon Proceedings","volume":"85 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-06-17","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128599692","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Catwalk.jl is a JIT compiler implemented as a Julia library that generates optimized dispatch code based on statistical profiling. Unlike typical JIT compilers it requires some integration work from its users, allowing it to completely eliminate the need of complex deoptimization logic. It is able to compile new type- stabilized routes or reorder existing ones if the distribution of dispatched types changes during runtime and the customizable cost model predicts significant speedup compared to the best version that was previously compiled. Catwalk.jl was designed for situations when both composability and runtime polymorphism is required, and some runtime com- pilation overhead is acceptable for speeding up dynamic dispatch in hot loops.
{"title":"Catwalk.jl: An adaptive dispatch optimizer","authors":"K. Schäffer","doi":"10.21105/jcon.00098","DOIUrl":"https://doi.org/10.21105/jcon.00098","url":null,"abstract":"Catwalk.jl is a JIT compiler implemented as a Julia library that generates optimized dispatch code based on statistical profiling. Unlike typical JIT compilers it requires some integration work from its users, allowing it to completely eliminate the need of complex deoptimization logic. It is able to compile new type- stabilized routes or reorder existing ones if the distribution of dispatched types changes during runtime and the customizable cost model predicts significant speedup compared to the best version that was previously compiled. Catwalk.jl was designed for situations when both composability and runtime polymorphism is required, and some runtime com- pilation overhead is acceptable for speeding up dynamic dispatch in hot loops.","PeriodicalId":443465,"journal":{"name":"JuliaCon Proceedings","volume":"24 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-04-21","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130175294","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
ReactiveMP.jl is a native Julia implementation of reactive message passing-based Bayesian inference in probabilistic graphical models with Factor Graphs. The package does Constrained Bethe Free Energy minimisation and supports both exact and variational Bayesian inference, provides a convenient syntax for model specification and allows for extra factorisation and form constraints specification of the variational family of distributions. In addition, ReactiveMP.jl includes a large range of standard probabilistic models and can easily be extended to custom novel nodes and message update rules. In contrast to non-reactive (imperatively coded) Bayesian inference packages, ReactiveMP.jl scales easily to support inference on a standard laptop for large conjugate models with tens of thousands of variables and millions of nodes.
{"title":"ReactiveMP.jl: A Julia Package for Reactive Message Passing-based Bayesian Inference","authors":"Dmitry V. Bagaev, B. Vries","doi":"10.21105/jcon.00091","DOIUrl":"https://doi.org/10.21105/jcon.00091","url":null,"abstract":"ReactiveMP.jl is a native Julia implementation of reactive message passing-based Bayesian inference in probabilistic graphical models with Factor Graphs. The package does Constrained Bethe Free Energy minimisation and supports both exact and variational Bayesian inference, provides a convenient syntax for model specification and allows for extra factorisation and form constraints specification of the variational family of distributions. In addition, ReactiveMP.jl includes a large range of standard probabilistic models and can easily be extended to custom novel nodes and message update rules. In contrast to non-reactive (imperatively coded) Bayesian inference packages, ReactiveMP.jl scales easily to support inference on a standard laptop for large conjugate models with tens of thousands of variables and millions of nodes.","PeriodicalId":443465,"journal":{"name":"JuliaCon Proceedings","volume":"13 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-01-29","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123072949","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Combinatorial interaction testing is an automated way to generate test cases for unit tests. It’s designed to be a best guess at the fewest unit tests that will give good decision coverage. This article discusses when to use this technique, offers a general approach to using automated test generation for different software testing applications, and shows how to apply it with the UnitTestDesign package in the Julia testing ecosystem.
{"title":"UnitTestDesign.jl: Combinatorial design for unit tests","authors":"A. Dolgert, Joseph Wagner","doi":"10.21105/jcon.00078","DOIUrl":"https://doi.org/10.21105/jcon.00078","url":null,"abstract":"Combinatorial interaction testing is an automated way to generate test cases for unit tests. It’s designed to be a best guess at the fewest unit tests that will give good decision coverage. This article discusses when to use this technique, offers a general approach to using automated test generation for different software testing applications, and shows how to apply it with the UnitTestDesign package in the Julia testing ecosystem.","PeriodicalId":443465,"journal":{"name":"JuliaCon Proceedings","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2021-12-05","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129790840","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
This paper introduces a modeling and simulation framework, Causal.jl, that enables fast and effective system simulations and online and offline data analyzes. Causal.jl adopts a causal modeling approach in which a model consists of components that process data and the connections that transfer the data flowing between these components. The framework developed makes it possible to simulate discrete time or continuous time, static or dynamical systems. In particular, it is possible to simulate dynamical systems modeled by various types of equations such as the ordinary, random ordinary, stochastic, delayed differential, differentialalgebraic equations, and discrete-time difference equations. During the simulation, the data flowing through the connections can be processed online and offline, and specialized analyzes can be performed. These analyzes can also be enriched with plugins that can be easily defined using the standard Julia library or various Julia packages. The simulation is performed by evolving the model components between sampling time intervals individually and in parallel. The independent evolution of the components allows the simulation of the models consisting of the components represented by different mathematical equations, while the parallel evolution of components increases the simulation performance.
{"title":"Causal.jl:A Modeling and Simulation Framework for Causal Models","authors":"Zekeriya Sarı, Serkan Günel","doi":"10.21105/jcon.00071","DOIUrl":"https://doi.org/10.21105/jcon.00071","url":null,"abstract":"This paper introduces a modeling and simulation framework, Causal.jl, that enables fast and effective system simulations and online and offline data analyzes. Causal.jl adopts a causal modeling approach in which a model consists of components that process data and the connections that transfer the data flowing between these components. The framework developed makes it possible to simulate discrete time or continuous time, static or dynamical systems. In particular, it is possible to simulate dynamical systems modeled by various types of equations such as the ordinary, random ordinary, stochastic, delayed differential, differentialalgebraic equations, and discrete-time difference equations. During the simulation, the data flowing through the connections can be processed online and offline, and specialized analyzes can be performed. These analyzes can also be enriched with plugins that can be easily defined using the standard Julia library or various Julia packages. The simulation is performed by evolving the model components between sampling time intervals individually and in parallel. The independent evolution of the components allows the simulation of the models consisting of the components represented by different mathematical equations, while the parallel evolution of components increases the simulation performance.","PeriodicalId":443465,"journal":{"name":"JuliaCon Proceedings","volume":"6 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2021-12-05","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129379474","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
MPI.jl is a Julia package for using the Message Passing Interface (MPI), a standardized and widely-supported communication interface for distributed computing, with multiple open source and proprietary implementations. It roughly follows the C MPI interface, with some additional conveniences afforded by the Julia language such as automatic handling of buffer lengths and datatypes.
{"title":"MPI.jl: Julia bindings for the Message Passing Interface","authors":"Simon Byrne, L. Wilcox, Valentin Churavy","doi":"10.21105/JCON.00068","DOIUrl":"https://doi.org/10.21105/JCON.00068","url":null,"abstract":"MPI.jl is a Julia package for using the Message Passing Interface (MPI), a standardized and widely-supported communication interface for distributed computing, with multiple open source and proprietary implementations. It roughly follows the C MPI interface, with some additional conveniences afforded by the Julia language such as automatic handling of buffer lengths and datatypes.","PeriodicalId":443465,"journal":{"name":"JuliaCon Proceedings","volume":"21 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2021-07-08","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127410351","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}