Threadsafe use of non-threadsafe libraries with multi-threaded processes

    公开(公告)号:US09785467B1

    公开(公告)日:2017-10-10

    申请号:US15465287

    申请日:2017-03-21

    IPC分类号: G06F9/48

    摘要: An apparatus includes a processor and a storage storing instructions causing the processor to determine whether an analysis routine is multi-threaded and calls a library function of a non-threadsafe library, and if so, causes the processor to: instantiate an analysis process for executing the analysis routine on multiple threads; instantiate an instance of the library for execution within a isolated library process; instantiate another instance of the library for execution within another isolated library process; retrieve library metadata providing a function prototype of the library function; employ the function prototype to generate an instance of a bridge routine to enable a call from the analysis routine on a first thread to the library function; employ the function prototype to generate another instance of the bridge routine to enable a call from the analysis routine on a second thread to the library function; and begin execution of the analysis routine.

    ALLOCATE INSTRUCTION AND API CALL THAT CONTAIN A SYBMOL FOR A NON-MEMORY RESOURCE
    3.
    发明申请
    ALLOCATE INSTRUCTION AND API CALL THAT CONTAIN A SYBMOL FOR A NON-MEMORY RESOURCE 有权
    分配指令和API呼叫包含非存储资源的SYBMOL

    公开(公告)号:US20150128113A1

    公开(公告)日:2015-05-07

    申请号:US14074640

    申请日:2013-11-07

    IPC分类号: G06F9/45 G06F9/445

    CPC分类号: G06F8/41 G06F8/457 G06F8/54

    摘要: A novel allocate instruction and a novel API call are received onto a compiler. The allocate instruction includes a symbol that identifies a non-memory resource instance. The API call is a call to perform an operation on a non-memory resource instance, where the particular instance is indicated by the symbol in the API call. The compiler replaces the API call with a set of API instructions. A linker then allocates a value to be associated with the symbol, where the allocated value is one of a plurality of values, and where each value corresponds to a respective one of the non-memory resource instances. After allocation, the linker generates an amount of executable code, where the API instructions in the code: 1) are for using the allocated value to generate an address of a register in the appropriate non-memory resource instance, and 2) are for accessing the register.

    摘要翻译: 一个新的分配指令和一个新的API调用被接收到一个编译器上。 分配指令包括标识非内存资源实例的符号。 API调用是对非内存资源实例执行操作的调用,其中特定实例由API调用中的符号指示。 编译器使用一组API指令替换API调用。 链接器然后分配要与符号相关联的值,其中分配的值是多个值中的一个,并且其中每个值对应于非存储器资源实例中的相应一个。 分配后,链接器生成一定量的可执行代码,其中代码中的API指令:1)用于使用分配的值在适当的非内存资源实例中生成寄存器的地址,以及2)用于访问 登记册。

    Method and system for automated process distribution
    5.
    发明授权
    Method and system for automated process distribution 有权
    自动化流程分配的方法和系统

    公开(公告)号:US08904369B2

    公开(公告)日:2014-12-02

    申请号:US11758707

    申请日:2007-06-06

    申请人: Dieter Roller

    发明人: Dieter Roller

    IPC分类号: G06F9/45 G06F9/50 G06F9/44

    摘要: A method for automated process distribution includes selecting a process definition; identifying a first process portion and at least one second process portion in the process definition; generating a first further process definition for the first process portion; generating a second further process definition for each the second process portion; generating a corresponding service definition for each the second further process definition. In the method, generating the first further process definition includes generating a process definition element configured to invoke at least one service of the service definitions, and generating the second further process definition includes generating a process definition element configured to offer a service of the service definition corresponding to that second further process definition.

    摘要翻译: 一种用于自动化流程分配的方法包括选择流程定义; 识别所述过程定义中的第一处理部分和至少一个第二处理部分; 为所述第一处理部分生成第一另外的处理定义; 为每个第二处理部分生成第二另外的处理定义; 为每个第二另外的进程定义生成相应的服务定义。 在该方法中,生成第一另外的过程定义包括生成被配置为调用服务定义的至少一个服务的过程定义元素,以及生成第二另外的过程定义包括生成被配置为提供服务定义的服务的过程定义元素 对应于该第二进一步的过程定义。

    Automatic conversion of MPI source code programs into MPI thread-based programs
    6.
    发明授权
    Automatic conversion of MPI source code programs into MPI thread-based programs 有权
    将MPI源代码程序自动转换为MPI线程程序

    公开(公告)号:US08539456B2

    公开(公告)日:2013-09-17

    申请号:US12459314

    申请日:2009-06-30

    IPC分类号: G06F9/45

    CPC分类号: G06F8/457 G06F9/546

    摘要: A method, system, and computer program product containing instructions for automatically converting an MPI source code program into an MPI thread-based program. In response to inputs in the form of an MPI source code program and a command, a converter declares a global variable of the MPI source code program as a thread private variable to create a first private variable for a first thread and a second private variable for a second thread. A library is identified to support converting processes to threads during execution of the MPI thread-based program, and the identified library is used to build an executable version of the MPI thread-based program. The identified library may include code to identify instantiation of a new process when the MPI thread-based program is executing, and in response, to cause a corresponding thread for the MPI thread-based program to be instantiated.

    摘要翻译: 包含用于将MPI源代码程序自动转换为基于MPI线程的程序的指令的方法,系统和计算机程序产品。 响应于MPI源代码程序和命令形式的输入,转换器将MPI源代码程序的全局变量声明为线程专用变量,以为第一个线程创建第一个专用变量,并为第一个私有变量创建第二个私有变量 第二个线程。 一个库被确定为支持在执行MPI线程程序期间将进程转换为线程,并且所识别的库用于构建基于MPI线程的程序的可执行版本。 所识别的库可以包括当基于MPI线程的程序正在执行时识别新进程的实例化的代码,并且作为响应,引起用于基于MPI线程的程序的相应线程被实例化。

    Pointer renaming in workqueuing execution model
    7.
    发明授权
    Pointer renaming in workqueuing execution model 有权
    指针重命名在工作执行模型中

    公开(公告)号:US08387009B2

    公开(公告)日:2013-02-26

    申请号:US11712171

    申请日:2007-02-28

    申请人: Wenlong Li Eric Li

    发明人: Wenlong Li Eric Li

    IPC分类号: G06F9/44 G06F9/45 G06F9/46

    CPC分类号: G06F8/457 G06F8/433 G06F9/544

    摘要: In general, in one aspect, the disclosure describes a method that includes initializing a queue for a master thread. A cyclic pointer buffer is created based on heap variables in arguments in the master thread. At least one heap variable is passed from the master thread to a slave thread. A pointer for the master thread is exchanged with a pointer for an entry in the buffer. The entry in the buffer is indicated as being available for processing by the slave thread.

    摘要翻译: 通常,在一个方面,本公开描述了一种方法,其包括初始化主线程的队列。 基于主线程中的参数中的堆变量创建循环指针缓冲区。 至少有一个堆变量从主线程传递到从线程。 主线程的指针与缓冲区中的条目的指针进行交换。 缓冲区中的条目表示为可用于从线程的处理。

    Pointer renaming in workqueuing execution model
    8.
    发明申请
    Pointer renaming in workqueuing execution model 有权
    指针重命名在工作执行模型中

    公开(公告)号:US20080163216A1

    公开(公告)日:2008-07-03

    申请号:US11712171

    申请日:2007-02-28

    申请人: Wenlong Li Eric Li

    发明人: Wenlong Li Eric Li

    IPC分类号: G06F9/46

    CPC分类号: G06F8/457 G06F8/433 G06F9/544

    摘要: In general, in one aspect, the disclosure describes a method that includes initializing a queue for a master thread. A cyclic pointer buffer is created based on heap variables in arguments in the master thread. At least one heap variable is passed from the master thread to a slave thread. A pointer for the master thread is exchanged with a pointer for an entry in the buffer. The entry in the buffer is indicated as being available for processing by the slave thread.

    摘要翻译: 通常,在一个方面,本公开描述了一种方法,其包括初始化主线程的队列。 基于主线程中的参数中的堆变量创建循环指针缓冲区。 至少有一个堆变量从主线程传递到从线程。 主线程的指针与缓冲区中的条目的指针进行交换。 缓冲区中的条目表示为可用于从线程的处理。

    Resource locking and thread synchronization in a multiprocessor environment
    9.
    发明授权
    Resource locking and thread synchronization in a multiprocessor environment 有权
    多处理器环境中的资源锁定和线程同步

    公开(公告)号:US06782440B2

    公开(公告)日:2004-08-24

    申请号:US09912870

    申请日:2001-07-25

    申请人: Chris D. Miller

    发明人: Chris D. Miller

    IPC分类号: G06F1200

    摘要: Systems and methods are described for resource locking and thread synchronization in a multiprocessor environment. One method includes restricting access to a protected shared resource by use of a lock; issuing the lock to a requesting software to permit access to the protected shared resource; indicating the issuance of the lock to the requesting software by writing a first value to a lock register; freeing the lock, thereby making the lock available for use by another requesting software, after the requesting software completes accessing the protected shared resource; and indicating that the lock is free by writing a second value to the lock register.

    摘要翻译: 在多处理器环境中描述了资源锁定和线程同步的系统和方法。 一种方法包括通过使用锁限制对受保护的共享资源的访问; 向请求软件发出锁以允许访问受保护的共享资源; 指示通过向锁定寄存器写入第一值来向所述请求软件发出锁定; 在请求软件完成访问受保护的共享资源之后,释放锁,从而使锁可供另一请求软件使用; 并通过向锁定寄存器写入第二个值来指示锁定是空闲的。

    Multiple parallel-job scheduling method and apparatus
    10.
    发明授权
    Multiple parallel-job scheduling method and apparatus 失效
    多个并行作业调度方法和装置

    公开(公告)号:US5978830A

    公开(公告)日:1999-11-02

    申请号:US28351

    申请日:1998-02-24

    摘要: Multiple parallel-job scheduling method and apparatus are provided which can improve the utilization of all processors in a system when a plurality of parallel jobs are executed concurrently. A plurality of processors constituting a computer system and each having the equal function are logically categorized into serial processors for executing a serial computing part or a parallel computing part of a parallel job and a parallel processor group consisting of multiple processors for executing the parallel computing part of the parallel job in parallel. In order that the parallel processors are shared by a plurality of parallel jobs, a synchronization range indicator is provided which can control by program whether the parallel processors are available in correspondence to the respective serial processors. In response to a request for using the parallel processors from a serial processor for which the parallel processors are so set as to be available by means of the synchronization range indicator, operation can be carried out without invoking an interrupt.

    摘要翻译: 提供了多个并行作业调度方法和装置,当同时执行多个并行作业时,可以提高系统中所有处理器的利用率。 构成计算机系统并且具有相同功能的多个处理器被逻辑地分类为用于执行并行作业的串行计算部分或并行计算部分的串行处理器以及由多个处理器组成的并行处理器组,用于执行并行计算部分 的并行作业并行。 为了使并行处理器由多个并行作业共享,提供了同步范围指示符,其可以通过程序来控制并行处理器是否对应于各个串行处理器可用。 响应于来自串行处理器的并行处理器的请求,并行处理器通过同步范围指示器将并行处理器设置为可用,可以在不调用中断的情况下执行操作。