docs/release-3-6-0.html
| | Taskflow: A General-purpose Task-parallel Programming System |
Loading...
Searching...
No Matches
Release 3.6.0 (2023/05/07)
Taskflow 3.6.0 is the 7th release in the 3.x line! This release includes several new changes, such as dynamic task graph parallelism, improved parallel algorithms, modified GPU tasking interface, documentation, examples, and unit tests.
Taskflow 3.6.0 can be downloaded from here.
To use Taskflow v3.6.0, you need a compiler that supports C++17:
Taskflow works on Linux, Windows, and Mac OS X.
This release contains several changes to largely enhance the programmability of GPU tasking and standard parallel algorithms. More importantly, we have introduced a new dependent asynchronous tasking model that offers great flexibility for expressing dynamic task graph parallelism.
Added new async methods to support dynamic task graph creation
Added new async and join methods to tf::Runtime
Added a new partitioner interface to optimize parallel algorithms
Added parallel-scan algorithms to Taskflow
Added parallel-find algorithms to Taskflow
Modified tf::Subflow as a derived class from tf::Runtime
Extended parallel algorithms to support different partitioning algorithms
Improved the performance of tf::Taskflow::sort for plain-old-data (POD) type
MAX_PRIORITY wtih winspool.h (#459)If you encounter any potential bugs, please submit an issue at issue tracker.
// previous - no longer supported
tf::Future<int> fu = executor.async({
return 1;
});
fu.cancel();
std::optional<int> res = fu.get(); // res may be std::nullopt or 1
// now - use std::future instead
std::future<int> fu = executor.async({
return 1;
});
int res = fu.get();
class to access the result of an execution
Definition taskflow.hpp:630
bool cancel()
cancels the execution of the running taskflow associated with this future object
Definition taskflow.hpp:721
// previous - no longer supported
taskflow.emplace([](tf::cudaFlow& cf){
cf.offload();
});
// now - user to fully control tf::cudaFlow for maximum flexibility
tf::cudaFlow cf;
// offload the cudaflow asynchronously through a stream
tf::cudaStream stream;
cf.run(stream);
// wait for the cudaflow completes
stream.synchronize();
});
tf::cudaStreamBase::synchronize
cudaStreamBase & synchronize()
synchronizes the associated stream
Definition cuda_stream.hpp:232
cudaStreamBase< cudaStreamCreator, cudaStreamDeleter > cudaStream
default smart pointer type to manage a cudaStream_t object with unique ownership
Definition cuda_stream.hpp:340
// previous - now longer supported
taskflow.emplace([](tf::cudaFlowCapturer& cf){
cf.offload();
});
// now - user to fully control tf::cudaFlowCapturer for maximum flexibility
tf::cudaFlowCapturer cf;
// offload the cudaflow asynchronously through a stream
tf::cudaStream stream;
cf.run(stream);
// wait for the cudaflow completes
stream.synchronize();
});
cudaStreamBase & run(const cudaGraphExecBase< C, D > &exec)
runs the given executable CUDA graph
Dropped in-place support for running tf::syclFlow from a dedicated task
Move all buffer query methods of CUDA standard algorithms inside execution policy
// previous - no longer supported
tf::cuda_reduce_buffer_size<tf::cudaDefaultExecutionPolicy, int>(N);
// now (and similarly for other parallel algorithms)
tf::cudaDefaultExecutionPolicy policy(stream);
policy.reduce_bufsz<int>(N);
// previous - async allows passing arguments to the callable
executor.async([](int i){ std::cout << i << std::endl; }, 4);
// now - users are responsible of wrapping the arumgnets into a callable
executor.async([i=4]( std::cout << i << std::endl; ){});
named_async with an overload that takes the name string on the first argument// previous - explicitly calling named_async to assign a name to an async task
executor.named_async("name", {});
// now - overlaod
Revised Request Cancellation to remove support of cancelling async tasks
Revised Asynchronous Tasking to include asynchronous tasking from tf::Runtime
Revised Taskflow algorithms to include execution policy
Added Parallel Scan
We have published Taskflow in the following venues:
Please do not hesitate to contact Dr. Tsung-Wei Huang if you intend to collaborate with us on using Taskflow in your scientific computing projects.