Data Sources#
This section describes the types related to the data source concept.
Read#
Read operation is a function that transforms a data source and other arguments represented via an args object to a result object. The operation is responsible for:
Executing all of the data retrieval and transformation routines of the data source.
Passing a SYCL* queue to the data retrieval and transformation routines.
Read operation definition#
The following code sample shows the declaration for a read operation.
namespace oneapi::dal {
template <typename Object, typename DataSource>
using read_args_t = /* implementation defined */;
template <typename Object, typename DataSource>
using read_result_t = Object;
template <typename Object, typename DataSource>
read_result_t<Object, DataSource> read(
sycl::queue& queue,
const DataSource& data_source,
const read_args_t<Object, DataSource>& args);
} // namespace oneapi::dal
Each operation shall satisfy the following requirements:
An operation shall accept three parameters in the following order:
The SYCL* queue object.
The data source.
The args object.
An operation shall return the result object.
The
read_args_t
andread_result_t
alias templates shall be used for inference of the args and return types.
Read operation shortcuts#
In order to make the code on user side less verbose, oneDAL defines the following overloaded functions called shortcuts for a read operation in addition to the general one described in section Read operation definition.
A shortcut for execution on host. Performs the same operation as the general function on host, but does not require passing the queue explicitly.
template <typename Object, typename DataSource> read_result_t<Object, DataSource> read( const DataSource& data_source, const read_args_t<Object, DataSource>& args);
A shortcut that allows omitting explicit args creation.
template <typename Object, typename DataSource, typename... Args> read_result_t<Object, DataSource> read( sycl::queue& queue, const DataSource& data_source, Args&&... args);
A shortcut that allows omitting explicit queue and args creation. This is a combination of two previous shortcuts.
template <typename Object, typename DataSource, typename... Args> read_result_t<Object, DataSource> read( const DataSource& data_source, Args&&... args);
Args#
The string
%DATA_SOURCE%
should be substituted with the name of the data source, for example,csv
.%PROPERTY_NAME%
and%PROPERTY_TYPE%
should be substituted with the name and the type of one of the data source args properties.
namespace oneapi::dal::%DATA_SOURCE% {
template <typename Object, typename DataSource>
class read_args {
public:
read_args(
const %PROPERTY_TYPE_1%& property_name_1,
const %PROPERTY_TYPE_2%& property_name_2,
/* more properties */
)
/* Getter & Setter for the property called `%PROPERTY_NAME_1%` */
descriptor& set_%PROPERTY_NAME_1%(%PROPERTY_TYPE_1% value);
%PROPERTY_TYPE_1% get_%PROPERTY_NAME_1%() const;
/* Getter & Setter for the property called `%PROPERTY_NAME_2%` */
descriptor& set_%PROPERTY_NAME_2%(%PROPERTY_TYPE_2% value);
%PROPERTY_TYPE_2% get_%PROPERTY_NAME_2%() const;
/* more properties */
};
} // namespace oneapi::dal::%DATA_SOURCE%
Result#
The result of a read operation is an instance of an in-memory object
with Object
type.