IF YOU WOULD LIKE TO GET AN ACCOUNT, please write an
email to Administrator. User accounts are meant only to access repo
and report issues and/or generate pull requests.
This is a purpose-specific Git hosting for
BaseALT
projects. Thank you for your understanding!
Только зарегистрированные пользователи имеют доступ к сервису!
Для получения аккаунта, обратитесь к администратору.
For non [Windows, Ubuntu, Redhat, OS X] operating systems the pkg flag to the --last stable and --current-dev arguments didn't do anything - It should create a tar because that is the default behaviour for Unix like platforms which support bash.
The new release includes some improvements in both Forward and
Reverse mode:
* Extend the way to specify a dependent variables. Consider function,
`double f(double x, double y, double z) {...}`, `clad::differentiate(f, "z")`
is equivalent to `clad::differentiate(f, 2)`. `clad::gradient(f, "x, y")`
differentiates with respect to `x` and `y` but not `z`. The gradient results
are stored in a `_result` parameter in the same order as `x` and `y` were
specified. Namely, the result of `x` is stored in `_result[0]` and the result
of `y` in `_result[1]`. If we invert the arguments specified in the string to
`clad::gradient(f, "y, x")` the results will be stored inversely.
* Enable recursive differentiation.
* Support single- and multi-dimensional arrays -- works for arrays with constant
size like `double A[] = {1, 2, 3};`, `double A[3];` or `double A[1][2][3][4];`
See more at: https://github.com/vgvassilev/clad/blob/v0.5/docs/ReleaseNotes.md
The new release includes some improvements in both Forward and
Reverse mode:
* Support `x += y`, `x -= y`, `x *= y`, `x /= y`, `x++`, `x--`, `++x`, `--x`
in forward mode.
* Reduce emission of unused expressions
* Add a special `#pragma clad ON/OFF/DEFAULT` to annotate regions which
contain derivatives
* Various small optimizations
See more at: https://github.com/vgvassilev/clad/blob/v0.4/docs/ReleaseNotes.md
The new release includes some improvements in both Forward and
Reverse mode:
* Better correctness of C++ constructs -- handle scopes properly; allow proper
variable shadowing; and preserve namespaces.
* Efficient evaluation in forward mode.
* Reduced cloning complexity.
* Handle more C++ constructs -- variable reassignments and for loops.
See more at: https://github.com/vgvassilev/clad/blob/v0.3/docs/ReleaseNotes.md
In cases where we build ROOT with -Dbuiltin_llvm=Off -Dbuiltin_clang=On
and we have installed both llvm and clang in /usr/ clad will pick up
the clang headers from there too.
This patch gives higher priority to the header files which ROOT is
supposed to use. It fixes a very obscure initialization issue due to
different versions of the ASTContext.h installed and used by ROOT.
The relevant highlights are:
* Support better Windows (thanks to Bertrand Bellenot!);
* Disabled automatic discovery of system LLVM -- clad should only
search for LLVM at DCLAD_PATH_TO_LLVM_BUILD. On some platforms
(discovered by Oksana Shadura via rootbench) clad discovers the
system LLVM which is compatible in principle but this is not what
we want for ROOT.
* Implemented -CLAD_BUILD_STATIC_ONLY -- this covers the ROOT usecase
where we do not need shared objects but link the libraries against
another shared object (libCling.so). This allows platforms which have
disabled LLVM_ENABLE_PLUGINS to still build clad and use it. Such
example is CYGWIN and Windows.
See more at: https://github.com/vgvassilev/clad/releases/tag/v0.2
clad is a C++ plugin for clang and cling that implements automatic
differentiation of user-defined functions by employing the chain rule in
forward and reverse mode, coupled with source code transformation and AST
constant fold.
In mathematics and computer algebra, automatic differentiation (AD) is a
set of techniques to numerically evaluate the derivative of a function
specified by a computer program. AD exploits the fact that every computer
program, no matter how complicated, executes a sequence of elementary
arithmetic operations (addition, subtraction, multiplication, division, etc.)
and elementary functions (exp, log, sin, cos, etc.). By applying the chain
rule repeatedly to these operations, derivatives of arbitrary order can
be computed automatically, accurately to working precision, and using at
most a small constant factor more arithmetic operations than the original
program.
AD is an alternative technique to symbolic and numerical differentiation.
These classical methods run into problems: symbolic differentiation leads
to inefficient code (unless done carefully) and faces the difficulty of
converting a computer program into a single expression, while numerical
differentiation can introduce round-off errors in the discretization
process and cancellation. Both classical methods have problems with
calculating higher derivatives, where the complexity and errors increase.
Finally, both classical methods are slow at computing the partial
derivatives of a function with respect to many inputs, as is needed for
gradient-based optimization algorithms. Automatic differentiation solves
all of these problems, at the expense of introducing more software
dependencies.
This patch allows ROOT to interoperate with clad. Namely, users can ask
the interpreter to produce a derivative or a gradient to a known function.
An illustrative example code for first order derivative:
root [0] #include "Math/CladDerivator.h"
root [1] double my_pow2(double x) { return x*x; }
root [2] auto meta_obj = clad::differentiate(my_pow2, /*wrt 1-st argument*/0);
root [3] meta_obj.dump();
The code is: double my_pow2_darg0(double x) {
return (1. * x + x * 1.);
}
root [5] meta_obj.execute(1) // no iterations, at the cost of function call.
(double) 2.0000000
Learn more about clad at https://github.com/vgvassilev/clad
Patch by Aleksandr Efremov and me!
Clang allows third party shared libraries to provide user-defined
extensions. For example, a custom libTemplateInstantiation.so can
visualize all template instantiation chains in clang. To enable it
one needs to pass a set of options such as -fplugin.
Cling should be able to inherently work with clang plugins. However,
cling still does not make full use of the clang driver where the plugin
setup is handled.
This patch enables plugins in cling and extends them in some aspects.
In particular, cling allows loading of plugins from shared libraries
but also if they are linked to the same library where cling is. This is
very useful in cases where cling runs itself in a shared library (eg
libCling). Users of libCling (such as ROOT) prefer to keep all llvm and
clang related symbols local to avoid symbol clashes if there is another
version of clang and llvm linked against a package. This can be done by
dlopen-ing libCling with RTLD_LOCAL visibility mode. Then the only way
for clang plugins to work in this scenario is to be linked to libCling.
Patch by Aleksandr Efremov and me.
Before this commit, cpt.py attempted `"3.11.1" < "3.4.3"`, but this
incorrectly returns `True`. This commit adds a function that splits the
string into version identifiers and checks them all individually.
- cling: add missing symbol in the export list and fix semicolon issue in CMakeList.txt (it has to be in quotes)
- cling-demo: export symbols and format hexadecimal output
We rely on clang's plugin infrastructure for loading, argument processing
and unloading plugins.
This patch teaches cling to work with clang plugins such as clad -- a
clang plugin implementing automatic differentiation facilities.
When run C++17 kernel in Jupyter notebook cause some errors
due to currently clang-5.0 in https://root.cern.ch/download/cling/ is not
support c++17.
So add support to C++1z for Jupyter kernel and we can try some new
features in Jupyter notebook.
for avoiding following error:
[I 05:46:38.253 NotebookApp] Kernel restarted:
d3413fa0-7046-4b63-912b-a286610eacc1
error: invalid value 'c++17' in '-std=c++17'
note: use 'c++98' or 'c++03' for 'ISO C++ 1998 with amendments' standard
note: use 'gnu++98' or 'gnu++03' for 'ISO C++ 1998 with amendments and
GNU extensions' standard
note: use 'c++11' for 'ISO C++ 2011 with amendments' standard
note: use 'gnu++11' for 'ISO C++ 2011 with amendments and GNU
extensions' standard
note: use 'c++14' for 'ISO C++ 2014 with amendments' standard
note: use 'gnu++14' for 'ISO C++ 2014 with amendments and GNU
extensions' standard
note: use 'c++1z' for 'Working draft for ISO C++ 2017' standard
note: use 'gnu++1z' for 'Working draft for ISO C++ 2017 with GNU
extensions' standard
The CMAKE_BUILD_TYPE CMake variable is only valid for single-configuration generator (like Linux Makefiles), and not for multi-configuration generator (like for Visual Studio). So let's try to use a CMake generator expression instead.
Don't blindly run through initialization; make sure things are going according to plan.
If not handle it and run destructors without crashing.
Return standard error codes from main.
I encountered the following error and the above change fixed it
Nov 22 22:37:47 thesis jupyter[2811]: [I 22:37:47.646 NotebookApp] The Jupyter Notebook is running at: http://0.0.0.0:8888/
Nov 22 22:37:47 thesis jupyter[2811]: [I 22:37:47.646 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
Nov 22 22:38:20 thesis jupyter[2811]: [I 22:38:20.303 NotebookApp] Kernel started: e416bf37-4f24-4aee-8e25-45c6fbbb85e6
Nov 22 22:38:21 thesis jupyter[2811]: [ClingKernelApp] CRITICAL | Bad config encountered during initialization:
Nov 22 22:38:21 thesis jupyter[2811]: [ClingKernelApp] CRITICAL | The 'std' trait of a ClingKernel instance must be any of ['c++11', 'c++14', 'c++17'], but a value of 'c++1z' <class 'str'> was specified.
Nov 22 22:38:23 thesis jupyter[2811]: [I 22:38:23.308 NotebookApp] KernelRestarter: restarting kernel (1/5)
Nov 22 22:38:24 thesis jupyter[2811]: [ClingKernelApp] CRITICAL | Bad config encountered during initialization:
Nov 22 22:38:24 thesis jupyter[2811]: [ClingKernelApp] CRITICAL | The 'std' trait of a ClingKernel instance must be any of ['c++11', 'c++14', 'c++17'], but a value of 'c++1z' <class 'str'> was specified.
Nov 22 22:38:26 thesis jupyter[2811]: [I 22:38:26.326 NotebookApp] KernelRestarter: restarting kernel (2/5)
Nov 22 22:38:27 thesis jupyter[2811]: [ClingKernelApp] CRITICAL | Bad config encountered during initialization:
Nov 22 22:38:27 thesis jupyter[2811]: [ClingKernelApp] CRITICAL | The 'std' trait of a ClingKernel instance must be any of ['c++11', 'c++14', 'c++17'], but a value of 'c++1z' <class 'str'> was specified.
Nov 22 22:38:29 thesis jupyter[2811]: [I 22:38:29.332 NotebookApp] KernelRestarter: restarting kernel (3/5)
Nov 22 22:38:30 thesis jupyter[2811]: [W 22:38:30.348 NotebookApp] Timeout waiting for kernel_info reply from e416bf37-4f24-4aee-8e25-45c6fbbb85e6
Nov 22 22:38:30 thesis jupyter[2811]: [I 22:38:30.365 NotebookApp] New terminal with specified name: 1
Nov 22 22:38:30 thesis jupyter[2811]: [ClingKernelApp] CRITICAL | Bad config encountered during initialization:
Nov 22 22:38:30 thesis jupyter[2811]: [ClingKernelApp] CRITICAL | The 'std' trait of a ClingKernel instance must be any of ['c++11', 'c++14', 'c++17'], but a value of 'c++1z' <class 'str'> was specified.
Nov 22 22:38:32 thesis jupyter[2811]: [I 22:38:32.338 NotebookApp] KernelRestarter: restarting kernel (4/5)
Nov 22 22:38:32 thesis jupyter[2811]: WARNING:root:kernel e416bf37-4f24-4aee-8e25-45c6fbbb85e6 restarted
Nov 22 22:38:32 thesis jupyter[2811]: [W 22:38:32.664 NotebookApp] Session not found: session_id='19509685-b888-480b-897b-be2cc8fed1cc'
Nov 22 22:38:32 thesis jupyter[2811]: [W 22:38:32.665 NotebookApp] 404 DELETE /api/sessions/19509685-b888-480b-897b-be2cc8fed1cc (192.168.0.24) 3.67ms referer=http://192.168.0.31:8888/notebooks/Untitled.ipynb?kernel_name=cling-c++17
Nov 22 22:38:33 thesis jupyter[2811]: [ClingKernelApp] CRITICAL | Bad config encountered during initialization:
Nov 22 22:38:33 thesis jupyter[2811]: [ClingKernelApp] CRITICAL | The 'std' trait of a ClingKernel instance must be any of ['c++11', 'c++14', 'c++17'], but a value of 'c++1z' <class 'str'> was specified.
Nov 22 22:38:35 thesis jupyter[2811]: [W 22:38:35.349 NotebookApp] KernelRestarter: restart failed
Nov 22 22:38:35 thesis jupyter[2811]: [W 22:38:35.350 NotebookApp] Kernel e416bf37-4f24-4aee-8e25-45c6fbbb85e6 died, removing from map.
Nov 22 22:38:35 thesis jupyter[2811]: ERROR:root:kernel e416bf37-4f24-4aee-8e25-45c6fbbb85e6 restarted failed!
Nov 22 22:38:35 thesis jupyter[2811]: ERROR:root:kernel e416bf37-4f24-4aee-8e25-45c6fbbb85e6 restarted failed!
Nov 22 22:38:35 thesis jupyter[2811]: [W 22:38:35.368 NotebookApp] Kernel deleted before session
Nov 22 22:38:35 thesis jupyter[2811]: [W 22:38:35.369 NotebookApp] 410 DELETE /api/sessions/ff344691-8fd6-4207-902e-01c944bdf7ae (192.168.0.24) 2.13ms referer=http://192.168.0.31:8888/notebooks/Untitled.ipynb
Explicitly passing the compiler from Travis or Appveyor allows it to be printed in the log more apparently.
Can further be extended to mark dependencies when building packages, or even copy C++ headers into install.
Signed-off-by: Vassil Vassilev <vvasilev@cern.ch>
Build class can handle differences between Windows and Unix CMake.
libc++ on Windows is thoroughly untested.
Signed-off-by: Vassil Vassilev <vvasilev@cern.ch>
This makes it easier for contributors to use cling's Travis config while
testing changes they would like to submit.
Signed-off-by: Vassil Vassilev <vvasilev@cern.ch>
Run ccache and build from the same block to control the result code.
Set CLING_BUILD_TIMEOUT in timeout. (+1 squashed commit)
Add ability to view / export CCACHE_LOGFILE.
Signed-off-by: Vassil Vassilev <vvasilev@cern.ch>
Failure in an exec_subprocess call will trigger cleanup,
but cleanup calls exec_subprocess, resulting in recursion.
Possible uninitialized variable in exec_subprocess_check_output.
Signed-off-by: Vassil Vassilev <vvasilev@cern.ch>
CMake thinks that the default output on OS X should be 32 bit.
Not sure if this is related to ccache or the env/virtualization they run.
Signed-off-by: Vassil Vassilev <vvasilev@cern.ch>
Suppressing the error dialog on Windows prevent hangs on build nodes. One can also use an environment variable (Cling_GuiOnAssert) to enable/disable the error dialogs.