pytorch源码解析-动态接口宏

Posted longriyao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pytorch源码解析-动态接口宏相关的知识,希望对你有一定的参考价值。

动态库接口定义:
	gcc:
		定义在动态库的显示属性:
			作用对象: 	函数、变量、模板以及C++类
			default:	表示在动态库内可见
			hidden:		表示不可见
		#define EXPORT __attribute__((__visibility__("default")))
	微软:
		#define C10_EXPORT __declspec(dllexport)	 制作dll时候用
		#define C10_IMPORT __declspec(dllimport)	 调用dll时候用
			放到同一个api 头文件中	
			当编译的时候用export
			调用的时候用 import 

	通常用法:
		class API Tensor {};

	常用方法:
	#ifdef _WIN32
		#windows编译
		#if defined(C10_BUILD_SHARED_LIBS)		#如果定义动态库
			#define C10_EXPORT __declspec(dllexport)
			#define C10_IMPORT __declspec(dllimport)
		#else
			#define C10_EXPORT
			#define C10_IMPORT
		#endif
	#else // _WIN32
		#if defined(__GNUC__)
			#define C10_EXPORT __attribute__((__visibility__("default")))
		#else // defined(__GNUC__)
			#define C10_EXPORT
			#endif // defined(__GNUC__)
		#define C10_IMPORT C10_EXPORT
	#endif // _WIN32


	#ifdef BUILD_MAIN_LIB			#编译的时候 这个有定义   调用的时候没有定义
		#define API C10_EXPORT
	#else
		#define API C10_IMPORT
	#endif

	真正使用的时候使用: API 便可

 

以上是关于pytorch源码解析-动态接口宏的主要内容,如果未能解决你的问题,请参考以下文章

追踪解析 jdk Proxy 源码

java动态代理源码解析

[源码解析] PyTorch 分布式之弹性训练---Rendezvous 引擎

[源码解析] PyTorch 分布式 ----- DistributedDataParallel 之进程组

字节码JVM CPU Profiler技术原理及源码深度解析

Pytorch1.3源码解析-第一篇