Hand, Steven, Roy, Amitabha · OpenGrey (Institut de l'Information Scientifique et Technique) · 2011
More than a decade after becoming a topic of intense research there is no transactional memory hardware nor any examples of software transactional memory use outside the research community. Using software transactional memory in large pieces of software needs copious source code annotations and often means that standard compilers and debuggers can no longer be used. At the same time, overheads associated with software transactional memory fail to motivate programmers to expend the needed effort to use software transactional memory. The only way around the overheads in the case of general unmanaged code is the anticipated availability of hardware support. On the other hand, architects are unwilling to devote power and area budgets in mainstream microprocessors to hardware transactional memory, pointing to transactional memory being a 'niche' programming construct. A deadlock has thus ensued that is blocking transactional memory use and experimentation in the mainstream. This dissertation covers the design and construction of a software transactional memory runtime system called SLE_x86 that can potentially break this deadlock by decoupling transactional memory from programs using it. Unlike most other STM designs, the core design principle is transparency rather than performance. SLE_x86 operates at the level of x86 machine code, thereby becoming immediately applicable to binaries for the popular x86 architecture. The only requirement is that the binary synchronise using known locking constructs or calls such as those in Pthreads or OpenMPlibraries. SLE_x86 provides speculative lock elision (SLE) entirely in software, executing critical sections in the binary using transactional memory. Optionally, the critical sections can also be executed without using transactions by acquiring the protecting lock. The dissertation makes a careful analysis of the impact on performance due to the demands of the x86 memory consistency model and the need to transparently instrument x86 machine code. It shows that both of these problems can be overcome to reach a reasonable level of performance, where transparent software transactional memory can perform better than a lock. SLE_x86 can ensure that programs are ready for transactional memory in any form, without being explicitly written for it.
Cited by 0
Samuel A. Alex · 2013
Cited by 0
Rahmdel, Mohammad · TU/e Research Portal
Cited by 0
Alexander, Samuel · arXiv (Cornell University) · 2013
We construct a machine that knows its own code, at the price of not knowing its own factivity.
Cited by 0Open access
Allen Leung, Lal George · ACM SIGPLAN Notices · 1999
Static Single Assignment (SSA) is an effective intermediate representation in optimizing compilers. However, traditional SSA form and optimizations are not applicable to programs represented as native machine instructions because the use of dedicated registers imposed by calling conventions, the runtime system, and target architecture must be made explicit. We present a simple scheme for converting between programs in machine code and in SSA, such that references to dedicated physical registers in machine code are preserved. Our scheme ignores all output- and anti-dependences imposed by physical registers while a program is in SSA form, but inserts compensation code during machine code reconstruction if any naming requirements have been violated. By resolving all mismatches between the two representations in separate phases, we are able to utilize existing SSA algorithms unaltered to perform machine code optimizations.
Cited by 6
Auladell i Parellada, Pol · QRU Quaderns de Recerca en Urbanisme · 2020
.
Cited by 0Open access
Hung Phan, Ali Jannesari · 2024
Machine Translation (MT) has numerous applications in Software Engineering (SE). Recently, it has been employed not only for programming language translation but also as an oracle for deriving information for various research problems in SE. In this application branch, MT’s impact has been assessed through metrics measuring the accuracy of these problems rather than traditional translation evaluation metrics. For code search, a recent work, ASTTrans, introduced an MT-based model for extracting relevant non-terminal nodes from the Abstract Syntax Tree (AST) of an implementation based on natural language descriptions. While ASTTrans demonstrated the effectiveness of MT in enhancing code search on small datasets with low embedding dimensions, it struggled to improve the accuracy of code search on the standard benchmark CodeSearchNet.
Cited by 6Open access
Chalakorn Chitsaart, Suchada Rianmora, Mann Rattana-Areeyagon et al. · Zenodo (CERN European Organization for Nuclear Research) · 2014
G-code is the main factor in computer numerical control (CNC) machine for controlling the toolpaths and generating the profile of the object’s features. For obtaining high surface accuracy of the surface finish, non-stop operation is required for CNC machine. Recently, to design a new product, the strategy that concerns about a change that has low impact on business and does not consume lot of resources has been introduced. Cost and time for designing minor changes can be reduced since the traditional geometric details of the existing models are applied. In order to support this strategy as the alternative channel for machining operation, this research proposes the automatic generating codes for CNC milling operation. Using this technique can assist the manufacturer to easily change the size and the geometric shape of the product during the operation where the time spent for setting up or processing the machine are reduced. The algorithm implemented on MATLAB platform is developed by analyzing and evaluating the geometric information of the part. Codes are created rapidly to control the operations of the machine. Comparing to the codes obtained from CAM, this developed algorithm can shortly generate and simulate the cutting profile of the part.
Cited by 0Open access
Kailash Alle · Zenodo (CERN European Organization for Nuclear Research) · 2023
Due to its effectiveness in resolving issues like speech recognition and picture analysis, artificial intelligence (AI) systems based on Deep Neural Networks (DNN) or Deep Learning (DL) have gained popularity. High Performance Computing (HPC) has been a major factor in the development of AI, and training a DNN is a computationally demanding process. Cloud and HPC infrastructure have come together thanks to virtualization and container technology. The challenge of installing and optimizing AI training workloads is increased by these heterogeneous hardware infrastructures. Target-specific libraries, graph compilers, and better data mobility or input/output can all be used to optimize AI training deployments in cloud or HPC environments. By producing code that is optimized for a target hardware or backend, graph compilers seek to maximize the execution of a DNN graph. The MODAK tool is designed to optimize the deployment of applications on software-defined infrastructures as part of the SODALITE project, which is a Horizon 2020 initiative. MODAK maps ideal application parameters to a target infrastructure and creates an optimized container using performance modeling and data scientist input. This paper reviews container technologies and graph compilers for artificial intelligence, and introduces MODAK. We demonstrate how Singularity containers and graph compilers can be used to optimize AI training deployments. Custom-built, optimized containers perform better than the official DockerHub images, according to evaluation using MNIST-CNN and ResNet50 training workloads. Additionally, we discovered that the target hardware and neural network complexity affect graph compiler performance.
Cited by 0Open access
Chalakorn Chitsaart, Suchada Rianmora, Mann Rattana-Areeyagon et al. · Zenodo (CERN European Organization for Nuclear Research) · 2014
G-code is the main factor in computer numerical control (CNC) machine for controlling the toolpaths and generating the profile of the object’s features. For obtaining high surface accuracy of the surface finish, non-stop operation is required for CNC machine. Recently, to design a new product, the strategy that concerns about a change that has low impact on business and does not consume lot of resources has been introduced. Cost and time for designing minor changes can be reduced since the traditional geometric details of the existing models are applied. In order to support this strategy as the alternative channel for machining operation, this research proposes the automatic generating codes for CNC milling operation. Using this technique can assist the manufacturer to easily change the size and the geometric shape of the product during the operation where the time spent for setting up or processing the machine are reduced. The algorithm implemented on MATLAB platform is developed by analyzing and evaluating the geometric information of the part. Codes are created rapidly to control the operations of the machine. Comparing to the codes obtained from CAM, this developed algorithm can shortly generate and simulate the cutting profile of the part.
Cited by 6Open access
Peter Naur · BIT Numerical Mathematics · 1964
Cited by 0
Joseph M. Newcomer · 1975
Abstract : There has been extensive research into the automatic generation of compilers. Much of this has concentrated on the issues of syntax and semantics, while little has been done on the problems of code generation. This thesis represents one approach to the latter problem. A model of a compiler-compiler is presented, with the research focussing on the construction of one component of the compiler, that module which determines the possible code sequences which realize a given program. The input to this component is a set of code sequences which are possible realizations of each language construct. This thesis concentrates on the automatic generation of these code sequences from a formal description of the hardware and the language. A notation is developed for representing maching instructions, and a prototype system has been constructed to demonstrate that this notation is amenable to automated analysis. (Author)
Cited by 13
Jian Yi, Rongke Liu · 2019
In this paper, we proposed a block neural network (BlockNN) algorithm for polar code. We equally divide the 2 <sup xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">n</sup> bit polar code into many small sub-blocks according to the encoding rules of polar code, then put these sub-blocks into the neural network of the same structure for processing. This decoding algorithm is non-iterative and inherently enables a high level of parallelization, while showing a competitive BER(bit error arte) performance. On the aspect of hardware implementation, this decoding structure of the neural network can be multiplexed and the computational complexity does not increase with the code length, only related to the size of the block.
Cited by 0
Alice Witt (17992645), Anna Huggins (13454592), Guido Governatori (10056131) et al. · Figshare · 2021
Cited by 0Open access
Nature Machine Intelligence · 2024
Cited by 3
Hanson Prihantoro Putro, Umi Laili Yuhana, Eko Mulyanto Yuniarno et al. · 2024
Various approaches have been proposed to detect code smells, including machine learning models. However, there are still challenges to improving detection accuracy and selecting appropriate quality metrics. This research introduces the use of Relevance Vector Machine (RVM) for code smell detection, especially Magic Value smells, which often affect source code readability and maintainability in a software development industry. This approach utilizes source code analysis using two source code representations (raw source code and token stream) and feature extraction using two text mining techniques (Bag of Words/BoW and Term Frequency-Inverse Document Frequency/TF-IDF). The experiment involves analyzing 983 records of labeled source code datasets. The results show that RVM can detect code smells with a very high level of accuracy, reaching 99.9% on some kernel configurations, also nearly perfect precision, and F1 scores. This paper contributes to introducing the use of RVM for detecting code smells in source code, explores source code representation and feature extraction techniques, and shows that RVM can achieve high detection accuracy.
Cited by 0
Sutanu Nandi (9707720), Piyali Ganguli (3763579), Ram Rup Sarkar (9028292) · Figshare · 2020
<p>This supplementary text contains source code for the proposed machine learning strategy, including codes for (a) Training data set preparation and integration of heterogeneous features; (b) Feature selection based on the space-filling concept; (c) Dimension reduction using forced directed graph layout; (d) Semi-supervised classifier LapSVM.</p> <p>(DOCX)</p>
Cited by 0Open access
Pfeffer, Tobias Ferdinand · DepositOnce · 2022
Confidential software is an important requirement for the ongoing digitalization. Yet, since confidentiality is a program-wide property, this requirement is at odds with modern software development. In order to produce software cheaply and quickly, existing software components from third-party manufacturers are regularly included in new products. Consequently, a method is needed to ensure the confidentiality across third-party components, which are usually shipped in compiled form. In this thesis we present a new method that enforces confidentiality for compiled programs. Our approach protects against leaks through data flow, control flow, termination behavior, and timing of outputs. At the same time, it achieves per-channel transparency, thereby preserving the functionality of secure components. Our solution is the first practical application of the concept of Secure Multi-Execution to machine code. Secure Multi-Execution is an enforcement mechanism that achieves confidentiality by design. The target program is executed multiple times, where each copy has restricted access to input and output channels. Unfortunately, this multi-execution comes with a significant performance overhead. Thus, we propose two optimizations that significantly increase the efficiency of the protection mechanism. Our principle is to avoid redundant calculations as much as possible. On the one hand, we show how creation of multiplied executions can be delayed through our dynamic instancing method. On the other hand, we show how multiplied executions can be terminated early through our bounding method. In order not to reduce the security guarantees of Secure Multi-Execution through our optimizations, we additionally present a new scheduling strategy for the multiple executions. This strategy allows us to ensure independent progress of executions, while maintaining external dependencies in their output behavior. We also present our contributions to static analysis of binary code, which serves as a basis for further research into the automatic determination of suitable termination points for our optimizations. We have successfully applied our method to the Linux operating system and the widely used x86_x64 architecture. In our evaluation of benchmark programs and real-world targets, we show that our system protects against the above mentioned information leaks while changing the functionality of the target program as little as possible. With our work we enable for the first time the protected use of existing components and thus a fast and cost-effective development of confidential programs.
Cited by 0Open access
Chalakorn Chitsaart, Suchada Rianmora, Mann Rattana-Areeyagon et al. · Zenodo (CERN European Organization for Nuclear Research) · 2013
G-code is the main factor in computer numerical control (CNC) machine for controlling the tool-paths and generating the profile of the object's features. For obtaining high surface accuracy of the surface finish, non-stop operation is required for CNC machine. Recently, to design a new product, the strategy that concerns about a change that has low impact on business and does not consume lot of resources has been introduced. Cost and time for designing minor changes can be reduced since the traditional geometric details of the existing models are applied. In order to support this strategy as the alternative channel for machining operation, this research proposes the automatic generating codes for CNC milling operation. Using this technique can assist the manufacturer to easily change the size and the geometric shape of the product during the operation where the time spent for setting up or processing the machine are reduced. The algorithm implemented on MATLAB platform is developed by analyzing and evaluating the geometric information of the part. Codes are created rapidly to control the operations of the machine. Comparing to the codes obtained from CAM, this developed algorithm can shortly generate and simulate the cutting profile of the part.
Cited by 0Open access
Nuno Miguel Tavares Alves · Open Repository of the University of Porto (University of Porto) · 2025
A ofuscação de código tornou-se uma ferramenta essencial para a segurança de aplicações de soft- ware, ao tornar o código-fonte mais difícil de compreender e de reverter através de engenharia reversa. Embora a ofuscação seja amplamente utilizada em várias linguagens de programação, ganhou particular destaque no JavaScript, uma tecnologia crítica para o funcionamento das apli- cações web modernas. Através de uma série de transformações, como o achatamento de fluxo de controlo, renomeação de variáveis e divisão de código, a ofuscação altera a estrutura do código sem alterar o seu comportamento funcional. Contudo, apesar da sua eficácia em proteger a propriedade intelectual, a ofuscação frequentemente introduz um compromisso: o aumento do tamanho do código e um impacto negativo no desempenho, que pode afetar a capacidade de resposta das apli- cações e a experiência dos utilizadores. O problema de estimar com precisão esses impactos de forma antecipada é particularmente desafiante devido à natureza não linear e combinatória das técnicas de ofuscação. O efeito cumu- lativo de diferentes estratégias de ofuscação, aplicadas em várias sequências, pode resultar num crescimento imprevisível do código, dificultando aos programadores o equilíbrio entre segurança e desempenho. Assim, existe a necessidade de um modelo preditivo que permita prever o cresci- mento do tamanho do código com base nas transformações específicas aplicadas. Esta dissertação propõe uma abordagem inovadora que utiliza modelos de aprendizagem com- putacional para prever o crescimento do tamanho do código em aplicações JavaScript sujeitas a diferentes técnicas de ofuscação. Através do treino de modelos com um conjunto abrangente de amostras de código ofuscado, esta pesquisa visa capturar as interações complexas entre vários métodos de ofuscação. O resultado é um modelo preditivo que pode apoiar os programadores na seleção das estratégias de ofuscação mais adequadas, servindo também como uma ferramenta de suporte à decisão, permitindo-lhes antecipar e mitigar os compromissos de desempenho associa- dos aos mecanismos de proteção de código. Em última instância, as conclusões desta pesquisa poderão contribuir para o desenvolvimento de práticas de ofuscação mais eficientes e práticas na indústria de software, apoiando a criação de aplicações web seguras e de alto desempenho.
Cited by 0