|
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