| 
	
     
	 | 
	
     
		
		
		
			
	
	
		
				 
				 | 
		Efficient computation of derivatives for solving optimization problems in R and Python using SWIG-generated interfaces to ADOL-C-
		Article in a journal
				 - |   |  
	  |  
								Author(s)  
					Kshitij Kulshreshtha
					, Sri Hari Krishna Narayanan
					, Julie Bessac
					, Kaitlyn MacIntyre
				  |  
							
		Published in  Special issue of Optimization Methods & Software: Advances in Algorithmic Differentiation
Optimization Methods & Software  |  
							
		Editor(s)  Bruce Christianson, Shaun A. Forth, Andreas Griewank  |  
										
		Year  2018  |  
							
		Publisher  Taylor & Francis  |  
							
		Abstract  Scripting languages are gaining acceptance because of their ease of use and value for rapid prototyping in many fields, including machine learning and statistics. In the context of algorithmic differentiation, however, the main development effort continues to be concentrated on traditional compiled languages such as Fortran and C/C++, whether source transformation tools or operator overloading tools. There is therefore a need for ad tools for computing derivatives efficiently within scripting languages. ADOL-C is an operator overloading-based C++ library that provides accurate first- and higher order derivatives for applications in C++. SWIG is a preprocessor that uses the C/C++ header files to wrap the API of a library to be callable from scripting languages such as R and Python and several other high-level programming languages. Although every language has its caveats, the overall process of making the C/C++ API available via SWIG is the same for all scripting languages. After an initial effort required per language, because SWIG is an automated interface generator based on the library's actual header files, only minimal effort is required to maintain the scripting interface in sync with upstream developments in the original C/C++ library. In addition to achieving our original goal of creating an interface for R, we were able to generate an interface for Python that proved an order of magnitude faster than the previously implemented interface. This paper gives an overview of the interface generation process, the challenges we encountered with both scripting languages and some numerical results to demonstrate both usefulness and efficiency.  |  
							
		Cross-References  Christianson2018Sio  |  
																
	
		BibTeX 
		@ARTICLE{ 
         Kulshreshtha2018Eco, 
       crossref = "Christianson2018Sio", 
       author = "Kshitij Kulshreshtha and Narayanan, Sri Hari Krishna and Julie Bessac and Kaitlyn 
         MacIntyre", 
       title = "Efficient computation of derivatives for solving optimization problems in {R} and 
         {P}ython using {SWIG}-generated interfaces to {ADOL-C}", 
       journal = "Optimization Methods \& Software", 
       volume = "33", 
       number = "4--6", 
       pages = "1173--1191", 
       year = "2018", 
       publisher = "Taylor \& Francis", 
       doi = "10.1080/10556788.2018.1425861", 
       url = "https://doi.org/10.1080/10556788.2018.1425861", 
       eprint = "https://doi.org/10.1080/10556788.2018.1425861", 
       abstract = "Scripting languages are gaining acceptance because of their ease of use and value 
         for rapid prototyping in many fields, including machine learning and statistics. In the context of 
         algorithmic differentiation, however, the main development effort continues to be concentrated on 
         traditional compiled languages such as Fortran and C/C++, whether source transformation tools or 
         operator overloading tools. There is therefore a need for AD tools for computing derivatives 
         efficiently within scripting languages. ADOL-C is an operator overloading-based C++ library that 
         provides accurate first- and higher order derivatives for applications in C++. SWIG is a 
         preprocessor that uses the C/C++ header files to wrap the API of a library to be callable from 
         scripting languages such as R and Python and several other high-level programming languages. 
         Although every language has its caveats, the overall process of making the C/C++ API available via 
         SWIG is the same for all scripting languages. After an initial effort required per language, because 
         SWIG is an automated interface generator based on the library's actual header files, only 
         minimal effort is required to maintain the scripting interface in sync with upstream developments in 
         the original C/C++ library. In addition to achieving our original goal of creating an interface for 
         R, we were able to generate an interface for Python that proved an order of magnitude faster than 
         the previously implemented interface. This paper gives an overview of the interface generation 
         process, the challenges we encountered with both scripting languages and some numerical results to 
         demonstrate both usefulness and efficiency.", 
       booktitle = "Special issue of Optimization Methods \& Software: Advances in 
         Algorithmic Differentiation", 
       editor = "Bruce Christianson and Shaun A. Forth and Andreas Griewank" 
}
		  |    |  
	 
	
 back
 |   
      
      |