Exported eager API TFE_* symbols in the dynamic library (#12785)
* Exported TFE_* symbols in the dynamic library. * Exported the eager API symbols for Windows too. * Added missing macros.
This commit is contained in:
parent
12a628a623
commit
4a24db2886
@ -20,6 +20,25 @@ limitations under the License.
|
||||
|
||||
#include "tensorflow/c/c_api.h"
|
||||
|
||||
// Macro to control visibility of exported symbols in the shared library (.so,
|
||||
// .dylib, .dll).
|
||||
// This duplicates the TF_EXPORT macro definition in
|
||||
// tensorflow/core/platform/macros.h in order to keep this .h file independent
|
||||
// of any other includes.$a
|
||||
#ifdef SWIG
|
||||
#define TF_CAPI_EXPORT
|
||||
#else
|
||||
#if defined(COMPILER_MSVC)
|
||||
#ifdef TF_COMPILE_LIBRARY
|
||||
#define TF_CAPI_EXPORT __declspec(dllexport)
|
||||
#else
|
||||
#define TF_CAPI_EXPORT __declspec(dllimport)
|
||||
#endif // TF_COMPILE_LIBRARY
|
||||
#else
|
||||
#define TF_CAPI_EXPORT __attribute__((visibility("default")))
|
||||
#endif // COMPILER_MSVC
|
||||
#endif // SWIG
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
@ -30,11 +49,11 @@ extern "C" {
|
||||
// TODO(ashankar): Merge with TF_Session?
|
||||
typedef struct TFE_Context TFE_Context;
|
||||
|
||||
extern TFE_Context* TFE_NewContext(const TF_SessionOptions* opts,
|
||||
TF_Status* status);
|
||||
extern void TFE_DeleteContext(TFE_Context* ctx, TF_Status* status);
|
||||
extern TF_DeviceList* TFE_ContextListDevices(TFE_Context* ctx,
|
||||
TF_Status* status);
|
||||
TF_CAPI_EXPORT extern TFE_Context* TFE_NewContext(const TF_SessionOptions* opts,
|
||||
TF_Status* status);
|
||||
TF_CAPI_EXPORT extern void TFE_DeleteContext(TFE_Context* ctx, TF_Status* status);
|
||||
TF_CAPI_EXPORT extern TF_DeviceList* TFE_ContextListDevices(TFE_Context* ctx,
|
||||
TF_Status* status);
|
||||
|
||||
// A handle to a tensor on a device.
|
||||
//
|
||||
@ -43,14 +62,15 @@ extern TF_DeviceList* TFE_ContextListDevices(TFE_Context* ctx,
|
||||
// placed in memory of different devices or remote address spaces.
|
||||
typedef struct TFE_TensorHandle TFE_TensorHandle;
|
||||
|
||||
extern TFE_TensorHandle* TFE_NewTensorHandle(TF_Tensor* t, TF_Status* status);
|
||||
extern void TFE_DeleteTensorHandle(TFE_TensorHandle* h);
|
||||
extern TF_DataType TFE_TensorHandleDataType(TFE_TensorHandle* h);
|
||||
extern int TFE_TensorHandleNumDims(TFE_TensorHandle* h);
|
||||
extern int64_t TFE_TensorHandleDim(TFE_TensorHandle* h, int dim_index);
|
||||
extern const char* TFE_TensorHandleDeviceName(TFE_TensorHandle* h);
|
||||
extern TF_Tensor* TFE_TensorHandleResolve(TFE_TensorHandle* h,
|
||||
TF_Status* status);
|
||||
TF_CAPI_EXPORT extern TFE_TensorHandle* TFE_NewTensorHandle(TF_Tensor* t,
|
||||
TF_Status* status);
|
||||
TF_CAPI_EXPORT extern void TFE_DeleteTensorHandle(TFE_TensorHandle* h);
|
||||
TF_CAPI_EXPORT extern TF_DataType TFE_TensorHandleDataType(TFE_TensorHandle* h);
|
||||
TF_CAPI_EXPORT extern int TFE_TensorHandleNumDims(TFE_TensorHandle* h);
|
||||
TF_CAPI_EXPORT extern int64_t TFE_TensorHandleDim(TFE_TensorHandle* h, int dim_index);
|
||||
TF_CAPI_EXPORT extern const char* TFE_TensorHandleDeviceName(TFE_TensorHandle* h);
|
||||
TF_CAPI_EXPORT extern TF_Tensor* TFE_TensorHandleResolve(TFE_TensorHandle* h,
|
||||
TF_Status* status);
|
||||
|
||||
// Create a new TFE_TensorHandle with the same contents as 'h' but placed
|
||||
// in the memory of the device name 'device_name'.
|
||||
@ -58,10 +78,10 @@ extern TF_Tensor* TFE_TensorHandleResolve(TFE_TensorHandle* h,
|
||||
// that shares the underlying buffer. Otherwise, it currently requires at least
|
||||
// one of the source or destination devices to be CPU (i.e., for the source or
|
||||
// destination tensor to be placed in host memory).
|
||||
extern TFE_TensorHandle* TFE_TensorHandleCopyToDevice(TFE_TensorHandle* h,
|
||||
TFE_Context* ctx,
|
||||
const char* device_name,
|
||||
TF_Status* status);
|
||||
TF_CAPI_EXPORT extern TFE_TensorHandle* TFE_TensorHandleCopyToDevice(TFE_TensorHandle* h,
|
||||
TFE_Context* ctx,
|
||||
const char* device_name,
|
||||
TF_Status* status);
|
||||
|
||||
// Description of the TensorFlow op to execute.
|
||||
//
|
||||
@ -76,49 +96,49 @@ extern TFE_TensorHandle* TFE_TensorHandleCopyToDevice(TFE_TensorHandle* h,
|
||||
// the additional sanity checks there seem unnecessary;
|
||||
typedef struct TFE_Op TFE_Op;
|
||||
|
||||
extern TFE_Op* TFE_NewOp(TFE_Context* ctx, const char* op_or_function_name,
|
||||
TF_Status* status);
|
||||
extern void TFE_DeleteOp(TFE_Op* op);
|
||||
TF_CAPI_EXPORT extern TFE_Op* TFE_NewOp(TFE_Context* ctx, const char* op_or_function_name,
|
||||
TF_Status* status);
|
||||
TF_CAPI_EXPORT extern void TFE_DeleteOp(TFE_Op* op);
|
||||
|
||||
// TODO(ashankar): TFE_OpSetDevice and TFE_Execute should not have a TFE_Context
|
||||
// parameter. Instead, the TFE_Context should be captured when creating the
|
||||
// TFE_Op.
|
||||
extern void TFE_OpSetDevice(TFE_Op* op, TFE_Context* ctx,
|
||||
const char* device_name, TF_Status* status);
|
||||
TF_CAPI_EXPORT extern void TFE_OpSetDevice(TFE_Op* op, TFE_Context* ctx,
|
||||
const char* device_name, TF_Status* status);
|
||||
|
||||
extern void TFE_OpAddInput(TFE_Op* op, TFE_TensorHandle* h, TF_Status* status);
|
||||
TF_CAPI_EXPORT extern void TFE_OpAddInput(TFE_Op* op, TFE_TensorHandle* h, TF_Status* status);
|
||||
|
||||
extern TF_AttrType TFE_OpGetAttrType(TFE_Op* op, const char* attr_name,
|
||||
unsigned char* is_list, TF_Status* status);
|
||||
TF_CAPI_EXPORT extern TF_AttrType TFE_OpGetAttrType(TFE_Op* op, const char* attr_name,
|
||||
unsigned char* is_list, TF_Status* status);
|
||||
|
||||
extern void TFE_OpSetAttrString(TFE_Op* op, const char* attr_name,
|
||||
const char* value);
|
||||
extern void TFE_OpSetAttrInt(TFE_Op* op, const char* attr_name, int64_t value);
|
||||
extern void TFE_OpSetAttrFloat(TFE_Op* op, const char* attr_name, float value);
|
||||
extern void TFE_OpSetAttrBool(TFE_Op* op, const char* attr_name,
|
||||
unsigned char value);
|
||||
extern void TFE_OpSetAttrType(TFE_Op* op, const char* attr_name,
|
||||
TF_DataType value);
|
||||
TF_CAPI_EXPORT extern void TFE_OpSetAttrString(TFE_Op* op, const char* attr_name,
|
||||
const char* value);
|
||||
TF_CAPI_EXPORT extern void TFE_OpSetAttrInt(TFE_Op* op, const char* attr_name, int64_t value);
|
||||
TF_CAPI_EXPORT extern void TFE_OpSetAttrFloat(TFE_Op* op, const char* attr_name, float value);
|
||||
TF_CAPI_EXPORT extern void TFE_OpSetAttrBool(TFE_Op* op, const char* attr_name,
|
||||
unsigned char value);
|
||||
TF_CAPI_EXPORT extern void TFE_OpSetAttrType(TFE_Op* op, const char* attr_name,
|
||||
TF_DataType value);
|
||||
// If the number of dimensions is unknown, `num_dims` must be set to
|
||||
// -1 and `dims` can be null. If a dimension is unknown, the
|
||||
// corresponding entry in the `dims` array must be -1.
|
||||
extern void TFE_OpSetAttrShape(TFE_Op* op, const char* attr_name,
|
||||
const int64_t* dims, const int num_dims,
|
||||
TF_Status* out_status);
|
||||
TF_CAPI_EXPORT extern void TFE_OpSetAttrShape(TFE_Op* op, const char* attr_name,
|
||||
const int64_t* dims, const int num_dims,
|
||||
TF_Status* out_status);
|
||||
|
||||
extern void TFE_OpSetAttrStringList(TFE_Op* op, const char* attr_name,
|
||||
const char** value, int num_values);
|
||||
extern void TFE_OpSetAttrIntList(TFE_Op* op, const char* attr_name,
|
||||
const int64_t* values, int num_values);
|
||||
extern void TFE_OpSetAttrFloatList(TFE_Op* op, const char* attr_name,
|
||||
const float* values, int num_values);
|
||||
extern void TFE_OpSetAttrBoolList(TFE_Op* op, const char* attr_name,
|
||||
const unsigned char* values, int num_values);
|
||||
extern void TFE_OpSetAttrTypeList(TFE_Op* op, const char* attr_name,
|
||||
const TF_DataType* values, int num_values);
|
||||
extern void TFE_OpSetAttrShapeList(TFE_Op* op, const char* attr_name,
|
||||
const int64_t** dims, const int* num_dims,
|
||||
int num_values, TF_Status* out_status);
|
||||
TF_CAPI_EXPORT extern void TFE_OpSetAttrStringList(TFE_Op* op, const char* attr_name,
|
||||
const char** value, int num_values);
|
||||
TF_CAPI_EXPORT extern void TFE_OpSetAttrIntList(TFE_Op* op, const char* attr_name,
|
||||
const int64_t* values, int num_values);
|
||||
TF_CAPI_EXPORT extern void TFE_OpSetAttrFloatList(TFE_Op* op, const char* attr_name,
|
||||
const float* values, int num_values);
|
||||
TF_CAPI_EXPORT extern void TFE_OpSetAttrBoolList(TFE_Op* op, const char* attr_name,
|
||||
const unsigned char* values, int num_values);
|
||||
TF_CAPI_EXPORT extern void TFE_OpSetAttrTypeList(TFE_Op* op, const char* attr_name,
|
||||
const TF_DataType* values, int num_values);
|
||||
TF_CAPI_EXPORT extern void TFE_OpSetAttrShapeList(TFE_Op* op, const char* attr_name,
|
||||
const int64_t** dims, const int* num_dims,
|
||||
int num_values, TF_Status* out_status);
|
||||
|
||||
// Execute the operation defined by 'op' and return handles to computed
|
||||
// tensors in 'retvals'.
|
||||
@ -128,14 +148,14 @@ extern void TFE_OpSetAttrShapeList(TFE_Op* op, const char* attr_name,
|
||||
//
|
||||
// On return, 'num_retvals' will be set to the actual number of outputs
|
||||
// returned by the operation.
|
||||
extern void TFE_Execute(TFE_Op* op, TFE_TensorHandle** retvals,
|
||||
int* num_retvals, TF_Status* status);
|
||||
TF_CAPI_EXPORT extern void TFE_Execute(TFE_Op* op, TFE_TensorHandle** retvals,
|
||||
int* num_retvals, TF_Status* status);
|
||||
|
||||
// Add a function (serialized FunctionDef protocol buffer) to ctx so
|
||||
// that it can be invoked using TFE_Execute.
|
||||
extern void TFE_ContextAddFunctionDef(TFE_Context* ctx,
|
||||
const char* serialized_function_def,
|
||||
size_t size, TF_Status* status);
|
||||
TF_CAPI_EXPORT extern void TFE_ContextAddFunctionDef(TFE_Context* ctx,
|
||||
const char* serialized_function_def,
|
||||
size_t size, TF_Status* status);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* end extern "C" */
|
||||
|
@ -2,6 +2,7 @@ VERS_1.0 {
|
||||
# Export symbols in c_api.h.
|
||||
global:
|
||||
TF_*;
|
||||
TFE_*;
|
||||
|
||||
# Hide everything else.
|
||||
local:
|
||||
|
@ -2,4 +2,5 @@
|
||||
*perftools*gputools*
|
||||
*tf_*
|
||||
TF_*
|
||||
TFE_*
|
||||
*nsync_*
|
||||
|
@ -3,6 +3,7 @@ tensorflow {
|
||||
*tensorflow*;
|
||||
*perftools*gputools*;
|
||||
TF_*;
|
||||
TFE_*;
|
||||
*nsync_*;
|
||||
local:
|
||||
*;
|
||||
|
Loading…
Reference in New Issue
Block a user