US20110276870A1 - Calculation of spreadsheet data - Google Patents
Calculation of spreadsheet data Download PDFInfo
- Publication number
- US20110276870A1 US20110276870A1 US13/183,999 US201113183999A US2011276870A1 US 20110276870 A1 US20110276870 A1 US 20110276870A1 US 201113183999 A US201113183999 A US 201113183999A US 2011276870 A1 US2011276870 A1 US 2011276870A1
- Authority
- US
- United States
- Prior art keywords
- spreadsheet
- workbook
- calculation
- computing
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/166—Editing, e.g. inserting or deleting
- G06F40/177—Editing, e.g. inserting or deleting of tables; using ruled lines
- G06F40/18—Editing, e.g. inserting or deleting of tables; using ruled lines of spreadsheets
Definitions
- Spreadsheet applications are used to manage and manipulate data.
- the data is entered into a workbook that contains one or more spreadsheets.
- Spreadsheet data is organized within rows and columns contained in the spreadsheet.
- Spreadsheet applications include a variety of data processing tools, and are often capable of performing a variety of functions with the spreadsheet data.
- Spreadsheet applications can be used to store large amounts of spreadsheet data, and can also be used to perform complex functions using the spreadsheet data. Spreadsheet applications are, however, limited by the processing power of the computing system in which they operate.
- Embodiments of the present disclosure generally relate to the calculation of spreadsheet data using a computing cluster.
- an aspect of some embodiments relates to a computing system for controlling the calculation of a workbook.
- the computing system includes a communication device, a processor, and memory.
- the communication device is arranged for communication across a communication network.
- the processor communicatively connected to the communication device.
- the memory stores program instructions, which when executed by the processor cause the computing system to perform operations.
- the operations include receiving a request to calculate a workbook across a computing cluster from a client computing system, the workbook including input data and a formula; determining a set of tasks to be performed to calculate output data based on the input data and the formula; determining availability of computing nodes of the computing cluster; allocating and assigning the tasks among the available computing nodes; receiving output data from the computing nodes; and sending the output data to the client computing system across the network.
- Another aspect of some embodiments relates to a computer readable storage medium containing computer executable instructions which when executed by a computer perform a method of calculating a workbook including spreadsheet data.
- the method includes defining the spreadsheet data including input cells containing input data and output cells containing formulas based on the input data; receiving an input requesting calculation of the formulas by a computing cluster; prompting for and receiving an identification of the input cells and the output cells in the workbook; sending a message requesting calculation of output data based on the input data and the formulas using a computing cluster; and receiving output data in response to the message.
- the method includes defining a workbook including spreadsheet data, the spreadsheet data defining formulas for calculation; receiving an input requesting calculation of the formulas on a computing cluster at a scheduled time; prompting for the scheduled time after receiving the input; sending a request to calculate the workbook on a computing cluster, the request including the scheduled time; and receiving results of the calculation of the formulas after the scheduled time.
- FIG. 1 is a block diagram of an exemplary system for calculating a workbook.
- FIG. 2 is a block diagram of an exemplary client computing system of the system shown in FIG. 1 .
- FIG. 3 is a screen shot of an exemplary user interface including a workbook as displayed by a spreadsheet application of the system shown in FIG. 1 .
- FIG. 4 is a screen shot of an exemplary user interface for identifying input and output cells of the workbook shown in FIG. 3 .
- FIG. 5 is a block diagram of an exemplary server of the system shown in FIG. 1 .
- FIG. 6 is a block diagram of an exemplary computing cluster including computing nodes of the system shown in FIG. 1 .
- FIG. 7 is a flow chart illustrating a method of operating a client computing system shown in FIG. 1 .
- FIG. 8 is a flow chart illustrating a method of operating a server shown in FIG. 1 .
- Embodiments of the present disclosure generally relate to the calculation of spreadsheet data using a computing cluster.
- calculation of a spreadsheet is divided into multiple tasks. The tasks are then assigned among computing nodes within a computing cluster for concurrent calculation of the spreadsheet.
- calculation of the spreadsheet by the computing cluster is faster, for example, than calculation by a single client computing system.
- FIG. 1 is a block diagram of an exemplary system 100 for calculating a workbook.
- This example of system 100 includes client computing system 102 , network 104 , server 106 , and computing cluster 108 including computing nodes 112 .
- Client computing system 102 is any computing system capable of operating a spreadsheet application.
- FIG. 2 Examples of possible client computing systems include a personal computer, handheld computer, cellular telephone, personal digital assistant (PDA), mobile device, and a variety of other computing devices.
- the spreadsheet application provides access to spreadsheet data stored in workbook 120 , such as shown in FIG. 3 .
- Network 104 is a data communication path between client computing system 102 and server 106 .
- network 104 is the Internet.
- network 104 is a local area network, Intranet, wireless network, or any other communication path capable of communicating data from one processing device to another processing device.
- network 104 is also the data communication path between server 106 and computing cluster 108 , and between compute nodes 112 of computing cluster 108 .
- Other embodiments include a different network 104 than for communication among server 106 and computing cluster 108 .
- Server 106 is a computing system that interfaces between client computing system 102 and computing cluster 108 .
- server 106 receives a request to calculate a workbook from client computing system 102 and oversees the calculation of the workbook across computing cluster 108 .
- An example of server 106 is described in more detail with reference to FIG. 4 .
- Computing cluster 108 is a physical and/or logical grouping of computing systems that are configured to operate as computing nodes 112 .
- Computing nodes 112 operate to perform tasks, such as the calculation of spreadsheet data, when the task is assigned to the computing nodes by server 106 .
- Computing cluster 108 and computing nodes 112 are described in more detail with reference to FIG. 6 .
- system 100 include additional computing systems or communication networks.
- multiple client computing systems 102 are included in some embodiments.
- multiple servers 106 and compute clusters 108 are included in some embodiments. Additional computing systems are also included in possible embodiments.
- FIG. 2 is an exemplary client computing system 102 .
- computing system 102 typically includes at least one processing unit 202 and memory 204 .
- memory 204 may be volatile (such as RAM), non-volatile (such as ROM, flash memory, etc.) or some combination of the two.
- This most basic configuration is illustrated in FIG. 2 by dashed line 206 .
- computing system 102 may also have additional features/functionality.
- computing system 102 may also include additional storage (removable and/or non-removable) including, but not limited to, magnetic or optical disks or tape. Such additional storage is illustrated in FIG. 2 by removable storage 208 and non-removable storage 210 .
- Computer storage media includes volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data.
- Memory 204 , removable storage 208 and non-removable storage 210 are all examples of computer storage media.
- Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to store the desired information and that can be accessed by computing system 102 . Any such computer storage media may be part of computing system 102 .
- Computing system 102 may also contain communications connection(s) 212 that allow the computing system to communicate with other devices.
- Communications connection(s) 212 is an example of communication media.
- Communication media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media.
- modulated data signal means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal.
- communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media.
- the term computer readable media as used herein includes both storage media and communication media.
- Computing system 102 may also have input device(s) 214 such as keyboard, mouse, pen, voice input device, touch input device, etc.
- Output device(s) 216 such as a display, speakers, printer, etc. may also be included. All these devices are well known in the art and need not be discussed at length here.
- memory 204 includes one or more of operating system 220 , application programs 222 , other program modules 224 , and program data 226 .
- An example of an application program 222 is a spreadsheet application, such as EXCEL® spreadsheet software, manufactured by Microsoft Corporation.
- An example of program data 226 includes a workbook that can be accessed using the spreadsheet application.
- FIG. 2 Although the system of FIG. 2 is described as an example of computing system 102 , the system is also a suitable example of a possible server 106 and computing node 112 , shown in FIG. 1 . Other embodiments include other computing systems.
- FIG. 3 is a screen shot of an exemplary user interface 300 as displayed by a spreadsheet application on computing system 102 .
- User interface 300 displays workbook 120 and buttons 302 and 304 .
- Workbook 120 includes one or more spreadsheets 306 , each spreadsheet 306 containing cells 308 arranged in columns and rows.
- Cells 308 are locations within spreadsheet 306 in which spreadsheet data can be stored. In some embodiments, cells 308 are used to store either values or formulas, or both. The value of a cell is either the data entered into the cell, or the result of a calculation based upon a formula. A cell whose value is based upon data entered into the cell is referred to as an input cell, because the value is input into the cell. In some embodiments, an input cell is also based upon a formula that is calculated on the client prior to calculation of the spreadsheet data across a computing cluster.
- a formula can be entered into the cell.
- the formula defines a calculation that can be performed to determine the value of the cell.
- the result of the calculation is the value, which can also be stored in the cell along with the formula.
- Formulas often refer to the values of one or more other cells.
- a cell that includes a formula to be calculated across a computing cluster is referred to as an output cell.
- Cells of a spreadsheet are often identified by column (such as represented by letters of the alphabet) and by row (such as represented by a number). For example, the cell located within the column labeled “A” and within the row labeled “1” is referred to as cell A 1 .
- a group of cells is often referred to by the first and last cell, separated by a colon.
- the group of cells including cells A 1 , A 2 , and A 3 can be referred to as cells A 1 :A 3 .
- spreadsheet 306 includes five columns (A-E) and ten rows ( 1 - 10 ).
- the cells 308 of spreadsheet 306 include input cells and output cells.
- the input cells include cells A 1 :A 10 , B 1 :B 10 , C 1 :C 10 , and D 1 :D 10 , and include a value, represented herein by the word “Value” followed by the cell number. Typically, the value is a number. In other embodiments, however, the value is a set of alphanumeric digits, or other symbols.
- the output cells include cells D 1 :D 10 .
- the output cells do not yet have a known value, and instead include a formula that defines a calculation based on the input cells for calculation of the value.
- spreadsheet 306 includes a total of ten tasks that need to be performed, namely the calculation of output cells E 1 :E 10 .
- workbook 120 is very large, such as including thousands to millions or more rows and/or columns.
- workbook 120 defines a Monte Carlo simulation. Monte Carlo simulations are often used to study the behavior of systems using random numbers to simulate unknown factors. Monte Carlo simulations often require repeating the same simulation a large number of times (such as thousands to millions or more) in order to gain enough data for meaningful analysis.
- workbook 120 includes output cells having complex formulas, such as including complex mathematical equations. These complex formulas require relatively large amounts of processing time. For example, complex mathematical equations can require differentiation, integration, or solving multiple formulas for multiple variables, and other types of calculations.
- computing system 102 is inadequate to perform the calculations required to calculate the workbook in the short amount of time that is desired.
- the calculation can instead be performed by computing cluster 108 , shown in FIG. 1 .
- User interface 300 includes button 302 and button 304 .
- Buttons 302 and 304 are selectable by a user to initiate calculation of workbook 120 on computing cluster 108 .
- Button 302 is a “Submit Job Now” button. Selection of button 302 initiates a request to server 106 , shown in FIG. 1 , to begin calculation of workbook 120 as soon as one or more nodes of computing cluster 108 are available.
- Button 304 is a “Schedule Job” button. Selection of button 304 initiates a scheduling process, in which a user schedules the calculation of workbook 120 to be performed by compute cluster 108 at a subsequent time. After selection of button 302 or 304 , the user is prompted to identify the input cells and the output cells of workbook 102 . In addition, if button 304 has been selected, the user is prompted for a time at which the workbook should be scheduled for calculation.
- user interface 300 is described as being generated by a software application operating on client computing system 102 , user interface 300 can also be provided by another computing system, such as server 106 and then transmitted across network 102 for display on client computing system 102 .
- server 106 For example, an ASP.NET 2.0 application is used to provide this service.
- FIG. 4 is a screen shot of an exemplary user interface 400 for identifying input and output cells of workbook 120 . After selection of button 302 or button 304 , user interface 400 is displayed. User interface 400 includes page tabs for displaying various pages. The page tabs include basic settings tab 402 , advanced settings tab 404 , and configuration tab 406 . In this example, the basic settings tab 402 is selected and displayed.
- Basic settings tab 402 includes multiple sections for identifying input and output cells of workbook 120 (shown in FIG. 3 ).
- the sections include calculation input range section 410 , calculation output range section 412 , data input range section 414 , and results location section 416 .
- Each section includes an option to select the ranges/location directly from workbook 120 , or to manually enter the range/location.
- a “Capture Range” button is selected to capture the identified range/location.
- the captured range/location is then identified in the selection display box. If desired, the captured range/location can subsequently be removed by selecting the captured range/location and selecting the remove button.
- Calculation input range section 410 receives an input from the user identifying the range of cells that should be used as inputs to the workbook. For example, the range A 1 :D 10 of workbook 120 (shown in FIG. 3 ) is entered.
- Calculation output range section 412 receives an input from the user identifying the range of cells that should contain the calculated outputs of the workbook. For example, the range E 1 :E 10 of workbook 120 (shown in FIG. 3 ) is entered.
- Data input range section 414 receives an input from the user identifying the cells that contain a series of inputs to calculate. For example, the ranges A 1 :D 1 , A 2 :D 2 , A 3 :D 3 , etc. are entered.
- Results location section 416 receives an input identifying the starting location for the output in the workbook. For example, cell E 1 is entered.
- Advanced settings tab 404 can be selected to display an advanced settings page (not shown).
- the advanced settings page receives input from a user, such as a location of spreadsheet data on the head node, a time delay for displaying output data, an option to schedule workbook calculation, or other advanced settings.
- the configuration settings tab 406 can be selected to display a configuration page.
- the configuration page receives input from a user, such as a URL for server 106 or computing cluster 108 , a location of the working directory, the name of the computing cluster 108 , a URL for a scheduling page, or an input to apply default settings.
- FIG. 5 is a block diagram of an exemplary server 106 .
- server 106 is referred to as a head node, because server 106 operates to control the operation of the computing cluster 108 (shown in FIG. 1 ).
- Server 106 includes spreadsheet server 502 and computing cluster manager 504 .
- Spreadsheet server 502 includes document library 512 .
- Computing cluster manager 504 includes scheduler 506 and data store 514 .
- Spreadsheet server 502 provides a central location for storage of workbooks within document library 512 .
- Spreadsheet server 502 operates to receive workbooks from client computing system 102 and store the workbook in document library 512 .
- document library 512 also stores the identification of input cells and output cells of the workbook. Scheduling data can also be stored in document library 512 .
- Data stored in document library 512 is available for use by computing cluster 108 (shown in FIG. 1 ), computing cluster manager 504 , or by client computing system 102 (or another client computing system).
- Password protection or other security measures are used in some embodiments to ensure that only authorized users or systems are able to access data from document library 512 .
- spreadsheet server 502 allows spreadsheet data to be available for use by computing cluster 108 , regardless of whether or not client computing system 102 is turned on or communicating across network 104 at any particular time. It also reduces the amount of data communicated across network 104 with computing system 102 , because computing system 102 does not have to send spreadsheet data directly to each of compute nodes 112 . Rather, the spreadsheet data is stored within document library 512 .
- One example of spreadsheet server 502 is a computing system operating a SHAREPOINT® portal server, provided by Microsoft Corporation of Redmond, Wash.
- spreadsheet data is received from client computing system 102 in the form of an Extensible Markup Language (XML) document, which is stored in document library 512 .
- XML Extensible Markup Language
- Some embodiments include a schema such as the following. In this example, specific data is included to demonstrate the use of the schema.
- the example XML schema contains all of the necessary meta information about the calculations to be performed by the computing cluster. This information, in addition to the spreadsheet data from the workbook is used for calculation and scheduling on the computing cluster.
- the example schema includes the shared directory on the head node, the URL to associated services (an Excel service, in this example), the URL to the workbook, the User Interface culture used (e.g., en-US identifies United States and English, to identify both the language and symbols, such as currency symbols, to be used), the input collection defining the collection of inputs to be used for the calculations, and the result collection defining the collection of results (e.g., outputs) that are derived from the calculations.
- Other embodiments include other schemas. Yet other embodiments use other file or message formats.
- Document library 512 includes a data storage device, such as one or more hard disk drives, memory devices, and the like. In some embodiments, document library 512 also includes database software that is operated by server 106 .
- database software is a relational database management system, such as SQL SERVER® database software sold by MICROSOFT® Corporation.
- Server 106 also includes computing cluster manager 504 .
- computing cluster manager 504 is communicatively connected to computing cluster 108 (shown in FIG. 1 ) and monitor and control the operation of computing cluster 108 .
- Computing cluster manager 504 includes a data store 514 .
- An example of computing cluster manager 504 is MICROSOFT® WINDOWS SERVERTM 2003, Compute Cluster Edition.
- computing cluster manager 504 controls the membership of computing nodes in one or more computing clusters, such as by requiring that a new computing node request membership within the computing cluster from computing cluster manager 504 . If approved, the computing cluster manager 504 adds the computing node to a list of computing nodes in the computing cluster. Computing cluster manager 504 also monitors the status of the computing nodes, such as to monitor whether tasks have been completed, or whether a computing node has stopped responding. In some embodiments, computing nodes are required to periodically communicate with computing cluster manager 504 to verify that the computing node is still active.
- computing cluster manager 504 also stores information about the resources of the computing cluster.
- the resources include the number and identity of the computing nodes, as well as the processing capabilities of each computing node.
- Processing capabilities include, for example, the speed of the processor of a computing node and the number of processors on a computing node. This information is used by the scheduler to determine how to best allocate tasks among the computing nodes. For example, a computing node with two processors will be able to complete two tasks in the same time that a computing node with one processor can complete a single task.
- Computing cluster manager 504 includes scheduler 506 .
- Scheduler 506 operates to assign tasks to compute nodes 112 (shown in FIG. 1 ) for processing by the compute nodes 112 of computing cluster 108 .
- An example of scheduler 504 is the Job Scheduler service provided by MICROSOFT® WINDOWS SERVERTM 2003, Compute Cluster Edition.
- scheduler 504 is configured to communicate with each of the compute nodes 112 of the computing cluster 108 , and more particularly with the node manager of each node, described below.
- scheduler 504 provides job queuing, scheduling, resource allocation, and job execution services to oversee the calculation of spreadsheet data on the computing cluster 108 .
- scheduler 506 evaluates the workbook and determines the number of tasks to be completed. In one embodiment, the number of tasks is equal to the number of output cells having formulas for calculation. In another embodiment, the number of tasks is equal to the number of rows in the workbook. Other task definitions are used in other embodiments. Once the number of tasks is known, scheduler compares the number of tasks to the resources available on computing cluster 108 , and determines how to divide the tasks among available computing nodes.
- Scheduler 504 compares the number of tasks with the available resources of the computing cluster and determines that two tasks should be assigned to the first computing node, and one task assigned to each of the other computing nodes. In this way, all tasks will be completed in the least amount of time.
- scheduler 506 can delay calculation of a workbook until a scheduled time.
- a request for calculation includes a time at which the calculation should be performed.
- Scheduler 506 reads the time, and delays assigning tasks to computing nodes until the scheduled time.
- a client can request that calculation of a workbook be scheduled after business hours, or just before the results are expected to be needed.
- the scheduled time is input by a user into a web page. The scheduled time is then communicated to scheduler 506 . In other embodiments, the scheduled time is entered into a user interface described herein.
- scheduler 506 monitors the computing cluster 108 to be sure that all tasks are completed. If a task is not completed, scheduler 506 reassigns the task to another computing node. This ensures that all tasks required to calculate the workbook are performed by the computing cluster.
- Server 106 also receives the results of calculations of completed tasks from compute nodes 112 of computing cluster 108 . For example, after a task has been completed by a compute node 112 , such as the calculation of an output value based on a mathematical equation and input values, the output value is returned to server 106 . Server 106 saves the result in data store 514 . Server 106 then communicates the result back to client computing system 102 , where it is updated in the workbook 120 .
- the communication of the results from server 106 to client computing system 102 is performed by server 106 .
- results are communicated directly from the compute nodes 112 to client computing system 102 .
- document library 512 and data store 514 are shown separately, in some possible embodiments, document library 512 and data store 514 are contained in a single data storage system, which can be either local or remote to server 106 .
- server 106 need not be a single computing system, but can in some embodiments include multiple computing systems. For example, one computing system could operate spreadsheet server 502 , while another computing system operates computing cluster manager 504 .
- Computing node 112 includes node manager 602 and task processor 604 .
- Node manager 602 is, for example, a software application running on computing node 112 that communicates with the computing cluster manager of server 106 .
- Node manager 602 controls the operation of the computing node 112 , such as by passing tasks received from server 106 to the task processor 604 for computation.
- An example of node manager 602 is the Node Manager software application of the MICROSOFT® Compute Cluster Pack.
- Task processor 604 receives a task from node manager 602 and performs the assigned task. In one example embodiment, task processor 604 receives a task from node manager 602 . The task processor 604 then requests a copy of the workbook from document library 412 of server 106 . Document library 412 returns the workbook to task processor 604 . After opening the workbook, task processor 604 locates the input and output cells identified in the task. The output values are then calculated based on the formula of the output cell and the input cells referenced by the formula. Multiple calculations can be required by some tasks.
- computing nodes 112 utilize a message passing interface (MPI) for communication with computing node 112 .
- MPI message passing interface
- MPICH2 can be used (which implements the MPI 2.0 standard).
- MPI is particularly useful for parallel processing, such as when computing nodes 112 include multiple processors.
- Task processor 604 utilizes one or more processing units (e.g., 202 shown in FIG. 2 ) to generate an output value based on the spreadsheet data received.
- the task processor 604 receives a copy of workbook 120 , or a part of workbook 120 , from the document library (e.g., document library 512 , shown in FIG. 5 ) of the spreadsheet server (e.g., 502 , also shown in FIG. 5 ).
- Task processor 604 opens the workbook, and identifies the cells that have been assigned to the task.
- Task processor 604 then calculates the output values based on the input values and the mathematical formula.
- the results are then extracted from the workbook and communicated to server 106 .
- Server 106 receives the results, stores them in data store 514 , and communicates the results to client computing system 102 .
- the results are communicates as an XML document.
- FIG. 7 is a flow chart illustrating a method 700 of operating a client computing system.
- Method 700 includes operations 702 , 704 , 706 , 708 , 710 , and 712 .
- Method 700 begins with operation 702 during which a request is received to calculate a workbook with a computing cluster.
- a user using a client computing system e.g., 102
- running a spreadsheet application provides an input requesting that the workbook be calculated with the computing cluster.
- This input can take various forms, such as clicking a button (e.g., 302 or 304 , shown in FIG. 3 ) of a user interface, pressing a button, selecting one or more keys from a keyboard (such as a keyboard shortcut), and the like.
- Operation 706 is then performed, during which the user is prompted to identify input cells and output cells from the workbook and the input is received.
- operation 706 involves prompting the user to select the input cells, or to enter the range of input cells. The user then identifies those cells that are input cells. With reference to FIG. 3 , for example, the user selects or inputs cells A 1 -A 10 , B 1 -B 10 , C 1 -C 10 , and D 1 -D 10 . The user is then prompted to identify the output cells. With reference to FIG. 3 , for example, the user selects or inputs cells E 1 -E 10 .
- Operation 708 is then performed if the calculation is to be scheduled to prompt the user for a time to calculate the workbook. The user enters the date and/or time for calculation of the workbook.
- Operation 710 is then performed to generate and send a calculation request.
- operation 710 involves the generation of a calculation request message that is sent to server 106 to request calculation of the workbook.
- a request message is generated in the form of an XML message.
- the request message includes an identification of the location of the workbook (such as within document library 512 , shown in FIG. 5 ), a list of the input cells, and a list of the output cells.
- the request message also includes an identification of the division of tasks within the workbook. The division of tasks is determined, for example, based on the number of nodes available, the resources available on each node (e.g., number of processors), and the number of input cells.
- the request message includes the values of the input cells and the mathematical formulas of the output cells. In this way, the request message itself includes all data necessary for calculation of the workbook by the compute cluster. The request is then sent, such as across a network.
- the request message also includes an identification of the time requested.
- operation 712 is then performed to receive the results and update the workbook.
- operation 712 is performed dynamically, such that the workbook is updated with the results as soon as the calculations are completed by the compute cluster. This enables the user to view the data as it becomes available, and to begin to evaluate the results even before all results have been returned.
- the results are received and updated at the same time. Once the results have been received, they are stored in the workbook at the appropriate output cell location.
- FIG. 8 is a flow chart illustrating a method 800 of operating a server.
- Method 800 includes operations 802 , 804 , 806 , 808 , and 810 .
- Operation 802 is first performed to receive a request to calculate a workbook across a compute cluster. An example of the request is described with respect to operation 710 shown in FIG. 7 .
- Operation 806 is then performed to allocate and assign tasks to the computing cluster. For example, allocation is based upon the resources available in the computing cluster, as determined in operation 804 . The tasks are allocated based upon the resources available at each node to reduce the time required for calculation of the workbook.
- Operation 808 is then performed, during which the results are received.
- the results are received from each node of the computing cluster as the calculations are completed.
- Operation 810 is then performed to send the results to the sender of the request.
- the results are sent to a client computing system.
- the results are sent dynamically as they are received to quickly update data in the workbook.
- the data is sent at a single time after all calculations have been completed.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Document Processing Apparatus (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
A workbook includes a spreadsheet having cells arranged in columns and rows. The cells include input cells and output cells. The output cells include a formula to be calculated. Calculation of the spreadsheet is divided into multiple tasks. The tasks are assigned among computing nodes within a computing cluster for concurrent calculation of the spreadsheet.
Description
- The present application is a continuation of U.S. patent application Ser. No. 11/927,014, filed Oct. 29, 2007, now U.S. Pat. No. ______, which application is hereby incorporated by reference in its entirety.
- Spreadsheet applications are used to manage and manipulate data. The data is entered into a workbook that contains one or more spreadsheets. Spreadsheet data is organized within rows and columns contained in the spreadsheet. Spreadsheet applications include a variety of data processing tools, and are often capable of performing a variety of functions with the spreadsheet data.
- Spreadsheet applications can be used to store large amounts of spreadsheet data, and can also be used to perform complex functions using the spreadsheet data. Spreadsheet applications are, however, limited by the processing power of the computing system in which they operate.
- Embodiments of the present disclosure generally relate to the calculation of spreadsheet data using a computing cluster.
- As discussed herein, an aspect of some embodiments relates to a computing system for controlling the calculation of a workbook. The computing system includes a communication device, a processor, and memory. The communication device is arranged for communication across a communication network. The processor communicatively connected to the communication device. The memory stores program instructions, which when executed by the processor cause the computing system to perform operations. The operations include receiving a request to calculate a workbook across a computing cluster from a client computing system, the workbook including input data and a formula; determining a set of tasks to be performed to calculate output data based on the input data and the formula; determining availability of computing nodes of the computing cluster; allocating and assigning the tasks among the available computing nodes; receiving output data from the computing nodes; and sending the output data to the client computing system across the network.
- Another aspect of some embodiments relates to a computer readable storage medium containing computer executable instructions which when executed by a computer perform a method of calculating a workbook including spreadsheet data. The method includes defining the spreadsheet data including input cells containing input data and output cells containing formulas based on the input data; receiving an input requesting calculation of the formulas by a computing cluster; prompting for and receiving an identification of the input cells and the output cells in the workbook; sending a message requesting calculation of output data based on the input data and the formulas using a computing cluster; and receiving output data in response to the message.
- Further aspects relate to a method of calculating a workbook. The method includes defining a workbook including spreadsheet data, the spreadsheet data defining formulas for calculation; receiving an input requesting calculation of the formulas on a computing cluster at a scheduled time; prompting for the scheduled time after receiving the input; sending a request to calculate the workbook on a computing cluster, the request including the scheduled time; and receiving results of the calculation of the formulas after the scheduled time.
- This summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key or essential features of the claimed subject matter, nor is it intended to be used in any way as to limit the scope of the claimed subject matter.
-
FIG. 1 is a block diagram of an exemplary system for calculating a workbook. -
FIG. 2 is a block diagram of an exemplary client computing system of the system shown inFIG. 1 . -
FIG. 3 is a screen shot of an exemplary user interface including a workbook as displayed by a spreadsheet application of the system shown inFIG. 1 . -
FIG. 4 is a screen shot of an exemplary user interface for identifying input and output cells of the workbook shown inFIG. 3 . -
FIG. 5 is a block diagram of an exemplary server of the system shown inFIG. 1 . -
FIG. 6 is a block diagram of an exemplary computing cluster including computing nodes of the system shown inFIG. 1 . -
FIG. 7 is a flow chart illustrating a method of operating a client computing system shown inFIG. 1 . -
FIG. 8 is a flow chart illustrating a method of operating a server shown inFIG. 1 . - This disclosure will now more fully describe exemplary embodiments with reference to the accompanying drawings, in which specific embodiments are shown. Other aspects may, however, be embodied many different forms and the inclusion of specific embodiments in the disclosure should not be construed as limiting such aspects to the embodiments set forth herein. Rather, the embodiments depicted in the drawings are included to provide a disclosure that is thorough and complete and which fully conveys the intended scope to those skilled in the art. When referring to the figures, like structures and elements shown throughout are indicated with like reference numerals.
- Embodiments of the present disclosure generally relate to the calculation of spreadsheet data using a computing cluster. In one embodiment, and by non-limiting example, calculation of a spreadsheet is divided into multiple tasks. The tasks are then assigned among computing nodes within a computing cluster for concurrent calculation of the spreadsheet. In some embodiments, calculation of the spreadsheet by the computing cluster is faster, for example, than calculation by a single client computing system.
-
FIG. 1 is a block diagram of anexemplary system 100 for calculating a workbook. This example ofsystem 100 includesclient computing system 102,network 104,server 106, andcomputing cluster 108 includingcomputing nodes 112.Client computing system 102 is any computing system capable of operating a spreadsheet application. One possible example ofcomputing system 102 is shown inFIG. 2 . Examples of possible client computing systems include a personal computer, handheld computer, cellular telephone, personal digital assistant (PDA), mobile device, and a variety of other computing devices. The spreadsheet application provides access to spreadsheet data stored inworkbook 120, such as shown inFIG. 3 . - Network 104 is a data communication path between
client computing system 102 andserver 106. In one embodiment,network 104 is the Internet. In other embodiments,network 104 is a local area network, Intranet, wireless network, or any other communication path capable of communicating data from one processing device to another processing device. In some embodiments,network 104 is also the data communication path betweenserver 106 andcomputing cluster 108, and betweencompute nodes 112 ofcomputing cluster 108. Other embodiments include adifferent network 104 than for communication amongserver 106 andcomputing cluster 108. -
Server 106 is a computing system that interfaces betweenclient computing system 102 andcomputing cluster 108. For example,server 106 receives a request to calculate a workbook fromclient computing system 102 and oversees the calculation of the workbook acrosscomputing cluster 108. An example ofserver 106 is described in more detail with reference toFIG. 4 . -
Computing cluster 108 is a physical and/or logical grouping of computing systems that are configured to operate ascomputing nodes 112.Computing nodes 112 operate to perform tasks, such as the calculation of spreadsheet data, when the task is assigned to the computing nodes byserver 106.Computing cluster 108 andcomputing nodes 112 are described in more detail with reference toFIG. 6 . - Other embodiments of
system 100 include additional computing systems or communication networks. For example, multipleclient computing systems 102 are included in some embodiments. In addition,multiple servers 106 andcompute clusters 108 are included in some embodiments. Additional computing systems are also included in possible embodiments. -
FIG. 2 is an exemplaryclient computing system 102. In its most basic configuration,computing system 102 typically includes at least oneprocessing unit 202 andmemory 204. Depending on the exact configuration and type of computing system,memory 204 may be volatile (such as RAM), non-volatile (such as ROM, flash memory, etc.) or some combination of the two. This most basic configuration is illustrated inFIG. 2 by dashedline 206. Additionally,computing system 102 may also have additional features/functionality. For example,computing system 102 may also include additional storage (removable and/or non-removable) including, but not limited to, magnetic or optical disks or tape. Such additional storage is illustrated inFIG. 2 byremovable storage 208 andnon-removable storage 210. - Computer storage media includes volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data.
Memory 204,removable storage 208 andnon-removable storage 210 are all examples of computer storage media. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to store the desired information and that can be accessed by computingsystem 102. Any such computer storage media may be part ofcomputing system 102. -
Computing system 102 may also contain communications connection(s) 212 that allow the computing system to communicate with other devices. Communications connection(s) 212 is an example of communication media. Communication media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. The term computer readable media as used herein includes both storage media and communication media. -
Computing system 102 may also have input device(s) 214 such as keyboard, mouse, pen, voice input device, touch input device, etc. Output device(s) 216 such as a display, speakers, printer, etc. may also be included. All these devices are well known in the art and need not be discussed at length here. - In some embodiments,
memory 204 includes one or more ofoperating system 220,application programs 222,other program modules 224, andprogram data 226. An example of anapplication program 222 is a spreadsheet application, such as EXCEL® spreadsheet software, manufactured by Microsoft Corporation. An example ofprogram data 226 includes a workbook that can be accessed using the spreadsheet application. - Although the system of
FIG. 2 is described as an example ofcomputing system 102, the system is also a suitable example of apossible server 106 andcomputing node 112, shown inFIG. 1 . Other embodiments include other computing systems. -
FIG. 3 is a screen shot of anexemplary user interface 300 as displayed by a spreadsheet application oncomputing system 102.User interface 300 displays workbook 120 andbuttons Workbook 120 includes one ormore spreadsheets 306, eachspreadsheet 306 containingcells 308 arranged in columns and rows. -
Cells 308 are locations withinspreadsheet 306 in which spreadsheet data can be stored. In some embodiments,cells 308 are used to store either values or formulas, or both. The value of a cell is either the data entered into the cell, or the result of a calculation based upon a formula. A cell whose value is based upon data entered into the cell is referred to as an input cell, because the value is input into the cell. In some embodiments, an input cell is also based upon a formula that is calculated on the client prior to calculation of the spreadsheet data across a computing cluster. - When the value of a cell is not known, a formula can be entered into the cell. The formula defines a calculation that can be performed to determine the value of the cell. The result of the calculation is the value, which can also be stored in the cell along with the formula. Formulas often refer to the values of one or more other cells. A cell that includes a formula to be calculated across a computing cluster is referred to as an output cell.
- Cells of a spreadsheet are often identified by column (such as represented by letters of the alphabet) and by row (such as represented by a number). For example, the cell located within the column labeled “A” and within the row labeled “1” is referred to as cell A1. In addition, a group of cells is often referred to by the first and last cell, separated by a colon. For example, the group of cells including cells A1, A2, and A3 can be referred to as cells A1:A3.
- In the
example workbook 120,spreadsheet 306 includes five columns (A-E) and ten rows (1-10). Thecells 308 ofspreadsheet 306 include input cells and output cells. The input cells include cells A1:A10, B1:B10, C1:C10, and D1:D10, and include a value, represented herein by the word “Value” followed by the cell number. Typically, the value is a number. In other embodiments, however, the value is a set of alphanumeric digits, or other symbols. The output cells include cells D1:D10. The output cells do not yet have a known value, and instead include a formula that defines a calculation based on the input cells for calculation of the value. As a result,spreadsheet 306 includes a total of ten tasks that need to be performed, namely the calculation of output cells E1:E10. - In some embodiments,
workbook 120 is very large, such as including thousands to millions or more rows and/or columns. For example, in oneembodiment workbook 120 defines a Monte Carlo simulation. Monte Carlo simulations are often used to study the behavior of systems using random numbers to simulate unknown factors. Monte Carlo simulations often require repeating the same simulation a large number of times (such as thousands to millions or more) in order to gain enough data for meaningful analysis. - In other embodiments,
workbook 120 includes output cells having complex formulas, such as including complex mathematical equations. These complex formulas require relatively large amounts of processing time. For example, complex mathematical equations can require differentiation, integration, or solving multiple formulas for multiple variables, and other types of calculations. - In such embodiments,
computing system 102 is inadequate to perform the calculations required to calculate the workbook in the short amount of time that is desired. As a result, the calculation can instead be performed by computingcluster 108, shown inFIG. 1 . -
User interface 300 includesbutton 302 andbutton 304.Buttons workbook 120 oncomputing cluster 108.Button 302 is a “Submit Job Now” button. Selection ofbutton 302 initiates a request toserver 106, shown inFIG. 1 , to begin calculation ofworkbook 120 as soon as one or more nodes ofcomputing cluster 108 are available.Button 304 is a “Schedule Job” button. Selection ofbutton 304 initiates a scheduling process, in which a user schedules the calculation ofworkbook 120 to be performed bycompute cluster 108 at a subsequent time. After selection ofbutton workbook 102. In addition, ifbutton 304 has been selected, the user is prompted for a time at which the workbook should be scheduled for calculation. - Although
user interface 300 is described as being generated by a software application operating onclient computing system 102,user interface 300 can also be provided by another computing system, such asserver 106 and then transmitted acrossnetwork 102 for display onclient computing system 102. For example, an ASP.NET 2.0 application is used to provide this service. -
FIG. 4 is a screen shot of anexemplary user interface 400 for identifying input and output cells ofworkbook 120. After selection ofbutton 302 orbutton 304,user interface 400 is displayed.User interface 400 includes page tabs for displaying various pages. The page tabs includebasic settings tab 402,advanced settings tab 404, andconfiguration tab 406. In this example, thebasic settings tab 402 is selected and displayed. -
Basic settings tab 402 includes multiple sections for identifying input and output cells of workbook 120 (shown inFIG. 3 ). The sections include calculationinput range section 410, calculationoutput range section 412, datainput range section 414, andresults location section 416. Each section includes an option to select the ranges/location directly fromworkbook 120, or to manually enter the range/location. Once the range/location has been selected inworkbook 120, or manually entered, a “Capture Range” button is selected to capture the identified range/location. The captured range/location is then identified in the selection display box. If desired, the captured range/location can subsequently be removed by selecting the captured range/location and selecting the remove button. - Calculation
input range section 410 receives an input from the user identifying the range of cells that should be used as inputs to the workbook. For example, the range A1:D10 of workbook 120 (shown inFIG. 3 ) is entered. Calculationoutput range section 412 receives an input from the user identifying the range of cells that should contain the calculated outputs of the workbook. For example, the range E1:E10 of workbook 120 (shown inFIG. 3 ) is entered. Datainput range section 414 receives an input from the user identifying the cells that contain a series of inputs to calculate. For example, the ranges A1:D1, A2:D2, A3:D3, etc. are entered.Results location section 416 receives an input identifying the starting location for the output in the workbook. For example, cell E1 is entered. -
Advanced settings tab 404 can be selected to display an advanced settings page (not shown). In some embodiments, the advanced settings page receives input from a user, such as a location of spreadsheet data on the head node, a time delay for displaying output data, an option to schedule workbook calculation, or other advanced settings. Theconfiguration settings tab 406 can be selected to display a configuration page. In some embodiments, the configuration page receives input from a user, such as a URL forserver 106 orcomputing cluster 108, a location of the working directory, the name of thecomputing cluster 108, a URL for a scheduling page, or an input to apply default settings. -
FIG. 5 is a block diagram of anexemplary server 106. In some embodiments,server 106 is referred to as a head node, becauseserver 106 operates to control the operation of the computing cluster 108 (shown inFIG. 1 ).Server 106 includesspreadsheet server 502 andcomputing cluster manager 504.Spreadsheet server 502 includesdocument library 512.Computing cluster manager 504 includesscheduler 506 anddata store 514. -
Spreadsheet server 502 provides a central location for storage of workbooks withindocument library 512.Spreadsheet server 502 operates to receive workbooks fromclient computing system 102 and store the workbook indocument library 512. In some possible embodiments,document library 512 also stores the identification of input cells and output cells of the workbook. Scheduling data can also be stored indocument library 512. - Data stored in
document library 512 is available for use by computing cluster 108 (shown inFIG. 1 ),computing cluster manager 504, or by client computing system 102 (or another client computing system). Password protection or other security measures are used in some embodiments to ensure that only authorized users or systems are able to access data fromdocument library 512. - In some embodiments,
spreadsheet server 502 allows spreadsheet data to be available for use by computingcluster 108, regardless of whether or notclient computing system 102 is turned on or communicating acrossnetwork 104 at any particular time. It also reduces the amount of data communicated acrossnetwork 104 withcomputing system 102, becausecomputing system 102 does not have to send spreadsheet data directly to each ofcompute nodes 112. Rather, the spreadsheet data is stored withindocument library 512. One example ofspreadsheet server 502 is a computing system operating a SHAREPOINT® portal server, provided by Microsoft Corporation of Redmond, Wash. - In some embodiments, spreadsheet data is received from
client computing system 102 in the form of an Extensible Markup Language (XML) document, which is stored indocument library 512. Some embodiments include a schema such as the following. In this example, specific data is included to demonstrate the use of the schema. -
-
<?xml version=“1.0” ?> - <ExcelServicesWork DeserializationFile=“\\HeadNode\HeadNodeShare\ 20060928035609ECSJob\CCSJo b-0\ExcelServicesWork.xml” ExcelServiceUrl=“http://Server/_vti_bin/ExcelService.asmx” WorkbookUrl=“http://Server/sites/ss/Test/MonteCarlo2.xlsx” UICultureName=“en-US” DataCultureName=“en-US”> - <InputCollection> - <InputRow> - <Input sheet=“Sheet1” cells=“InitialPrice” celltype=“NamedRange”> <Value>22</Value> </Input> - <Input sheet=“Sheet1” cells=“StrikePrice” celltype=“NamedRange”> <Value>25</Value> </Input> - <Input sheet=“Sheet1” cells=“Interest” celltype=“NamedRange”> <Value>.072</Value> </Input> - <ResultCollection> - <Result Sheet=“Sheet1” Cells=“MoreResults” CellType=“NamedRange”> <Status /> - <Value> - <ArrayOfAnyType> - <anyType> <anyType>$8,287.47</anyType> <anyType>$2,342.13</anyType> <anyType /> <anyType>−44.357%</anyType> <anyType /> </anyType> </ArrayOfAnyType> </Value> </Result> </ResultCollection> </InputRow> - <InputRow> - <Input sheet=“Sheet1” cells=“InitialPrice” celltype=“NamedRange”> <Value>22</Value> </Input> - <Input sheet=“Sheet1” cells=“StrikePrice” celltype=“NamedRange”> <Value>25.5</Value> </Input> - <Input sheet=“Sheet1” cells=“Interest” celltype=“NamedRange”> <Value>.072</Value> </Input> - <ResultCollection> - <Result Sheet=“Sheet1” Cells=“MoreResults” CellType=“NamedRange”> <Status /> - <Value> - <ArrayOfAnyType> - <anyType> <anyType>$8,136.29</anyType> <anyType>$964.42</anyType> <anyType /> <anyType>−58.768%</anyType> <anyType /> </anyType> </ArrayOfAnyType> </Value> </Result> </ResultCollection> </InputRow> - <InputRow> - <Input sheet=“Sheet1” cells=“InitialPrice” celltype=“NamedRange”> <Value>22</Value> </Input> - <Input sheet=“Sheet1” cells=“StrikePrice” celltype=“NamedRange”> <Value>26</Value> </Input> - <Input sheet=“Sheet1” cells=“Interest” celltype=“NamedRange”> <Value>.072</Value> </Input> - <ResultCollection> - <Result Sheet=“Sheet1” Cells=“MoreResults” CellType=“NamedRange”> <Status /> - <Value> - <ArrayOfAnyType> - <anyType> <anyType>$8,630.55</anyType> <anyType>$1,835.24</anyType> <anyType /> <anyType>−58.631%</anyType> <anyType /> </anyType> </ArrayOfAnyType> </Value> </Result> </ResultCollection> </InputRow> - <InputRow> - <Input sheet=“Sheet1” cells=“InitialPrice” celltype=“NamedRange”> <Value>22</Value> </Input> - <Input sheet=“Sheet1” cells=“StrikePrice” celltype=“NamedRange”> <Value>26.5</Value> </Input> - <Input sheet=“Sheet1” cells=“Interest” celltype=“NamedRange”> <Value>.072</Value> </Input> - <ResultCollection> - <Result Sheet=“Sheet1” Cells=“MoreResults” CellType=“NamedRange”> <Status /> - <Value> - <ArrayOfAnyType> - <anyType> <anyType>$9,182.29</anyType> <anyType>$1,025.02</anyType> <anyType /> <anyType>−36.268%</anyType> <anyType /> </anyType> </ArrayOfAnyType> </Value> </Result> </ResultCollection> </InputRow> - <InputRow> - <Input sheet=“Sheet1” cells=“InitialPrice” celltype=“NamedRange”> <Value>22</Value> </Input> - <Input sheet=“Sheet1” cells=“StrikePrice” celltype=“NamedRange”> <Value>27</Value> </Input> - <Input sheet=“Sheet1” cells=“Interest” celltype=“NamedRange”> <Value>.072</Value> </Input> - <ResultCollection> - <Result Sheet=“Sheet1” Cells=“MoreResults” CellType=“NamedRange”> <Status /> - <Value> - <ArrayOfAnyType> - <anyType> <anyType>$9,306.31</anyType> <anyType>$1,423.03</anyType> <anyType /> <anyType>−24.469%</anyType> <anyType /> </anyType> </ArrayOfAnyType> </Value> </Result> </ResultCollection> </InputRow> - <InputRow> - <Input sheet=“Sheet1” cells=“InitialPrice” celltype=“NamedRange”> <Value>22</Value> </Input> - <Input sheet=“Sheet1” cells=“StrikePrice” celltype=“NamedRange”> <Value>27.5</Value> </Input> - <Input sheet=“Sheet1” cells=“Interest” celltype=“NamedRange”> <Value>.072</Value> </Input> - <ResultCollection> - <Result Sheet=“Sheet1” Cells=“MoreResults” CellType=“NamedRange”> <Status /> - <Value> - <ArrayOfAnyType> - <anyType> <anyType>$8,181.39</anyType> <anyType>$1,998.65</anyType> <anyType /> <anyType>−31.423%</anyType> <anyType /> </anyType> </ArrayOfAnyType> </Value> </Result> </ResultCollection> </InputRow> </InputCollection> </ExcelServicesWork> - The example XML schema contains all of the necessary meta information about the calculations to be performed by the computing cluster. This information, in addition to the spreadsheet data from the workbook is used for calculation and scheduling on the computing cluster. As shown above, the example schema includes the shared directory on the head node, the URL to associated services (an Excel service, in this example), the URL to the workbook, the User Interface culture used (e.g., en-US identifies United States and English, to identify both the language and symbols, such as currency symbols, to be used), the input collection defining the collection of inputs to be used for the calculations, and the result collection defining the collection of results (e.g., outputs) that are derived from the calculations. Other embodiments include other schemas. Yet other embodiments use other file or message formats.
-
Document library 512 includes a data storage device, such as one or more hard disk drives, memory devices, and the like. In some embodiments,document library 512 also includes database software that is operated byserver 106. One example of database software is a relational database management system, such as SQL SERVER® database software sold by MICROSOFT® Corporation. -
Server 106 also includescomputing cluster manager 504. In some embodiments, computingcluster manager 504 is communicatively connected to computing cluster 108 (shown inFIG. 1 ) and monitor and control the operation ofcomputing cluster 108.Computing cluster manager 504 includes adata store 514. An example ofcomputing cluster manager 504 is MICROSOFT® WINDOWS SERVER™ 2003, Compute Cluster Edition. - In some embodiments, computing
cluster manager 504 controls the membership of computing nodes in one or more computing clusters, such as by requiring that a new computing node request membership within the computing cluster from computingcluster manager 504. If approved, thecomputing cluster manager 504 adds the computing node to a list of computing nodes in the computing cluster.Computing cluster manager 504 also monitors the status of the computing nodes, such as to monitor whether tasks have been completed, or whether a computing node has stopped responding. In some embodiments, computing nodes are required to periodically communicate withcomputing cluster manager 504 to verify that the computing node is still active. - In some embodiments, computing
cluster manager 504 also stores information about the resources of the computing cluster. The resources include the number and identity of the computing nodes, as well as the processing capabilities of each computing node. Processing capabilities include, for example, the speed of the processor of a computing node and the number of processors on a computing node. This information is used by the scheduler to determine how to best allocate tasks among the computing nodes. For example, a computing node with two processors will be able to complete two tasks in the same time that a computing node with one processor can complete a single task. -
Computing cluster manager 504 includesscheduler 506.Scheduler 506 operates to assign tasks to compute nodes 112 (shown inFIG. 1 ) for processing by thecompute nodes 112 ofcomputing cluster 108. An example ofscheduler 504 is the Job Scheduler service provided by MICROSOFT® WINDOWS SERVER™ 2003, Compute Cluster Edition. In some embodiments,scheduler 504 is configured to communicate with each of thecompute nodes 112 of thecomputing cluster 108, and more particularly with the node manager of each node, described below. In some embodiments,scheduler 504 provides job queuing, scheduling, resource allocation, and job execution services to oversee the calculation of spreadsheet data on thecomputing cluster 108. - When a workbook is to be calculated,
scheduler 506 evaluates the workbook and determines the number of tasks to be completed. In one embodiment, the number of tasks is equal to the number of output cells having formulas for calculation. In another embodiment, the number of tasks is equal to the number of rows in the workbook. Other task definitions are used in other embodiments. Once the number of tasks is known, scheduler compares the number of tasks to the resources available on computingcluster 108, and determines how to divide the tasks among available computing nodes. - For example, consider a scenario in which a workbook had four calculations that needed to be performed and a computing cluster included three computing nodes. A first of the computing nodes includes dual processors, and the other two computing nodes include a single processor.
Scheduler 504 compares the number of tasks with the available resources of the computing cluster and determines that two tasks should be assigned to the first computing node, and one task assigned to each of the other computing nodes. In this way, all tasks will be completed in the least amount of time. - In some embodiments,
scheduler 506 can delay calculation of a workbook until a scheduled time. For example, a request for calculation includes a time at which the calculation should be performed.Scheduler 506 reads the time, and delays assigning tasks to computing nodes until the scheduled time. For example, a client can request that calculation of a workbook be scheduled after business hours, or just before the results are expected to be needed. In some embodiments, the scheduled time is input by a user into a web page. The scheduled time is then communicated toscheduler 506. In other embodiments, the scheduled time is entered into a user interface described herein. - In some embodiments,
scheduler 506 monitors thecomputing cluster 108 to be sure that all tasks are completed. If a task is not completed,scheduler 506 reassigns the task to another computing node. This ensures that all tasks required to calculate the workbook are performed by the computing cluster. -
Server 106 also receives the results of calculations of completed tasks fromcompute nodes 112 ofcomputing cluster 108. For example, after a task has been completed by acompute node 112, such as the calculation of an output value based on a mathematical equation and input values, the output value is returned toserver 106.Server 106 saves the result indata store 514.Server 106 then communicates the result back toclient computing system 102, where it is updated in theworkbook 120. - In one embodiment, the communication of the results from
server 106 toclient computing system 102 is performed byserver 106. In another embodiment, results are communicated directly from thecompute nodes 112 toclient computing system 102. - Although
document library 512 anddata store 514 are shown separately, in some possible embodiments,document library 512 anddata store 514 are contained in a single data storage system, which can be either local or remote toserver 106. Furthermore,server 106 need not be a single computing system, but can in some embodiments include multiple computing systems. For example, one computing system could operatespreadsheet server 502, while another computing system operatescomputing cluster manager 504. -
FIG. 6 is a block diagram of anexemplary computing cluster 108 includingcomputing nodes 112.Computing cluster 108 is a logical and/or physical grouping of processing units that are capable of performing workbook calculations.Computing cluster 108 includes one ormore computing nodes 112, such as afirst computing node 112, asecond computing node 112′, athird computing node 112″, and afourth computing node 112′″. -
Computing node 112 includesnode manager 602 andtask processor 604.Node manager 602 is, for example, a software application running oncomputing node 112 that communicates with the computing cluster manager ofserver 106.Node manager 602 controls the operation of thecomputing node 112, such as by passing tasks received fromserver 106 to thetask processor 604 for computation. An example ofnode manager 602 is the Node Manager software application of the MICROSOFT® Compute Cluster Pack. -
Computing nodes 112 need not be the same. For example, computingnodes 112 can be running different operating systems and include different hardware configurations, such as having processors of different speeds or different numbers of processors, etc. In addition, computingnodes 112 need not be located at the same physical location. For example, computingnodes 112 can be located in the same room or building, or may be remotely distributed around the world. -
Task processor 604 receives a task fromnode manager 602 and performs the assigned task. In one example embodiment,task processor 604 receives a task fromnode manager 602. Thetask processor 604 then requests a copy of the workbook fromdocument library 412 ofserver 106.Document library 412 returns the workbook totask processor 604. After opening the workbook,task processor 604 locates the input and output cells identified in the task. The output values are then calculated based on the formula of the output cell and the input cells referenced by the formula. Multiple calculations can be required by some tasks. - In some embodiments, computing
nodes 112 utilize a message passing interface (MPI) for communication withcomputing node 112. For example, MPICH2 can be used (which implements the MPI 2.0 standard). MPI is particularly useful for parallel processing, such as when computingnodes 112 include multiple processors. -
Task processor 604 utilizes one or more processing units (e.g., 202 shown inFIG. 2 ) to generate an output value based on the spreadsheet data received. For example, thetask processor 604 receives a copy ofworkbook 120, or a part ofworkbook 120, from the document library (e.g.,document library 512, shown inFIG. 5 ) of the spreadsheet server (e.g., 502, also shown inFIG. 5 ).Task processor 604 opens the workbook, and identifies the cells that have been assigned to the task.Task processor 604 then calculates the output values based on the input values and the mathematical formula. The results are then extracted from the workbook and communicated toserver 106.Server 106 receives the results, stores them indata store 514, and communicates the results toclient computing system 102. In one embodiment, the results are communicates as an XML document. -
FIG. 7 is a flow chart illustrating amethod 700 of operating a client computing system.Method 700 includesoperations Method 700 begins withoperation 702 during which a request is received to calculate a workbook with a computing cluster. For example, a user using a client computing system (e.g., 102) and running a spreadsheet application provides an input requesting that the workbook be calculated with the computing cluster. This input can take various forms, such as clicking a button (e.g., 302 or 304, shown inFIG. 3 ) of a user interface, pressing a button, selecting one or more keys from a keyboard (such as a keyboard shortcut), and the like. -
Operation 704 is then performed to determine whether the calculation is to be submitted now or to be scheduled for calculation at a later time. In some embodiments,operation 704 involves prompting the user. In other embodiments,operation 704 is performed by determining the type of input provided inoperation 702. For example, if button 302 (shown inFIG. 3 ) was selected, thenoperation 704 determines that the calculation is to be submitted now. If button 304 (shown inFIG. 5 ) was selected, thenoperation 704 determines that the calculation is to be scheduled for calculation at a later time. -
Operation 706 is then performed, during which the user is prompted to identify input cells and output cells from the workbook and the input is received. In some embodiments,operation 706 involves prompting the user to select the input cells, or to enter the range of input cells. The user then identifies those cells that are input cells. With reference toFIG. 3 , for example, the user selects or inputs cells A1-A10, B1-B10, C1-C10, and D1-D10. The user is then prompted to identify the output cells. With reference toFIG. 3 , for example, the user selects or inputs cells E1-E10. -
Operation 708 is then performed if the calculation is to be scheduled to prompt the user for a time to calculate the workbook. The user enters the date and/or time for calculation of the workbook. -
Operation 710 is then performed to generate and send a calculation request. In some embodiments,operation 710 involves the generation of a calculation request message that is sent toserver 106 to request calculation of the workbook. For example, a request message is generated in the form of an XML message. The request message includes an identification of the location of the workbook (such as withindocument library 512, shown inFIG. 5 ), a list of the input cells, and a list of the output cells. In some embodiments, the request message also includes an identification of the division of tasks within the workbook. The division of tasks is determined, for example, based on the number of nodes available, the resources available on each node (e.g., number of processors), and the number of input cells. In another possible embodiment, the request message includes the values of the input cells and the mathematical formulas of the output cells. In this way, the request message itself includes all data necessary for calculation of the workbook by the compute cluster. The request is then sent, such as across a network. - If the calculations are to be scheduled for a later time (as determined in operation 704), the request message also includes an identification of the time requested.
- After the request has been sent,
operation 712 is then performed to receive the results and update the workbook. In some embodiments,operation 712 is performed dynamically, such that the workbook is updated with the results as soon as the calculations are completed by the compute cluster. This enables the user to view the data as it becomes available, and to begin to evaluate the results even before all results have been returned. In other embodiments, the results are received and updated at the same time. Once the results have been received, they are stored in the workbook at the appropriate output cell location. -
FIG. 8 is a flow chart illustrating amethod 800 of operating a server.Method 800 includesoperations Operation 802 is first performed to receive a request to calculate a workbook across a compute cluster. An example of the request is described with respect tooperation 710 shown inFIG. 7 . -
Operation 804 is then performed to determine the availability of resources on the compute cluster. In some embodiments,operation 804 involves determining the number of computing nodes that are available on the compute cluster. Some embodiments additionally determine the resources available on each node, such as the speed of the processor, or the number of processors. In some embodiments,operation 804 is performed beforeoperation 804. -
Operation 806 is then performed to allocate and assign tasks to the computing cluster. For example, allocation is based upon the resources available in the computing cluster, as determined inoperation 804. The tasks are allocated based upon the resources available at each node to reduce the time required for calculation of the workbook. -
Operation 808 is then performed, during which the results are received. In one embodiment, the results are received from each node of the computing cluster as the calculations are completed. -
Operation 810 is then performed to send the results to the sender of the request. For example, the results are sent to a client computing system. In some embodiments, the results are sent dynamically as they are received to quickly update data in the workbook. In other embodiments, the data is sent at a single time after all calculations have been completed. - Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims.
Claims (20)
1. A computing system for controlling a calculation of a spreadsheet workbook, the computing system comprising:
a communication device for communicating across a communication network;
a processor communicatively connected to the communication device; and
memory storing program instructions, which when executed by the processor cause the computing system to:
define a spreadsheet workbook including spreadsheet data, the spreadsheet data defining formulas for calculation;
receive a user input requesting calculation of the formulas on a computing cluster including computing nodes;
send a request to calculate the spreadsheet workbook on the computing cluster, the request including an identification of the spreadsheet workbook; and
receive results of the calculation of the formulas.
2. The computing system of claim 1 , wherein the memory storing program instructions further causes the computing system to:
receive the spreadsheet workbook from the client computing system;
store the spreadsheet workbook in a data library after receipt; and
send the spreadsheet workbook from the data library to a computing node after receiving the request to calculate the spreadsheet workbook; and
wherein the instructions causing the computing system to receive the request to calculate the spreadsheet workbook further comprises causing the computing system to receive an identification of the location of the spreadsheet workbook in the digital library, an identification of input cell locations in the spreadsheet workbook, and an identification of output cell locations in the spreadsheet workbook.
3. The computing system of claim 2 , wherein receiving the spreadsheet workbook from the client computing system occurs before receiving the request to calculate the spreadsheet workbook.
4. The computing system of claim 1 , wherein allocating the tasks among the available computing nodes includes determining a number of processors on each of the available computing nodes, and dividing the tasks among the computing nodes based on the number of processors.
5. A computer readable storage medium containing computer executable instructions which when executed by a computer perform a method of calculating a spreadsheet workbook including spreadsheet data, the method comprising:
defining the spreadsheet workbook including the spreadsheet data, the spreadsheet data defining formulas for calculation;
receiving a user input requesting calculation of the formulas on a computing cluster including computing nodes;
sending a request to calculate the spreadsheet workbook on the computing cluster, the request including an identification of the spreadsheet workbook; and
receiving results of the calculation of the formulas.
6. The computer readable medium of claim 5 , the method further comprising sending the spreadsheet workbook including spreadsheet data to a data library for storage after defining the spreadsheet data.
7. The computer readable medium of claim 6 , wherein sending a message requesting calculation comprises sending a message including the identification of the input cells and the output cells in the spreadsheet workbook.
8. The computer readable medium of claim 7 , wherein sending the message requesting calculation does not include sending a copy of the spreadsheet workbook.
9. The computer readable medium of claim 5 , wherein receiving an input comprises detecting a selection of a button from a user interface.
10. The computer readable medium of claim 5 , wherein sending a message requesting calculation of output data further comprises sending a list of tasks to be performed by a computing cluster.
11. The computer readable medium of claim 5 , wherein receiving output data further comprises updating the spreadsheet workbook as output data is received.
12. The computer readable medium of claim 11 , wherein updating the spreadsheet workbook is performed dynamically to display output data as it is received.
13. The computer readable medium of claim 5 , the method further comprising:
determining that calculation of output data should be performed at a scheduled time;
prompting for the scheduled time;
receiving the scheduled time after prompting; and
wherein sending the message includes sending the scheduled time.
14. The computer readable medium of claim 13 , wherein receiving output data occurs after the scheduled time.
15. A method of calculating a spreadsheet workbook, the method comprising:
defining a spreadsheet workbook including spreadsheet data, the spreadsheet data defining formulas for calculation;
receiving a user input requesting calculation of the formulas on a computing cluster including computing nodes;
sending a request to calculate the spreadsheet workbook on the computing cluster, the request including an identification of the spreadsheet workbook; and
receiving results of the calculation of the formulas.
16. The method of claim 15 , further comprising storing the spreadsheet workbook in a remote data library after defining the spreadsheet workbook.
17. The method of claim 16 , wherein sending the request further comprises sending an identifier of a location of the spreadsheet workbook in the data library, an identification of a location input cells within the spreadsheet workbook, and an identification of a location of output cells within the spreadsheet workbook.
18. The method of claim 15 , wherein sending the request further comprises sending a copy of the spreadsheet workbook.
19. The method of claim 15 , further comprising sending the results of the calculation to a client computing system after receiving the results.
20. The method of claim 19 , wherein sending the results of the calculation occurs dynamically as each result is received.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/183,999 US20110276870A1 (en) | 2007-10-29 | 2011-07-15 | Calculation of spreadsheet data |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/927,014 US8006175B2 (en) | 2007-10-29 | 2007-10-29 | Calculation of spreadsheet data |
US13/183,999 US20110276870A1 (en) | 2007-10-29 | 2011-07-15 | Calculation of spreadsheet data |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/927,014 Continuation US8006175B2 (en) | 2007-10-29 | 2007-10-29 | Calculation of spreadsheet data |
Publications (1)
Publication Number | Publication Date |
---|---|
US20110276870A1 true US20110276870A1 (en) | 2011-11-10 |
Family
ID=40584483
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/927,014 Expired - Fee Related US8006175B2 (en) | 2007-10-29 | 2007-10-29 | Calculation of spreadsheet data |
US13/183,999 Abandoned US20110276870A1 (en) | 2007-10-29 | 2011-07-15 | Calculation of spreadsheet data |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/927,014 Expired - Fee Related US8006175B2 (en) | 2007-10-29 | 2007-10-29 | Calculation of spreadsheet data |
Country Status (1)
Country | Link |
---|---|
US (2) | US8006175B2 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110091844A1 (en) * | 2009-10-20 | 2011-04-21 | Best Roger J | Virtual book |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10223346B2 (en) * | 2011-01-25 | 2019-03-05 | Microsoft Technology Licensing, Llc | Hybrid client/network service application integration |
WO2013071485A1 (en) * | 2011-11-15 | 2013-05-23 | Intel Corporation | Scheduling thread execution based on thread affinity |
WO2015075700A1 (en) | 2013-11-25 | 2015-05-28 | First Resource Management Group Inc. | Apparatus for and method of forest-inventory management |
US9875226B1 (en) | 2013-12-20 | 2018-01-23 | Google Llc | Performing server-side and client-side operations on spreadsheets |
JP6127210B2 (en) * | 2014-05-27 | 2017-05-10 | 株式会社日立製作所 | Management system for managing information systems |
US9569418B2 (en) | 2014-06-27 | 2017-02-14 | International Busines Machines Corporation | Stream-enabled spreadsheet as a circuit |
US11416262B1 (en) * | 2018-05-22 | 2022-08-16 | Workday, Inc. | Systems and methods for improving computational speed of planning by enabling interactive processing in hypercubes |
EP4220473B1 (en) * | 2022-01-27 | 2024-05-29 | Tata Consultancy Services Limited | Method and system for validation of calculation code against calculation specification |
Citations (66)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4989141A (en) * | 1987-06-01 | 1991-01-29 | Corporate Class Software | Computer system for financial analyses and reporting |
US5023787A (en) * | 1988-02-01 | 1991-06-11 | Rainbird Sprinkler Mfg. Corp. | Irrigation control and flow management system |
US6040781A (en) * | 1998-05-26 | 2000-03-21 | Motorola | Event reminder for a communication device |
US6134563A (en) * | 1997-09-19 | 2000-10-17 | Modernsoft, Inc. | Creating and editing documents |
US6157934A (en) * | 1995-10-24 | 2000-12-05 | Ultimus, L.L.C. | Method and apparatus for using distributed spreadsheets in a client/server architecture for workflow automation |
US6226620B1 (en) * | 1996-06-11 | 2001-05-01 | Yeong Kuang Oon | Iterative problem solving technique |
US6272074B1 (en) * | 1993-09-23 | 2001-08-07 | Oracle Corporation | Method and apparatus for generating recurring events in a calendar/schedule system |
US20030050810A1 (en) * | 2001-09-07 | 2003-03-13 | Larkin William B. | Method of evaluating shipping costs using a benchmark cost |
US20030050826A1 (en) * | 2001-09-12 | 2003-03-13 | Cargille Brian D. | Graphical user interface for capacity-driven production planning tool |
US20030106040A1 (en) * | 2001-08-16 | 2003-06-05 | Rubin Michael H. | Parser, code generator, and data calculation and transformation engine for spreadsheet calculations |
US20030110191A1 (en) * | 2001-07-13 | 2003-06-12 | Robert Handsaker | System and method for efficiently and flexibly utilizing spreadsheet information |
US6609128B1 (en) * | 1999-07-30 | 2003-08-19 | Accenture Llp | Codes table framework design in an E-commerce architecture |
US20030174147A1 (en) * | 2001-08-13 | 2003-09-18 | David Jaffe | Device, system and method for simulating a physical system |
US20030226105A1 (en) * | 2002-05-29 | 2003-12-04 | Mattias Waldau | Method in connection with a spreadsheet program |
US6715008B2 (en) * | 1998-05-08 | 2004-03-30 | Fujitsu Ltd. | Method and system for over-run protection in a message passing multi-processor computer system using a credit-based protocol |
US20040122721A1 (en) * | 2002-12-18 | 2004-06-24 | Lasorsa Peter M. | Calendar travel time module |
US20040216114A1 (en) * | 2003-04-22 | 2004-10-28 | Lin Sheng Ling | Balancing loads among computing nodes |
US20040237030A1 (en) * | 2003-05-19 | 2004-11-25 | Malkin Wayne Allan | System and method of implementing calculation fields in an electronic form |
US20050102317A1 (en) * | 2000-07-21 | 2005-05-12 | Ali Kamarei | System and method for event calendaring using a customizable rules subset |
US20050131631A1 (en) * | 2003-12-10 | 2005-06-16 | Pioneer Corporation | Guiding device, system thereof, method thereof, program thereof and recording medium storing the program |
US20050268215A1 (en) * | 2004-06-01 | 2005-12-01 | Microsoft Corporation | Method and apparatus for viewing and interacting with a spreadsheet from within a web browser |
US20060015805A1 (en) * | 2004-07-16 | 2006-01-19 | Humenansky Brian S | Spreadsheet user-interface for an enterprise planning system having multi-dimensional data store |
US7065512B1 (en) * | 1999-02-08 | 2006-06-20 | Accenture, Llp | Dynamic toolbar in a tutorial system |
US20060136535A1 (en) * | 2004-12-20 | 2006-06-22 | Microsoft Corporation | Method, system, and computer-readable medium for determining whether to reproduce chart images calculated from a workbook |
US20060136808A1 (en) * | 2004-12-20 | 2006-06-22 | Microsoft Corporation | Block properties and calculated columns in a spreadsheet application |
US7080051B1 (en) * | 1993-11-04 | 2006-07-18 | Crawford Christopher M | Internet download systems and methods providing software to internet computer users for local execution |
US20060173973A1 (en) * | 2004-09-30 | 2006-08-03 | Martin Eigenbrodt | Systems and methods for mass printing |
US20060200772A1 (en) * | 2003-12-08 | 2006-09-07 | Sathiyamoorthy Dhanapal | Procedural computation engine for providing complex calculated data results to an object-oriented server system accessible to service clients and agents over a data packet network |
US20070011211A1 (en) * | 2005-02-14 | 2007-01-11 | Andrew Reeves | Auditing and tracking changes of data and code in spreadsheets and other documents |
US20070061698A1 (en) * | 2005-09-09 | 2007-03-15 | Mictosoft Corporation | Designating, setting and discovering parameters for spreadsheet documents |
US20070130503A1 (en) * | 2001-01-16 | 2007-06-07 | Voshell Perlie E | Systems and methods providing dynamic spreadsheet functionality |
US20070219847A1 (en) * | 2006-03-15 | 2007-09-20 | Kazimierz Ogonowski | Internet-based marketing and sales application and method for targeted marketing of a product and/or service |
US20070220415A1 (en) * | 2006-03-16 | 2007-09-20 | Morgan Mao Cheng | Excel spreadsheet parsing to share cells, formulas, tables or entire spreadsheets across an enterprise with other users |
US20070229583A1 (en) * | 2006-03-30 | 2007-10-04 | Brother Kogyo Kabushiki Kaisha | Algorithm for preliminary firing of ink droplets through inkjet nozzles prior to inkjet printing operation |
US20070244672A1 (en) * | 2003-11-03 | 2007-10-18 | Henrik Kjaer | Electronic Mathematical Model Builder |
US20070265896A1 (en) * | 2006-05-12 | 2007-11-15 | The Boeing Company | System for valuing multiple solutions in multiple value categories |
US20070277090A1 (en) * | 2003-07-24 | 2007-11-29 | Raja Ramkumar N | System and method for managing a spreadsheet |
US20080052137A1 (en) * | 2006-07-31 | 2008-02-28 | Richard Ziade | Apparatuses, Methods, and Systems For Providing A Risk Scoring Engine User Interface |
US20080091504A1 (en) * | 2006-10-11 | 2008-04-17 | International Business Machines Corporation | Electronic calendar auto event resolution system and method |
US7379908B2 (en) * | 1997-09-19 | 2008-05-27 | Modernsoft, Inc. | Populating cells of an electronic financial statement |
US20080229184A1 (en) * | 2007-03-15 | 2008-09-18 | Microsoft Corporation | Private sheets in shared spreadsheets |
US20080280588A1 (en) * | 2004-02-20 | 2008-11-13 | Brian Roundtree | User Interface Methods, Such as for Customer Self-Support on a Mobile Device |
US20080294713A1 (en) * | 1999-03-23 | 2008-11-27 | Saylor Michael J | System and method for management of an automatic olap report broadcast system |
US20090007101A1 (en) * | 2007-06-28 | 2009-01-01 | Microsoft Corporation | Optimal policies for load balancing for distributed and strategic agents (more technically, optimal coordination mechanisms for machine scheduling) |
US20090044090A1 (en) * | 2007-08-06 | 2009-02-12 | Apple Inc. | Referring to cells using header cell values |
US20090089067A1 (en) * | 2007-09-28 | 2009-04-02 | Microsoft Corporation | Spreadsheet workbook part libraries |
US7523395B1 (en) * | 2003-05-30 | 2009-04-21 | Oracle International Corporation | Web application generator for spreadsheet calculators |
US20090112990A1 (en) * | 2007-10-25 | 2009-04-30 | Microsoft Corporation | Private views of data and local calculations during real time collaboration |
US20090150426A1 (en) * | 2007-12-10 | 2009-06-11 | Modelsheet Software, Llc | Automatically generating formulas based on parameters of a model |
US20090172063A1 (en) * | 2007-12-26 | 2009-07-02 | Microsoft Corporation | Multi-Threaded Codeless User-Defined Functions |
US20090235154A1 (en) * | 2004-07-30 | 2009-09-17 | Microsoft Corporation | Method, system, and apparatus for providing access to workbook models through remote function calls |
US20090276482A1 (en) * | 2008-05-01 | 2009-11-05 | Microsoft Corporation | Automated offloading of user-defined functions to a high performance computing system |
US20100077331A1 (en) * | 2000-08-24 | 2010-03-25 | Xemplex Pty Ltd | Method of graphically defining a formula |
US7707009B2 (en) * | 2003-06-20 | 2010-04-27 | Smith International, Inc. | Drill bit performance analysis tool |
US20100121904A1 (en) * | 2008-11-11 | 2010-05-13 | Cray Inc. | Resource reservations in a multiprocessor computing environment |
US20100180220A1 (en) * | 2002-03-07 | 2010-07-15 | SAP America, Inc. | Method and System for Creating Graphical and Interactive Representations of Input and Output Data |
US20100235845A1 (en) * | 2006-07-21 | 2010-09-16 | Sony Computer Entertainment Inc. | Sub-task processor distribution scheduling |
US7881951B2 (en) * | 2003-12-30 | 2011-02-01 | Hartford Fire Insurance Company | System and method for computerized insurance rating |
US20110208996A1 (en) * | 2010-02-22 | 2011-08-25 | International Business Machines Corporation | Read-other protocol for maintaining parity coherency in a write-back distributed redundancy data storage system |
US20120015624A1 (en) * | 2005-10-11 | 2012-01-19 | Research In Motion Limited | System and method for organizing application indicators on an electronic device |
US20120045089A1 (en) * | 2000-03-24 | 2012-02-23 | Ramos Daniel O | Decoding a watermark and processing in response thereto |
US20120120434A1 (en) * | 2008-03-20 | 2012-05-17 | Angelo Caruso | Multiple processor print driver |
US20140075410A1 (en) * | 2006-09-07 | 2014-03-13 | Wolfram Alpha Llc | Methods and systems for determining a formula |
US20140289600A1 (en) * | 2003-04-18 | 2014-09-25 | International Business Machines Corporation | Manipulating of labelled data for data entry in management applications |
US20140359649A1 (en) * | 2009-11-11 | 2014-12-04 | Time Warner Cable Enterprises Llc | Methods and apparatus for audience data collection and analysis in a content delivery network |
US9311656B2 (en) * | 2002-05-23 | 2016-04-12 | Gula Consulting Limited Liability Company | Facilitating entry into an access-controlled location using a mobile communication device |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6009455A (en) | 1998-04-20 | 1999-12-28 | Doyle; John F. | Distributed computation utilizing idle networked computers |
US6651216B1 (en) * | 1999-05-10 | 2003-11-18 | Dave Sullivan | Efficiently navigating a workbook linked to a database |
US6898760B2 (en) * | 2001-01-05 | 2005-05-24 | Microsoft Corporation | Reporting status of external references in a spreadsheet without updating |
EP1461719A4 (en) | 2001-12-04 | 2007-11-07 | Powerllel Corp | Parallel computing system, method and architecture |
US7047252B2 (en) | 2003-12-02 | 2006-05-16 | Oracle International Corporation | Complex computation across heterogenous computer systems |
US8065178B2 (en) * | 2003-12-09 | 2011-11-22 | Siebel Systems, Inc. | Method and system for automatically generating forecasts |
US7533139B2 (en) | 2004-09-27 | 2009-05-12 | Microsoft Corporation | Method and system for multithread processing of spreadsheet chain calculations |
WO2006042153A2 (en) | 2004-10-06 | 2006-04-20 | Digipede Technologies, Llc | Distributed processing system |
US20060136277A1 (en) * | 2004-12-16 | 2006-06-22 | Perry Benetta N | Automatic generation of a globalization project schedule |
US7195150B2 (en) * | 2004-12-20 | 2007-03-27 | Microsoft Corporation | Real time data from server |
US7640490B2 (en) * | 2004-12-20 | 2009-12-29 | Microsoft Corporation | Method, system, and computer-readable medium for controlling the calculation of volatile functions in a spreadsheet |
US7877678B2 (en) * | 2005-08-29 | 2011-01-25 | Edgar Online, Inc. | System and method for rendering of financial data |
US7657571B2 (en) * | 2005-08-30 | 2010-02-02 | Microsoft Corporation | Electronic data snapshot generator |
US20070067204A1 (en) * | 2005-09-13 | 2007-03-22 | Scott Brown | Enterprise Economic Modeling |
WO2007038445A2 (en) | 2005-09-26 | 2007-04-05 | Advanced Cluster Systems, Llc | Clustered computer system |
US7908549B2 (en) * | 2005-12-08 | 2011-03-15 | Microsoft Corporation | Spreadsheet calculation as part of workflow |
US9501463B2 (en) * | 2005-12-08 | 2016-11-22 | Microsoft Technology Licensing, Llc | Spreadsheet cell-based notifications |
-
2007
- 2007-10-29 US US11/927,014 patent/US8006175B2/en not_active Expired - Fee Related
-
2011
- 2011-07-15 US US13/183,999 patent/US20110276870A1/en not_active Abandoned
Patent Citations (75)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4989141A (en) * | 1987-06-01 | 1991-01-29 | Corporate Class Software | Computer system for financial analyses and reporting |
US5023787A (en) * | 1988-02-01 | 1991-06-11 | Rainbird Sprinkler Mfg. Corp. | Irrigation control and flow management system |
US6272074B1 (en) * | 1993-09-23 | 2001-08-07 | Oracle Corporation | Method and apparatus for generating recurring events in a calendar/schedule system |
US7080051B1 (en) * | 1993-11-04 | 2006-07-18 | Crawford Christopher M | Internet download systems and methods providing software to internet computer users for local execution |
US6157934A (en) * | 1995-10-24 | 2000-12-05 | Ultimus, L.L.C. | Method and apparatus for using distributed spreadsheets in a client/server architecture for workflow automation |
US6226620B1 (en) * | 1996-06-11 | 2001-05-01 | Yeong Kuang Oon | Iterative problem solving technique |
US6134563A (en) * | 1997-09-19 | 2000-10-17 | Modernsoft, Inc. | Creating and editing documents |
US7379908B2 (en) * | 1997-09-19 | 2008-05-27 | Modernsoft, Inc. | Populating cells of an electronic financial statement |
US6715008B2 (en) * | 1998-05-08 | 2004-03-30 | Fujitsu Ltd. | Method and system for over-run protection in a message passing multi-processor computer system using a credit-based protocol |
US6040781A (en) * | 1998-05-26 | 2000-03-21 | Motorola | Event reminder for a communication device |
US7065512B1 (en) * | 1999-02-08 | 2006-06-20 | Accenture, Llp | Dynamic toolbar in a tutorial system |
US20080294713A1 (en) * | 1999-03-23 | 2008-11-27 | Saylor Michael J | System and method for management of an automatic olap report broadcast system |
US6609128B1 (en) * | 1999-07-30 | 2003-08-19 | Accenture Llp | Codes table framework design in an E-commerce architecture |
US20120045089A1 (en) * | 2000-03-24 | 2012-02-23 | Ramos Daniel O | Decoding a watermark and processing in response thereto |
US20050102317A1 (en) * | 2000-07-21 | 2005-05-12 | Ali Kamarei | System and method for event calendaring using a customizable rules subset |
US20100077331A1 (en) * | 2000-08-24 | 2010-03-25 | Xemplex Pty Ltd | Method of graphically defining a formula |
US20070130503A1 (en) * | 2001-01-16 | 2007-06-07 | Voshell Perlie E | Systems and methods providing dynamic spreadsheet functionality |
US20030110191A1 (en) * | 2001-07-13 | 2003-06-12 | Robert Handsaker | System and method for efficiently and flexibly utilizing spreadsheet information |
US20080034281A1 (en) * | 2001-07-13 | 2008-02-07 | Netview Technologies, Inc. | System and method for dynamic binding of a spreadsheet with external parameters |
US20110191665A1 (en) * | 2001-07-13 | 2011-08-04 | Robert Handsaker | System and method for dynamic data access in a spreadsheet with external parameters |
US20030174147A1 (en) * | 2001-08-13 | 2003-09-18 | David Jaffe | Device, system and method for simulating a physical system |
US20030106040A1 (en) * | 2001-08-16 | 2003-06-05 | Rubin Michael H. | Parser, code generator, and data calculation and transformation engine for spreadsheet calculations |
US7836425B2 (en) * | 2001-08-16 | 2010-11-16 | Knowledge Dynamics, Inc. | Parser, code generator, and data calculation and transformation engine for spreadsheet calculations |
US8656348B2 (en) * | 2001-08-16 | 2014-02-18 | Knowledge Dynamics, Inc. | Parser, code generator, and data calculation and transformation engine for spreadsheet calculations |
US20030050810A1 (en) * | 2001-09-07 | 2003-03-13 | Larkin William B. | Method of evaluating shipping costs using a benchmark cost |
US20030050826A1 (en) * | 2001-09-12 | 2003-03-13 | Cargille Brian D. | Graphical user interface for capacity-driven production planning tool |
US20100180220A1 (en) * | 2002-03-07 | 2010-07-15 | SAP America, Inc. | Method and System for Creating Graphical and Interactive Representations of Input and Output Data |
US9311656B2 (en) * | 2002-05-23 | 2016-04-12 | Gula Consulting Limited Liability Company | Facilitating entry into an access-controlled location using a mobile communication device |
US20030226105A1 (en) * | 2002-05-29 | 2003-12-04 | Mattias Waldau | Method in connection with a spreadsheet program |
US20040122721A1 (en) * | 2002-12-18 | 2004-06-24 | Lasorsa Peter M. | Calendar travel time module |
US20140289600A1 (en) * | 2003-04-18 | 2014-09-25 | International Business Machines Corporation | Manipulating of labelled data for data entry in management applications |
US20040216114A1 (en) * | 2003-04-22 | 2004-10-28 | Lin Sheng Ling | Balancing loads among computing nodes |
US20040237030A1 (en) * | 2003-05-19 | 2004-11-25 | Malkin Wayne Allan | System and method of implementing calculation fields in an electronic form |
US7523395B1 (en) * | 2003-05-30 | 2009-04-21 | Oracle International Corporation | Web application generator for spreadsheet calculators |
US7707009B2 (en) * | 2003-06-20 | 2010-04-27 | Smith International, Inc. | Drill bit performance analysis tool |
US20070277090A1 (en) * | 2003-07-24 | 2007-11-29 | Raja Ramkumar N | System and method for managing a spreadsheet |
US9465787B2 (en) * | 2003-11-03 | 2016-10-11 | Epista Software A/S | Electronic mathematical model builder |
US20070244672A1 (en) * | 2003-11-03 | 2007-10-18 | Henrik Kjaer | Electronic Mathematical Model Builder |
US20060200772A1 (en) * | 2003-12-08 | 2006-09-07 | Sathiyamoorthy Dhanapal | Procedural computation engine for providing complex calculated data results to an object-oriented server system accessible to service clients and agents over a data packet network |
US20050131631A1 (en) * | 2003-12-10 | 2005-06-16 | Pioneer Corporation | Guiding device, system thereof, method thereof, program thereof and recording medium storing the program |
US7881951B2 (en) * | 2003-12-30 | 2011-02-01 | Hartford Fire Insurance Company | System and method for computerized insurance rating |
US20080280588A1 (en) * | 2004-02-20 | 2008-11-13 | Brian Roundtree | User Interface Methods, Such as for Customer Self-Support on a Mobile Device |
US20050268215A1 (en) * | 2004-06-01 | 2005-12-01 | Microsoft Corporation | Method and apparatus for viewing and interacting with a spreadsheet from within a web browser |
US20060015805A1 (en) * | 2004-07-16 | 2006-01-19 | Humenansky Brian S | Spreadsheet user-interface for an enterprise planning system having multi-dimensional data store |
US20090235154A1 (en) * | 2004-07-30 | 2009-09-17 | Microsoft Corporation | Method, system, and apparatus for providing access to workbook models through remote function calls |
US20130013995A1 (en) * | 2004-07-30 | 2013-01-10 | Microsoft Corporation | Method, System, and Apparatus for Providing Access to Workbook Models Through Remote Function Calls |
US20060173973A1 (en) * | 2004-09-30 | 2006-08-03 | Martin Eigenbrodt | Systems and methods for mass printing |
US20060136535A1 (en) * | 2004-12-20 | 2006-06-22 | Microsoft Corporation | Method, system, and computer-readable medium for determining whether to reproduce chart images calculated from a workbook |
US20060136808A1 (en) * | 2004-12-20 | 2006-06-22 | Microsoft Corporation | Block properties and calculated columns in a spreadsheet application |
US20070011211A1 (en) * | 2005-02-14 | 2007-01-11 | Andrew Reeves | Auditing and tracking changes of data and code in spreadsheets and other documents |
US20070061698A1 (en) * | 2005-09-09 | 2007-03-15 | Mictosoft Corporation | Designating, setting and discovering parameters for spreadsheet documents |
US20120015624A1 (en) * | 2005-10-11 | 2012-01-19 | Research In Motion Limited | System and method for organizing application indicators on an electronic device |
US20070219847A1 (en) * | 2006-03-15 | 2007-09-20 | Kazimierz Ogonowski | Internet-based marketing and sales application and method for targeted marketing of a product and/or service |
US20070220415A1 (en) * | 2006-03-16 | 2007-09-20 | Morgan Mao Cheng | Excel spreadsheet parsing to share cells, formulas, tables or entire spreadsheets across an enterprise with other users |
US20070229583A1 (en) * | 2006-03-30 | 2007-10-04 | Brother Kogyo Kabushiki Kaisha | Algorithm for preliminary firing of ink droplets through inkjet nozzles prior to inkjet printing operation |
US20070265896A1 (en) * | 2006-05-12 | 2007-11-15 | The Boeing Company | System for valuing multiple solutions in multiple value categories |
US20100235845A1 (en) * | 2006-07-21 | 2010-09-16 | Sony Computer Entertainment Inc. | Sub-task processor distribution scheduling |
US20080052137A1 (en) * | 2006-07-31 | 2008-02-28 | Richard Ziade | Apparatuses, Methods, and Systems For Providing A Risk Scoring Engine User Interface |
US20140075410A1 (en) * | 2006-09-07 | 2014-03-13 | Wolfram Alpha Llc | Methods and systems for determining a formula |
US20080091504A1 (en) * | 2006-10-11 | 2008-04-17 | International Business Machines Corporation | Electronic calendar auto event resolution system and method |
US20080229184A1 (en) * | 2007-03-15 | 2008-09-18 | Microsoft Corporation | Private sheets in shared spreadsheets |
US20090007101A1 (en) * | 2007-06-28 | 2009-01-01 | Microsoft Corporation | Optimal policies for load balancing for distributed and strategic agents (more technically, optimal coordination mechanisms for machine scheduling) |
US20090044090A1 (en) * | 2007-08-06 | 2009-02-12 | Apple Inc. | Referring to cells using header cell values |
US20090089067A1 (en) * | 2007-09-28 | 2009-04-02 | Microsoft Corporation | Spreadsheet workbook part libraries |
US8190987B2 (en) * | 2007-10-25 | 2012-05-29 | Microsoft Corporation | Private views of data and local calculations during real time collaboration |
US20090112990A1 (en) * | 2007-10-25 | 2009-04-30 | Microsoft Corporation | Private views of data and local calculations during real time collaboration |
US8577704B2 (en) * | 2007-12-10 | 2013-11-05 | Modelsheet Software, Llc | Automatically generating formulas based on parameters of a model |
US20090150426A1 (en) * | 2007-12-10 | 2009-06-11 | Modelsheet Software, Llc | Automatically generating formulas based on parameters of a model |
US20090172063A1 (en) * | 2007-12-26 | 2009-07-02 | Microsoft Corporation | Multi-Threaded Codeless User-Defined Functions |
US20120120434A1 (en) * | 2008-03-20 | 2012-05-17 | Angelo Caruso | Multiple processor print driver |
US8223353B2 (en) * | 2008-03-20 | 2012-07-17 | Eastman Kodak Company | Multiple processor print driver |
US20090276482A1 (en) * | 2008-05-01 | 2009-11-05 | Microsoft Corporation | Automated offloading of user-defined functions to a high performance computing system |
US20100121904A1 (en) * | 2008-11-11 | 2010-05-13 | Cray Inc. | Resource reservations in a multiprocessor computing environment |
US20140359649A1 (en) * | 2009-11-11 | 2014-12-04 | Time Warner Cable Enterprises Llc | Methods and apparatus for audience data collection and analysis in a content delivery network |
US20110208996A1 (en) * | 2010-02-22 | 2011-08-25 | International Business Machines Corporation | Read-other protocol for maintaining parity coherency in a write-back distributed redundancy data storage system |
Non-Patent Citations (9)
Title |
---|
Buyya et al., Nimrod/G: An Architecture for a Resource Management and Scheduling System in a Global Computational Grid, IEEE 2000, pages 283-289. * |
Esposito et al., Integrating Concurrency Control and Distributed Data into Workflow Frameworks: An Actor Model Perspective, IEEE 2000, pages 2110-2114. * |
Fisher et al., Automated Test Case Generation for Spreadsheets, ACM 2002, pages 141-151. * |
Nadiminti et al., Spreadsheet Workload to Enterprise and Global Grids, Google 2004, pages 1-9. * |
Ng et al., Cluster and Node Architecture, Google 2000, pages 1-8. * |
Polychronopoulos et al., Processor Allocation for Horizontal and Vertical Parallelism and Related Speedup Bounds, IEEE 1987, pages 410-420. * |
Ronen et al., Spreadsheet Analysis and Design, ACM 1989, pages 84-93. * |
Topcouglu et al., Performance-Effective and Low-Complexity Task Scheduling for Heterogeneous Computing, IEEE 2002, pages 260-274. * |
Trankle et al., Expert System Architecture for Control System Design, IEEE 1988, pages 1163-1169. * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110091844A1 (en) * | 2009-10-20 | 2011-04-21 | Best Roger J | Virtual book |
Also Published As
Publication number | Publication date |
---|---|
US20090113284A1 (en) | 2009-04-30 |
US8006175B2 (en) | 2011-08-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20110276870A1 (en) | Calculation of spreadsheet data | |
US20190163928A1 (en) | System and method for managing enterprise data | |
US10521450B2 (en) | Distributed storage system with replica selection | |
Cunha et al. | Job placement advisor based on turnaround predictions for HPC hybrid clouds | |
US8620934B2 (en) | Systems and methods for selecting data elements, such as population members, from a data source | |
US20200106630A1 (en) | Method, apparatus, and computer program product for generating a predicted channel add object in a group-based communication system | |
US20100241990A1 (en) | Re-usable declarative workflow templates | |
Vinod et al. | Simulation-based metamodels for scheduling a dynamic job shop with sequence-dependent setup times | |
CN111324606B (en) | Data slicing method and device | |
US8396776B2 (en) | Dynamic calculations in an employee compensation system | |
US20200104340A1 (en) | A/b testing using quantile metrics | |
US10089285B2 (en) | Method to automatically convert proposal documents | |
Kou et al. | A topic-based reviewer assignment system | |
EP3866042A1 (en) | Adaptive differentially private count | |
CN104584008A (en) | Heuristic caching to personalize applications | |
US20130151547A1 (en) | Method and system for generating document recommendations | |
US11128635B2 (en) | System for controlling access to target systems and applications | |
CN113342418A (en) | Distributed machine learning task unloading method based on block chain | |
KR20180130733A (en) | System and method for recommending component reuse based on collaboration dependency | |
JP6987087B2 (en) | A system that controls access to multiple target systems and applications | |
Tippakoon et al. | External knowledge sourcing, knowledge management capacity and firms' innovation performance: evidence from manufacturing firms in Thailand | |
Alexopoulos et al. | SPSTS: A sequential procedure for estimating the steady-state mean using standardized time series | |
EP2755170A1 (en) | Data management system and tool | |
US20140237001A1 (en) | System And Method For Fast Identification Of Variable Roles During Initial Data Exploration | |
Almomani et al. | Selecting a good stochastic system for the large number of alternatives |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: MICROSOFT CORPORATION, WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:KULKARNI, SANJAY G.;WIERER, JEFFREY J.;XU, MINGQIANG;SIGNING DATES FROM 20071026 TO 20071029;REEL/FRAME:026600/0634 |
|
AS | Assignment |
Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC, WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MICROSOFT CORPORATION;REEL/FRAME:034544/0001 Effective date: 20141014 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |