Dependency-aware server processing of dataflow applications
A computer implemented method comprises a server processing work requests of a work requester. The work requester can communicate to the server a processing dependency of one work request on a second work request. The server can associate the dependency with the work requests and/or a queue of work requests. The dependency include a condition to be met in association with processing the work requests, and the condition can include an action for the server to take in association with processing a work request. A computing system can comprise a work requester, a server, and a set of dependency-aware queues for processing a set of work requests. A queue and/or work requests on the queues can be associated with a processing dependency and the server can process work requests enqueued to the queues in an order based on the dependencies. A work requester/server interface can comprise a dependency framework.
1 . A computer-implemented method comprising:
receiving, by a dependency-aware (DA) server comprising one or more reconfigurable processors, a first work request from a first DA queue among a plurality of work requests enqueued among a plurality of DA queues, wherein:
the plurality of DA queues are configured for execution on the one or more reconfigurable processors,
the plurality of work requests comprise functions of an application to be executed by the one or more reconfigurable processors on the DA server,
the first DA queue is associated with a processing dependency associated with processing the first work request,
processing a second work request is dependent upon a processing condition included in the processing dependency, and
the second work request is enqueued in a second DA queue among the plurality of DA queues;
responsive to the processing condition not being met, the DA server:
deferring processing of the second work request on the one or more reconfigurable processors;
while deferring processing of the second work request, receiving a third work request enqueued in the second DA queue;
and
responsive to the third work request not being dependent upon the processing condition, processing the third work request, wherein processing the third request causes the processing condition to be met; and
responsive to the processing condition being met:
processing the second work request;
setting a value representing null data of a record of the processing condition; and
performing a conditioned action associated with the processing condition and a concurrency primitive, wherein:
the processing condition comprises a first DA queue identifier of the first DA queue,
the first DA queue identifier comprises an ordinal number and a memory address of the first DA queue, and
a second DA queue identifier of the second DA queue is based on the first DA queue identifier and a multiple of a stride.
2 . The method of claim 1 , further comprising:
receiving, by the DA server, from a work requester communicatively coupled to the DA server, the plurality of work requests;
receiving, by the DA server, from the work requester, processing dependencies associated with the plurality of work requests, the processing dependency included among the processing dependencies associated with the plurality of work requests; and;
responsive to the DA server receiving the processing dependencies, the DA server registering the processing dependency in association with the first DA queue.
3 . The method of claim 1 , wherein the processing dependency comprises the conditioned action associated with the processing of the first work request; and
wherein the DA server processing the first work request comprises the DA server performing the conditioned action.
4 . The method of claim 3 , wherein the conditioned action is associated with the concurrency primitive; and
wherein the DA server performing the conditioned action comprises the DA server performing an operation associated with the concurrency primitive.
5 . The method of claim 1 , wherein the processing dependency comprises a dependency relationship selected from a group consisting of a request-to-request dependency, a request-to-queue dependency, and a queue-to-queue dependency.
6 . The method of claim 1 , wherein the DA server is communicatively coupled to a work requester;
wherein the processing dependency is included in a DA framework of a computing system comprising the DA server and a work requester; and
wherein the method further comprises the DA server receiving at least one of the first work request and the processing dependency from the work requester via an interface of the DA framework.
7 . The method of claim 1 , wherein the processing dependency comprises a dependency parameter selected from a group consisting of: a work request identifier of at least one of the first work request and a conditioned work request upon which the first work request is dependent, a DA queue identifier of at least one of the first DA queue and a conditioned DA queue upon which the first work request is dependent, a condition for processing the first work request, the conditioned action, and the concurrency primitive.
8 . The method of claim 1 , wherein the first DA queue is included, at least in part, in a memory of the DA server.
9 . The method of claim 1 , wherein the first DA queue is included, at least in part, in a memory of the requester.
10 . The method of claim 1 , wherein the DA server is included in a reconfigurable dataflow system.
11 . The method of claim 1 , wherein the DA server comprises a reconfigurable dataflow unit included in a reconfigurable dataflow system.
12 . A computing system comprising:
a plurality of dependency-aware (DA) queues;
a DA server comprising one or more reconfigurable processors; and
a plurality of work requests enqueued among the plurality of DA queues, wherein:
the plurality of DA queues are configured for execution on the one or more reconfigurable processors,
the plurality of work requests comprise functions of an application to execute by the DA server, and
the DA server is configured to:
receive a first work request from a first DA queue among the plurality of work requests enqueued among the plurality of DA queues, wherein:
the plurality of work requests comprise functions of an application to be executed by the one or more reconfigurable processors,
the first DA queue is associated with a processing dependency associated with processing the first work request,
processing a second work request is dependent upon a processing condition included in the processing dependency, and
the second work request is enqueued in a second DA queue among the plurality of DA queues;
responsive to the processing condition has not been being met:
defer processing of the second work request on the one or more reconfigurable processors;
while deferring processing of the second work request, receive a third work request enqueued in the second DA queue;
and
responsive to determining that processing the third work request not being dependent upon the processing condition, process the third work request, wherein processing the third request causes the processing condition to be met; and
responsive to the processing condition being met:
processing the second work request;
setting a value representing null data of a record of the processing condition; and
performing a conditioned action associated with the processing condition and a concurrency primitive, wherein:
the processing condition comprises a first DA queue identifier of the first DA queue,
the first DA queue identifier comprises an ordinal number and a memory address of the first DA queue, and
a second DA queue identifier of the second DA queue is based on the first DA queue identifier and a multiple of a stride.
13 . The computing system of claim 12 , wherein the DA server is further configured to:
receive, from a work requester communicatively coupled to the DA server, the plurality of work requests;
receive, from the work requester, processing dependencies associated with the plurality of work requests, the processing dependency included among the processing dependencies associated with the plurality of work requests; and
responsive to the receiving the processing dependencies, register the processing dependency, in association with the first DA queue.
14 . The computing system of claim 12 , wherein the processing dependency comprises the conditioned action associated with the DA server processing the first work request; and
wherein the DA server configured to process first work request comprises the DA server further configured to perform the conditioned action.
15 . The computing system of claim 14 , wherein the conditioned action is associated with the concurrency primitive; and
wherein the DA server configured to perform the conditioned action comprises the DA server further configured to perform an operation associated with the concurrency primitive.
16 . The computing system of claim 12 , wherein the processing dependency comprises a dependency relationship selected from a group consisting of a request-to-request dependency, a request-to-queue dependency, and a queue-to-queue dependency.
17 . The computing system of claim 12 , wherein the processing dependency associated with the first DA queue comprises a dependency parameter of the processing dependency;
wherein the DA server is further configured to record the dependency parameter in a dependency structure associated with the first DA queue; and
wherein processing the second work request is dependent upon the processing condition based on the dependency parameter recorded in the dependency structure.
18 . The computing system of claim 12 , wherein the processing dependency associated with the first DA queue comprises a dependency parameter of the processing dependency selected from a group consisting of: a work request identifier of at least one of a dependent work request and a conditioned work request, a DA queue identifier of at least one of a dependent DA queue and a conditioned DA queue, a condition for processing the dependent work request, the conditioned action, and the concurrency primitive.
19 . The computing system of claim 12 , wherein the system further comprises a reconfigurable dataflow system.
20 . The computing system of claim 12 , wherein the processor comprises a reconfigurable dataflow unit included in a reconfigurable dataflow system.
21 . The computing system of claim 12 , wherein the DA server comprises a DA worker; and
wherein the DA worker is configured to process at least one of the first DA queue and the first work request.
22 . The computing system of claim 12 , wherein the DA server comprises a process executable on a reconfigurable dataflow unit included in a reconfigurable dataflow system.
23 . The computing system of claim 12 , wherein the system further comprises a DA framework;
wherein the DA server is communicatively coupled to a work requester;
wherein the processing dependency is included in the DA framework; and
wherein the DA server is further configured to receive at least one of the first work request and the processing dependency from the work requester via an interface of the DA framework.
24 . A computer program product comprising a computer readable storage medium having program instructions embodied therewith, wherein the program instructions are executable by at least one processor of a computing system to cause the at least one processor to:
receive a first work request from a first DA queue among a plurality of work requests enqueued among a plurality of DA queues, wherein:
the plurality of work requests comprise functions of an application to be processed by the at least one processor,
the first DA queue is associated with a processing dependency associated with processing the first work request,
processing a second work request is dependent upon a processing condition included in the processing dependency, and
the second work request is enqueued in a second DA queue among the plurality of DA queues;
based on the processing condition not being met:
defer processing, by the at least one processor, of the second work request;
while deferring processing of the second work request, receive a third work request enqueued in the second DA queue;
and
responsive to the third work request not being dependent upon the processing condition, process by the at least one processor, the third work request, wherein processing the third request causes the processing condition to be met; and
responsive to the processing condition being met:
process the second work request;
set a value representing null data of a record of the processing condition; and
perform a conditioned action associated with the processing condition and a concurrency primitive, wherein:
the processing condition comprises a first DA queue identifier of the first DA queue,
the first DA queue identifier comprises an ordinal number and a memory address of the first DA queue, and
a second DA queue identifier of the second DA queue is based on the first DA queue identifier and a multiple of a stride.
25 . The computer program product of claim 24 , the program instructions executable by the at least one processor further comprising instructions executable by the at least one processor to:
receive, from a work requester communicatively coupled to the at least one processor, the plurality of work requests;
receive, from the work requester, processing dependencies associated with the plurality of work requests, the processing dependency included among the processing dependencies associated with the plurality of work requests; and
responsive to the receiving the processing dependencies, register, in association with the first DA queue, the processing dependency.
26 . The computer program product of claim 24 , the program instructions executable by the at least one processor further comprising instructions executable by the at least one processor to cause the at least one processor to enqueue the first work request to the first DA queue.
27 . The computer program product of claim 24 , wherein the at least one processor is included in a DA server; and
wherein the program instructions executable by the at least one processor further comprise program instructions included in a program of the DA server.
28 . The computer program product of claim 24 , wherein the at least one processor is included in a work requester; and
wherein the program instructions executable by the at least one processor further comprise program instructions included in a program of the work requester.