|
1 |
| -- name: "ROOT Superbuilds" |
2 |
| - description: | |
3 |
| - [ROOT](https://root.cern/) is a framework for data processing, |
4 |
| - born at CERN, at the heart of the research on high-energy physics. |
5 |
| - Every day, thousands of physicists use ROOT applications to analyze their |
6 |
| - data or to perform simulations. The ROOT software framework is |
7 |
| - foundational for the HEP ecosystem, providing capabilities such |
8 |
| - as IO, a C++ interpreter, GUI, and math libraries. It uses |
9 |
| - object-oriented concepts and build-time modules to layer between |
10 |
| - components. We believe additional layering formalisms will benefit |
11 |
| - ROOT and its users. |
12 |
| -
|
13 |
| - Currently, ROOT is built as all-in-one package. We are working to create |
14 |
| - a modular version of ROOT that provides a minimal base install of core |
15 |
| - features, then later add functionality via incremental builds. This |
16 |
| - requires introducing new layering mechanisms and extending the functionality |
17 |
| - of the existing ROOT package manager prototype. |
18 |
| - |
19 |
| - tasks: | |
20 |
| - * Enhance the existing CMake build system rules to enable lazy building of packages |
21 |
| - * Bootstrap “RootBase” |
22 |
| - * Demonstrate “layered” lazy builds |
23 |
| - status: ongoing |
24 |
| - responsible: Pavlo Svirin |
25 |
| - |
26 |
| - |
27 | 1 | - name: "Using ROOT in the field of genome sequencing"
|
28 | 2 | description: |
|
29 | 3 | [ROOT](https://root.cern/) is a framework for data processing,
|
|
49 | 23 | * Investigate different ROOT file splitting techniques
|
50 | 24 | * Produce a comparison report
|
51 | 25 |
|
52 |
| -
|
53 |
| -- name: "Implementing missing features in xeus-cpp" |
54 |
| - description: | |
55 |
| - xeus-cpp is a Jupyter kernel for cpp based on the native implementation |
56 |
| - of the Jupyter protocol xeus. This enables users to write and execute |
57 |
| - C++ code interactively, seeing the results immediately. This REPL |
58 |
| - (read-eval-print-loop) nature allows rapid prototyping and iterations |
59 |
| - without the overhead of compiling and running separate C++ programs. |
60 |
| - This also achieves C++ and Python integration within a single Jupyter |
61 |
| - environment. |
62 |
| -
|
63 |
| - The xeus-cpp is a successor of xeus-clang-repl and xeus-cling. The project |
64 |
| - goal is to advance the project feature support to the extent of what’s |
65 |
| - supported in xeus-clang-repl and xeus-cling. |
66 |
| -
|
67 |
| - tasks: | |
68 |
| - * Fix occasional bugs in clang-repl directly in llvm upstream |
69 |
| - * Implement the value printing logic |
70 |
| - * Advance the wasm infrastructure |
71 |
| - * Write tutorials and demonstrators |
72 |
| - * Complete the transition of xeus-clang-repl to xeus-cpp |
73 |
| -
|
74 |
| -
|
75 |
| -- name: "Adoption of CppInterOp in ROOT" |
76 |
| - description: | |
77 |
| - Incremental compilation pipelines process code chunk-by-chunk by building |
78 |
| - an ever-growing translation unit. Code is then lowered into the LLVM IR |
79 |
| - and subsequently run by the LLVM JIT. Such a pipeline allows creation of |
80 |
| - efficient interpreters. The interpreter enables interactive exploration |
81 |
| - and makes the C++ language more user friendly. The incremental compilation |
82 |
| - mode is used by the interactive C++ interpreter, Cling, initially developed |
83 |
| - to enable interactive high-energy physics analysis in a C++ environment. |
84 |
| - The CppInterOp library provides a minimalist approach for other languages |
85 |
| - to identify C++ entities (variables, classes, etc.). This enables |
86 |
| - interoperability with C++ code, bringing the speed and efficiency of C++ |
87 |
| - to simpler, more interactive languages like Python. CppInterOp provides |
88 |
| - primitives that are good for providing reflection information. |
89 |
| -
|
90 |
| - The ROOT is an open-source data analysis framework used by high energy |
91 |
| - physics and others to analyze petabytes of data, scientifically. The |
92 |
| - framework provides support for data storage and processing by relying |
93 |
| - on Cling, Clang, LLVM for building automatically efficient I/O |
94 |
| - representation of the necessary C++ objects. The I/O properties of each |
95 |
| - object is described in a compilable C++ file called a /dictionary/. |
96 |
| - ROOT’s I/O dictionary system relies on reflection information provided |
97 |
| - by Cling and Clang. However, the reflection information system has grown |
98 |
| - organically and now ROOT’s core/metacling system has been hard to maintain |
99 |
| - and integrate. |
100 |
| -
|
101 |
| - The goal of this project is to integrate CppInterOp in ROOT where possible. |
102 |
| -
|
103 |
| - tasks: | |
104 |
| - * To achieve this goal we expect several infrastructure items to be completed such as Windows support, WASM support |
105 |
| - * Make reusable github actions across multiple repositories |
106 |
| - * Sync the state of the dynamic library manager with the one in ROOT |
107 |
| - * Sync the state of callfunc/jitcall with the one in ROOT |
108 |
| - * Prepare the infrastructure for upstreaming to llvm |
109 |
| - * Propose an RFC and make a presentation to the ROOT development team |
110 |
| -
|
111 |
| -
|
112 | 26 | - name: "Implement CppInterOp API exposing memory, ownership and thread safety information "
|
113 | 27 | description: |
|
114 | 28 | Incremental compilation pipelines process code chunk-by-chunk by building
|
|
445 | 359 | * Add support for the missing constructs.
|
446 | 360 | * Add proper tests and documentation.
|
447 | 361 |
|
448 |
| -
|
449 |
| -- name: "Add support for differentiating with respect to multidimensional arrays |
450 |
| - (or pointers) in Clad." |
451 |
| - description: | |
452 |
| - In mathematics and computer algebra, automatic differentiation (AD) is a set |
453 |
| - of techniques to numerically evaluate the derivative of a function specified |
454 |
| - by a computer program. Automatic differentiation is an alternative technique |
455 |
| - to Symbolic differentiation and Numerical differentiation (the method of |
456 |
| - finite differences). Clad is based on Clang which provides the necessary |
457 |
| - facilities for code transformation. The AD library is able to differentiate |
458 |
| - non-trivial functions, to find a partial derivative for trivial cases and |
459 |
| - has good unit test coverage. |
460 |
| -
|
461 |
| - Clad currently only supports differentiation with respect to |
462 |
| - single-dimensional arrays. Support for differentiation with respect to |
463 |
| - pointers is limited as well. This project aims to add support for |
464 |
| - multi-dimensional arrays (and pointers) in Clad. |
465 |
| -
|
466 |
| - After successful completion of the project the code snippet should work |
467 |
| - as expected: |
468 |
| - ```cpp |
469 |
| - #include <iostream> |
470 |
| - #include "clad/Differentiator/Differentiator.h" |
471 |
| -
|
472 |
| - double fn(double arr[5][5]) { |
473 |
| - double res = 1 * arr[0][0] + 2 * arr[1][1] + 4 * arr[2][2]; |
474 |
| - return res * 2; |
475 |
| - } |
476 |
| -
|
477 |
| - int main() { |
478 |
| - auto d_fn = clad::gradient(fn); |
479 |
| - double arr[5][5] = {{1, 2, 3, 4, 5}, |
480 |
| - {6, 7, 8, 9, 10}, |
481 |
| - {11, 12, 13, 14, 15}, |
482 |
| - {16, 17, 18, 19, 20}, |
483 |
| - {21, 22, 23, 24, 25}}; |
484 |
| - double d_arr[5][5] = {}; |
485 |
| - d_fn.execute(arr, d_arr); |
486 |
| - std::cout << "Derivative of d_fn wrt arr[0][0]: " << d_arr[0][0] << "\n"; // 2 |
487 |
| - std::cout << "Derivative of d_fn wrt arr[1][1]: " << d_arr[1][1] << "\n"; // 4 |
488 |
| - return 0; |
489 |
| - } |
490 |
| - ``` |
491 |
| - tasks: | |
492 |
| - The project consists of the following tasks: |
493 |
| - * Add support for differentiation with respect to multidimensional arrays |
494 |
| - (and pointers) in the reverse mode. |
495 |
| - * Add support for differentiation with respect to multidimensional arrays |
496 |
| - (and pointers) in the forward mode. |
497 |
| - * Extend the unit test coverage. |
498 |
| - * Develop tutorials and documentation. |
499 |
| - * Present the work at the relevant meetings and conferences. |
500 |
| - status: ongoing |
501 |
| - responsible: Vaibhav Thakkar |
502 |
| - |
503 | 362 | - name: "Broaden the Scope for the Floating-Point Error Estimation Framework in Clad"
|
504 | 363 |
|
505 | 364 | description: |
|
|
645 | 504 | ################################################################################
|
646 | 505 | # 2024 #
|
647 | 506 | ################################################################################
|
| 507 | +- name: "ROOT Superbuilds" |
| 508 | + description: | |
| 509 | + [ROOT](https://root.cern/) is a framework for data processing, |
| 510 | + born at CERN, at the heart of the research on high-energy physics. |
| 511 | + Every day, thousands of physicists use ROOT applications to analyze their |
| 512 | + data or to perform simulations. The ROOT software framework is |
| 513 | + foundational for the HEP ecosystem, providing capabilities such |
| 514 | + as IO, a C++ interpreter, GUI, and math libraries. It uses |
| 515 | + object-oriented concepts and build-time modules to layer between |
| 516 | + components. We believe additional layering formalisms will benefit |
| 517 | + ROOT and its users. |
| 518 | +
|
| 519 | + Currently, ROOT is built as all-in-one package. We are working to create |
| 520 | + a modular version of ROOT that provides a minimal base install of core |
| 521 | + features, then later add functionality via incremental builds. This |
| 522 | + requires introducing new layering mechanisms and extending the functionality |
| 523 | + of the existing ROOT package manager prototype. |
| 524 | + |
| 525 | + tasks: | |
| 526 | + * Enhance the existing CMake build system rules to enable lazy building of packages |
| 527 | + * Bootstrap “RootBase” |
| 528 | + * Demonstrate “layered” lazy builds |
| 529 | + status: completed |
| 530 | + responsible: Pavlo Svirin |
| 531 | + |
| 532 | +- name: "Implementing missing features in xeus-cpp" |
| 533 | + description: | |
| 534 | + xeus-cpp is a Jupyter kernel for cpp based on the native implementation |
| 535 | + of the Jupyter protocol xeus. This enables users to write and execute |
| 536 | + C++ code interactively, seeing the results immediately. This REPL |
| 537 | + (read-eval-print-loop) nature allows rapid prototyping and iterations |
| 538 | + without the overhead of compiling and running separate C++ programs. |
| 539 | + This also achieves C++ and Python integration within a single Jupyter |
| 540 | + environment. |
| 541 | +
|
| 542 | + The xeus-cpp is a successor of xeus-clang-repl and xeus-cling. The project |
| 543 | + goal is to advance the project feature support to the extent of what’s |
| 544 | + supported in xeus-clang-repl and xeus-cling. |
| 545 | +
|
| 546 | + tasks: | |
| 547 | + * Fix occasional bugs in clang-repl directly in llvm upstream |
| 548 | + * Implement the value printing logic |
| 549 | + * Advance the wasm infrastructure |
| 550 | + * Write tutorials and demonstrators |
| 551 | + * Complete the transition of xeus-clang-repl to xeus-cpp |
| 552 | + status: completed |
| 553 | + responsible: Anutosh Bhat |
| 554 | + |
| 555 | +- name: "Adoption of CppInterOp in ROOT" |
| 556 | + description: | |
| 557 | + Incremental compilation pipelines process code chunk-by-chunk by building |
| 558 | + an ever-growing translation unit. Code is then lowered into the LLVM IR |
| 559 | + and subsequently run by the LLVM JIT. Such a pipeline allows creation of |
| 560 | + efficient interpreters. The interpreter enables interactive exploration |
| 561 | + and makes the C++ language more user friendly. The incremental compilation |
| 562 | + mode is used by the interactive C++ interpreter, Cling, initially developed |
| 563 | + to enable interactive high-energy physics analysis in a C++ environment. |
| 564 | + The CppInterOp library provides a minimalist approach for other languages |
| 565 | + to identify C++ entities (variables, classes, etc.). This enables |
| 566 | + interoperability with C++ code, bringing the speed and efficiency of C++ |
| 567 | + to simpler, more interactive languages like Python. CppInterOp provides |
| 568 | + primitives that are good for providing reflection information. |
| 569 | +
|
| 570 | + The ROOT is an open-source data analysis framework used by high energy |
| 571 | + physics and others to analyze petabytes of data, scientifically. The |
| 572 | + framework provides support for data storage and processing by relying |
| 573 | + on Cling, Clang, LLVM for building automatically efficient I/O |
| 574 | + representation of the necessary C++ objects. The I/O properties of each |
| 575 | + object is described in a compilable C++ file called a /dictionary/. |
| 576 | + ROOT’s I/O dictionary system relies on reflection information provided |
| 577 | + by Cling and Clang. However, the reflection information system has grown |
| 578 | + organically and now ROOT’s core/metacling system has been hard to maintain |
| 579 | + and integrate. |
| 580 | +
|
| 581 | + The goal of this project is to integrate CppInterOp in ROOT where possible. |
| 582 | +
|
| 583 | + tasks: | |
| 584 | + * To achieve this goal we expect several infrastructure items to be completed such as Windows support, WASM support |
| 585 | + * Make reusable github actions across multiple repositories |
| 586 | + * Sync the state of the dynamic library manager with the one in ROOT |
| 587 | + * Sync the state of callfunc/jitcall with the one in ROOT |
| 588 | + * Prepare the infrastructure for upstreaming to llvm |
| 589 | + * Propose an RFC and make a presentation to the ROOT development team |
| 590 | + status: completed |
| 591 | + responsible: Aaron Jomy, Sahil Patidar |
| 592 | + |
| 593 | + |
| 594 | +- name: "Add support for differentiating with respect to multidimensional arrays |
| 595 | + (or pointers) in Clad." |
| 596 | + description: | |
| 597 | + In mathematics and computer algebra, automatic differentiation (AD) is a set |
| 598 | + of techniques to numerically evaluate the derivative of a function specified |
| 599 | + by a computer program. Automatic differentiation is an alternative technique |
| 600 | + to Symbolic differentiation and Numerical differentiation (the method of |
| 601 | + finite differences). Clad is based on Clang which provides the necessary |
| 602 | + facilities for code transformation. The AD library is able to differentiate |
| 603 | + non-trivial functions, to find a partial derivative for trivial cases and |
| 604 | + has good unit test coverage. |
| 605 | +
|
| 606 | + Clad currently only supports differentiation with respect to |
| 607 | + single-dimensional arrays. Support for differentiation with respect to |
| 608 | + pointers is limited as well. This project aims to add support for |
| 609 | + multi-dimensional arrays (and pointers) in Clad. |
| 610 | +
|
| 611 | + After successful completion of the project the code snippet should work |
| 612 | + as expected: |
| 613 | + ```cpp |
| 614 | + #include <iostream> |
| 615 | + #include "clad/Differentiator/Differentiator.h" |
| 616 | +
|
| 617 | + double fn(double arr[5][5]) { |
| 618 | + double res = 1 * arr[0][0] + 2 * arr[1][1] + 4 * arr[2][2]; |
| 619 | + return res * 2; |
| 620 | + } |
| 621 | +
|
| 622 | + int main() { |
| 623 | + auto d_fn = clad::gradient(fn); |
| 624 | + double arr[5][5] = {{1, 2, 3, 4, 5}, |
| 625 | + {6, 7, 8, 9, 10}, |
| 626 | + {11, 12, 13, 14, 15}, |
| 627 | + {16, 17, 18, 19, 20}, |
| 628 | + {21, 22, 23, 24, 25}}; |
| 629 | + double d_arr[5][5] = {}; |
| 630 | + d_fn.execute(arr, d_arr); |
| 631 | + std::cout << "Derivative of d_fn wrt arr[0][0]: " << d_arr[0][0] << "\n"; // 2 |
| 632 | + std::cout << "Derivative of d_fn wrt arr[1][1]: " << d_arr[1][1] << "\n"; // 4 |
| 633 | + return 0; |
| 634 | + } |
| 635 | + ``` |
| 636 | + tasks: | |
| 637 | + The project consists of the following tasks: |
| 638 | + * Add support for differentiation with respect to multidimensional arrays |
| 639 | + (and pointers) in the reverse mode. |
| 640 | + * Add support for differentiation with respect to multidimensional arrays |
| 641 | + (and pointers) in the forward mode. |
| 642 | + * Extend the unit test coverage. |
| 643 | + * Develop tutorials and documentation. |
| 644 | + * Present the work at the relevant meetings and conferences. |
| 645 | + status: completed |
| 646 | + responsible: Vaibhav Thakkar |
648 | 647 |
|
649 | 648 | - name: "Improving performance of BioDynaMo using ROOT C++ Modules"
|
650 | 649 | description: |
|
|
0 commit comments