Hi Kshitij,<div><br></div><div>Thank you very much for your prompt reply.</div><div>I thought the "jacobian" and "sparse_jac" drivers, which are the ones I use, worked in forward mode. Anyhow, I would like to try the tapeless mode.</div>
<div>After transforming the "condassign" calls into regular conditional statements, the new errors are related to the "<<=" and ">>=" operators. Can't they be used in the tapeless mode?</div>
<div><br></div><div>Regards,</div><div>Alfonso</div><div><br><div class="gmail_quote">
2010/9/17 Kshitij Kulshreshtha <span dir="ltr"><<a href="mailto:kshitij@math.upb.de" target="_blank">kshitij@math.upb.de</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><div></div><div>As on 2010-09-17 16:29, Alfonso Callejo Goena did write:<br>
> Hi all,<br>
><br>
> I have already implemented ADOL-C in a multibody simulation program, and<br>
> now I'm trying to test the tapeless mode to see if it improves the<br>
> program efficiency.<br>
> The thing is that the "condassign" functions, which solve the problem of<br>
> having conditional statements in the code, seem to work only with the<br>
> tape mode. In fact, if one looks into adouble.h, the "condassign"<br>
> functions aren't declared if the tapeless macro ADOLC_TAPELESS is<br>
> set. By the way, the compiler throws a "condassign: identifier not<br>
> found" error.<br>
> Am I overlooking something?<br>
><br>
<br>
</div></div>Hello Alfonso,<br>
<br>
the tapeless mode is forward only, so if your code needs reverse mode it<br>
is not recommended to use tapeless. In forward mode tapeless will bring<br>
some gain only if the tape is too large and must be written to disk. You<br>
may try tweaking the buffer sizes in ADOL-C/src/usrparms.h file before<br>
compiling ADOL-C and see if that brings you some speed. These<br>
buffersizes may be in total as big as the physical memory your system<br>
has free.<br>
<br>
In the tapeless mode you really don't need any condassign calls at all.<br>
You can simply use the form<br>
<br>
var = cond ? val1 : val2;<br>
<br>
The condassign is used in the taped version internally to write these<br>
condition checks onto the tape since the operator ?: cannot be<br>
overloaded. In tapeless mode this is not required as nothing extra needs<br>
to be done.<br>
<br>
Regards.<br>
--<br>
Kshitij Kulshreshtha<br>
<br>
Institut für Mathematik,<br>
Universität Paderborn,<br>
Warburger Straße 100,<br>
33098 Paderborn.<br>
<br>
Büro: A3.235<br>
<br>
Privatanschrift:<br>
Arnikaweg 62<br>
33100 Paderborn.<br>
<br>
_______________________________________________<br>
ADOL-C mailing list<br>
<a href="mailto:ADOL-C@list.coin-or.org" target="_blank">ADOL-C@list.coin-or.org</a><br>
<a href="http://list.coin-or.org/mailman/listinfo/adol-c" target="_blank">http://list.coin-or.org/mailman/listinfo/adol-c</a></blockquote></div><br></div>